o
    Mi"                     @   s   d dl mZ d dlmZ G dd deZG dd deZG dd deZG d	d
 d
eZG dd deZ	G dd deZ
G dd deZdS )   )BaseStemmer)Amongc                   @   s  e Zd ZdZh dZdZdZdd Zdd Zdd	 Z	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZedddedddedddgZeddded dded!ddgZed"ddeed#dde
ed$dde	gZed%dded&dd'ed(dded)d'd*ed+d'ded,d-ded.d-d/eed0dd1ed2dd'ed3d4d'ed5d4d-eed6ddgZed7dd/eed8dd-ed9dd/ed:dded;d/d'ed<d/dgZd=S )>IndonesianStemmerz
    This class implements the stemming algorithm defined by a snowball script.
    Generated from indonesian.sbl by Snowball 3.0.1 - https://snowballstem.org/
    >   aeiou    c                 C   B   | j | _| tjdkrdS | j | _|  sdS |  jd8  _dS Nr
   Fr   T)cursorketfind_among_br   a_0bra	slice_del	I_measureself r   V/home/ubuntu/.local/lib/python3.10/site-packages/snowballstemmer/indonesian_stemmer.py__r_remove_particle      z%IndonesianStemmer.__r_remove_particlec                 C   r   r   )r   r   r   r   a_1r   r   r   r   r   r   r   __r_remove_possessive_pronoun   r   z/IndonesianStemmer.__r_remove_possessive_pronounc                 C   s    | j dkrdS | j dkrdS dS )N   F   TI_prefixr   r   r   r   __r_SUFFIX_KAN_OK)   s
   

z#IndonesianStemmer.__r_SUFFIX_KAN_OKc                 C   s
   | j dkS )Nr   r   r   r   r   r   __r_SUFFIX_AN_OK0   s   
z"IndonesianStemmer.__r_SUFFIX_AN_OKc                 C   sT   | j dkrdS | j| j }z| dst W dS  ty!   Y nw | j| | _dS )Nr   FsT)r   limitr   eq_s_blab0)r   v_1r   r   r   __r_SUFFIX_I_OK3   s   

z!IndonesianStemmer.__r_SUFFIX_I_OKc                 C   r   r   )r   r   r   r   a_2r   r   r   r   r   r   r   __r_remove_suffix?   r   z#IndonesianStemmer.__r_remove_suffixc                 C   s   |  tjsdS dS )NFT)in_groupingr   g_vowelr   r   r   r   	__r_VOWELJ   s   zIndonesianStemmer.__r_VOWELc                 C   s"   |  tjsdS | dsdS dS )NFerT)out_groupingr   r+   eq_sr   r   r   r   __r_KERO   s
   
zIndonesianStemmer.__r_KERc                 C   s  | j | _| tj}|dkrdS | j | _|dkr*|  sdS d| _|  jd8  _d
S |dkr@|  s4dS d| _|  jd8  _d
S |dkrWd| _| 	dsNdS |  jd8  _d
S |dkrnd| _| 	dsedS |  jd8  _d
S |dkrd| _|  jd8  _z5| j }z| j }| 
tjst || _ | 	d	sW W dS t  ty   Y nw || _ |  sW dS W d
S  ty   Y d
S w d| _|  jd8  _z5| j }z| j }| 
tjst || _ | 	d	sW W dS t  ty   Y nw || _ |  sW dS W d
S  ty   Y d
S w )Nr
   Fr   r   r   r"         pT)r   r   
find_amongr   a_3r   r   r   r   
slice_fromr*   r+   lab1r%   lab3lab2)r   	among_varr&   v_2v_3v_4r   r   r   __r_remove_first_order_prefixV   s   71
,
'

z/IndonesianStemmer.__r_remove_first_order_prefixc                 C   s   | j | _| tj}|dkrdS | j | _|dkr*|  sdS d| _|  jd8  _dS |dkr>| 	ds5dS |  jd8  _dS |dkrT|  sHdS d| _|  jd8  _dS | 	ds[dS d| _|  jd8  _dS )	Nr
   Fr   r   ajarr   r1   T)
r   r   r4   r   a_4r   r   r   r   r6   )r   r:   r   r   r   __r_remove_second_order_prefix   s6   

z0IndonesianStemmer.__r_remove_second_order_prefixc           
      C   sP  d| _ | j}z'	 z| tjst |  jd7  _|  j d7  _ W q ty*   Y nw 	 W n	 ty6   Y nw || _| j dkrAdS d| _| j| _| j	| _| j	| j }| 
  | j	| | _| j dkrcdS | j	| j }|   | j	| | _| j| _| j dkr~dS z| j}zR| j}|  st | j}z2| j}| j dkrt | j| _| j	| _|  st | j| _|| _| j dkrt |  st W n	 ty   Y nw || _|| _t  ty   Y nw || _| j}|   || _| j}	z| j dkrt | j| _| j	| _|  st | j| _W n
 ty   Y nw |	| _W dS  ty'   Y dS w )Nr
   Tr   r   F)r   r   go_out_groupingr   r+   r7   r%   r   limit_backwardr#   %_IndonesianStemmer__r_remove_particle/_IndonesianStemmer__r_remove_possessive_pronoun/_IndonesianStemmer__r_remove_first_order_prefixr8   lab4#_IndonesianStemmer__r_remove_suffix0_IndonesianStemmer__r_remove_second_order_prefixr9   lab5)
r   r&   r<   r=   v_5v_6v_7v_8v_9v_10r   r   r   _stem   s   






zIndonesianStemmer._stemkahr   lahpunnyakumur   ankandiker   mememr2   menmengr1   menyr   pem   penpeng   penyterbebelajarberpepelajarperN)__name__
__module____qualname____doc__r+   r   r   rD   rE   #_IndonesianStemmer__r_SUFFIX_KAN_OK"_IndonesianStemmer__r_SUFFIX_AN_OK!_IndonesianStemmer__r_SUFFIX_I_OKrH   _IndonesianStemmer__r_VOWEL_IndonesianStemmer__r_KERrF   rI   rQ   r   r   r   r(   r5   r@   r   r   r   r   r      s`    D
L



















r   c                   @      e Zd ZdS )r%   Nro   rp   rq   r   r   r   r   r%   -      r%   c                   @   rx   )r7   Nry   r   r   r   r   r7   0  rz   r7   c                   @   rx   )r9   Nry   r   r   r   r   r9   3  rz   r9   c                   @   rx   )r8   Nry   r   r   r   r   r8   6  rz   r8   c                   @   rx   )rG   Nry   r   r   r   r   rG   9  rz   rG   c                   @   rx   )rJ   Nry   r   r   r   r   rJ   <  rz   rJ   N)basestemmerr   amongr   r   BaseExceptionr%   r7   r9   r8   rG   rJ   r   r   r   r   <module>   s     '