B
    _Ҕad?                 @   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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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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edddedddedddgZedddeddd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d'dd(ed)dd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d0ddgZ
ed1dd2edd3dedd3dedd3dedd3dedd$dedd$ded4d$dedddeddded5dded6dd7edd8ded9d8dd:ed;d8dd<ed=d8ded>d8dd:ed?d8ded@d8dd:edAd8d$ed
d8d(edBd8d&edCdd2eddDdeddDdeddDdeddDdeddEdeddEdedFdEdgZedGddedHddedIddedJddedKddedLddedMd(dedNddedOd7dedPddedQddedRdSdedTddedUdVdgZedWddedXddgZedHddedId3dgZdYdd3d3d3d3d3d3d3d3d3d3d3d3d3d3d2gZdZd[dZdgZdYd\d]dd3d3d3d3d3d3d3d3d3d3d3d3d2d3d^gZdYd\d]d3d3d3d3d3d3d3d3d3d3d3d3d3d2d3d^gZdYd_d`dd3d3d3d3d3d3d3d3d3d3d3d3d2d3d^gZdaZdbZd3Zd3Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Z dudv Z!dwdx Z"dydz Z#d{S )|FinnishStemmerz
    This class implements the stemming algorithm defined by a snowball script.
    Generated by Snowball 2.2.0 - https://snowballstem.org/
    par   Zsti   ZkaanZhanZkinu   hänu   käänkou   päu   köZllaZnaZssataZlta   Zstau   lläu   näu   ssäu   täu   ltäu   stäZlleZineZnsaZmmeZnneZnisiZan   en   u   än   u   nsäZaaeeiiZoouuu   ääu   ööa       Zttaksin      Zden_FinnishStemmer__r_VIseen_FinnishStemmer__r_LONGZhenZttenZhinZsiinZhonu   hön   ä      u   ttäZejaZmmaZimmaZmpaZimpaZmmiZimmiZmpiZimpiu   ejäu   mmäu   immä
   u   mpäu   impä   ij   w      A          a      F c             C   s   | j | _| j | _| tjdds$dS | tjdds8dS |  jd7  _| j| _| tjddsbdS | tjddsvdS |  jd7  _| j| _dS )Nr*      Fr   T)limitI_p1I_p2Zgo_out_groupingr   g_V1Zgo_in_groupingcursor)self r4   >lib/python3.7/site-packages/snowballstemmer/finnish_stemmer.pyZ__r_mark_regions   s    zFinnishStemmer.__r_mark_regionsc             C   s   | j | jksdS dS )NFT)r0   r2   )r3   r4   r4   r5   Z__r_R2   s    zFinnishStemmer.__r_R2c             C   s   | j | jk rdS | j}| j| _| j | _| tj}|dkrD|| _dS | j | _|| _|dkrp| tj	dds|dS n| 
 s|dS |  sdS dS )NFr   r   r*   r-   T)r2   r/   limit_backwardketfind_among_br   a_0brain_grouping_bg_particle_end_FinnishStemmer__r_R2	slice_del)r3   v_2	among_varr4   r4   r5   Z__r_particle_etc   s&    zFinnishStemmer.__r_particle_etcc             C   s  | j | jk rdS | j}| j| _| j | _| tj}|dkrD|| _dS | j | _|| _|dkr| j| j  }y| 	dsxt
 dS  t
k
r   Y nX | j| | _ |  sdS n|dkr|  sdS | j | _| 	dsdS | j | _| dsdS n|dkr|  sdS n|d	kr6| tjdkr&dS |  sdS nT|d
krf| tjdkrVdS |  sdS n$| tjdkr|dS |  sdS dS )NFr   r   kr   Zkser   r
   r   r   T)r2   r/   r6   r7   r8   r   a_4r:   r.   eq_s_blab0r>   Z
slice_froma_1a_2a_3)r3   r?   r@   v_3r4   r4   r5   Z__r_possessive   sb    
 








zFinnishStemmer.__r_possessivec             C   s   |  tjdkrdS dS )Nr   FT)r8   r   a_5)r3   r4   r4   r5   Z__r_LONG   s    zFinnishStemmer.__r_LONGc             C   s&   |  dsdS | tjdds"dS dS )Nr"   Fr*   r-   T)rC   r;   r   g_V2)r3   r4   r4   r5   Z__r_VI   s
    
zFinnishStemmer.__r_VIc             C   sB  | j | jk rdS | j}| j| _| j | _| tj}|dkrD|| _dS | j | _|| _|dkrl| dshdS n|dkr| dsdS n|dkr| dsdS n|d	kr| d
sdS np|dkr| dsdS nV|dkr| dsdS n<|dkr| j	| j  }y| j	| j  }yl| j	| j  }y| 
 s2t t W n tk
rP   Y nX | j	| | _ | ds|| j	| | _ t W n tk
r   Y nX | j	| | _ | j | jkr| j	| | _ t |  j d8  _ | j | _W n tk
r   Y nX n6|dkr*| tjddsdS | tjdds*dS |  s8dS d| _dS )NFr   r   r   r   er
   r"   r   or   r   r      ör   Zier   r*   r-   b   z   T)r2   r/   r6   r7   r8   r   a_6r:   rC   r.   r   lab2lab1rD   r;   r1   g_Cr>   B_ending_removed)r3   r?   r@   rH   v_4v_5r4   r4   r5   Z__r_case_ending  s    








 
  

zFinnishStemmer.__r_case_endingc             C   s   | j | jk rdS | j}| j| _| j | _| tj}|dkrD|| _dS | j | _|| _|dkr| j| j  }y| 	dsxt
 dS  t
k
r   Y nX | j| | _ |  sdS dS )NFr   r   poT)r2   r0   r6   r7   r8   r   a_7r:   r.   rC   rD   r>   )r3   r?   r@   rH   r4   r4   r5   Z__r_other_endingsD  s.    
 z FinnishStemmer.__r_other_endingsc             C   s^   | j | jk rdS | j}| j| _| j | _| tjdkr@|| _dS | j | _|| _|  sZdS dS )NFr   T)	r2   r/   r6   r7   r8   r   a_8r:   r>   )r3   r?   r4   r4   r5   Z__r_i_plural]  s    zFinnishStemmer.__r_i_pluralc             C   s:  | j | jk rdS | j}| j| _| j | _| ds:|| _dS | j | _| j| j  }| tj	ddsh|| _dS | j| | _ | 
 sdS || _| j | jk rdS | j}| j| _| j | _| tj}|dkr|| _dS | j | _|| _|dkr(| j| j  }y| dst dS  tk
r   Y nX | j| | _ | 
 s6dS dS )	NFtr*   r-   r   r   rW   T)r2   r/   r6   r7   rC   r:   r.   r;   r   r1   r>   r0   r8   a_9rD   )r3   r?   rH   rV   r@   v_6r4   r4   r5   Z__r_t_pluralm  sP    

 
zFinnishStemmer.__r_t_pluralc             C   s  | j | jk rdS | j}| j| _| j| j  }yf| j| j  }|  sFt | j| | _ | j | _| j | jkrlt |  j d8  _ | j | _|  sdS W n tk
r   Y nX | j| | _ | j| j  }yN| j | _| 	t
jddst | j | _| 	t
jddst |  s
dS W n tk
r"   Y nX | j| | _ | j| j  }y| j | _| dsXt | j | _yb| j| j  }y| dst t W n tk
r   Y nX | j| | _ | d	st W n tk
r   Y nX |  sdS W n tk
r    Y nX | j| | _ | j| j  }yF| j | _| ds6t | j | _| dsPt |  s^dS W n tk
rv   Y nX | j| | _ || _| t
jdd
sdS | j | _| 	t
jddsdS | j | _|  | _| jdkrdS | | jsdS |  s dS dS )NFr   r*      rN   rO   r#   rL   ur-   r,   T)r2   r/   r6   r.   r   rD   r7   r:   r>   r;   r   g_AEIrR   rS   rC   rQ   lab4lab3lab5Zgo_in_grouping_br1   Zslice_toS_x)r3   r?   rH   rU   rV   r\   v_7v_8r4   r4   r5   Z__r_tidy  s     
 
 
 
 
 

zFinnishStemmer.__r_tidyc       	      C   s^  | j }|   || _ d| _| j | _| j| _ | j| j  }|   | j| | _ | j| j  }|   | j| | _ | j| j  }|   | j| | _ | j| j  }|   | j| | _ ypy6| jst	 | j| j  }| 
  | j| | _ t W n t	k
r   Y nX | j| j  }|   | j| | _ W n tk
r0   Y nX | j| j  }|   | j| | _ | j| _ dS )NFT)r2   _FinnishStemmer__r_mark_regionsrT   r6   r.   _FinnishStemmer__r_particle_etc_FinnishStemmer__r_possessive_FinnishStemmer__r_case_ending _FinnishStemmer__r_other_endingsrR   _FinnishStemmer__r_i_pluralrD   _FinnishStemmer__r_t_plural_FinnishStemmer__r_tidy)	r3   Zv_1r?   rH   rU   rV   rd   re   Zv_9r4   r4   r5   _stem  sL    
  zFinnishStemmer._stemN)$__name__
__module____qualname____doc__r   r9   rE   rF   rG   rB   rI   rP   rX   rY   r[   r_   rS   r1   rJ   r<   rT   rc   r0   r/   rf   r=   rg   rh   r   r   ri   rj   rk   rl   rm   rn   r4   r4   r4   r5   r      s   









































































&***9@+Vr   c               @   s   e Zd ZdS )rD   N)ro   rp   rq   r4   r4   r4   r5   rD     s    rD   c               @   s   e Zd ZdS )rR   N)ro   rp   rq   r4   r4   r4   r5   rR     s    rR   c               @   s   e Zd ZdS )rQ   N)ro   rp   rq   r4   r4   r4   r5   rQ     s    rQ   c               @   s   e Zd ZdS )ra   N)ro   rp   rq   r4   r4   r4   r5   ra     s    ra   c               @   s   e Zd ZdS )r`   N)ro   rp   rq   r4   r4   r4   r5   r`   !  s    r`   c               @   s   e Zd ZdS )rb   N)ro   rp   rq   r4   r4   r4   r5   rb   $  s    rb   N)Zbasestemmerr   Zamongr   r   BaseExceptionrD   rR   rQ   ra   r`   rb   r4   r4   r4   r5   <module>   s       