
    zTi>                         d dl mZ d dlmZ  G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z	 G d de      Z
 G d de      Zy)   )BaseStemmer)Amongc            "          e Zd ZdZh dZh dZh dZh dZh dZdZ	dZ
d	Zd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd 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d0dd       ed1dd      gZ ed2dd(       ed3dd(       ed4dd(       ed5dd       ed6dd       ed7dd8       ed9dd:       ed;dd<       ed=dd(      g	Z ed>dd       ed?dd       ed@dd       edAdd       edBdd       edCdd       edDdd      gZ edEddF       ed#d	d       ed$d	d       ed%d	d       ed&d	d       ed'd8d       ed)d8d       edGd8d       ed0dd       ed1dd       edHdd       edIddJ       eddKd       edLdKde       edMdKde       edNdKd       edOdKde       edPdKd(       edQdKde       edRdKd8       eddKd<       edSdKd:       edTddF       ed*dUd       ed+dUd       ed,dUd       ed-dUd       ed.dVd       ed/dVd       edWdVd      gZ  edXdd       edYdd       edZdd       ed[dd       ed\d(d       ed]dd       ed^d<d       ed_dd       ed`dJd       edadd       edbdd       edcddd       ededd       edfdgd      gZ! edhdd       edidd      gZ" edYdd       edZd	d      gZ#yj)kFinnishStemmerz
    This class implements the stemming algorithm defined by a snowball script.
    Generated from finnish.sbl by Snowball 3.0.1 - https://snowballstem.org/
    >   aei   ä>   bcdfghjklmnpqrstvwxz>   r   r   r	   ouyr
      ö>   r   r   r	   r   r    r
   r"   >
   r   r   r	   r   r   r   r    r!   r
   r"   F     c                 4   | j                   | _        | j                   | _        | j                  t        j
                        sy| xj                  dz  c_        | j                  t        j
                        sy| xj                  dz  c_        | j                  | _        | j                  t        j
                        sy| xj                  dz  c_        | j                  t        j
                        sy| xj                  dz  c_        | j                  | _        y)NFr   T)limitI_p1I_p2go_out_groupingr   g_V1cursorgo_in_groupingselfs    R/home/agent/.local/lib/python3.12/site-packages/snowballstemmer/finnish_stemmer.py__r_mark_regionszFinnishStemmer.__r_mark_regions   s    JJ	JJ	##N$7$78q"">#6#67qKK	##N$7$78q"">#6#67qKK	    c                 4    | j                   | j                  k  S )N)r(   r+   r-   s    r/   __r_R2zFinnishStemmer.__r_R20   s    yyDKK''r1   c                    | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j	                  t
        j                        }|dk(  r|| _        y| j                   | _        || _        |dk(  r | j                  t
        j                        sy| j                         sy| j                         syy)NFr$   r   T)r+   r'   limit_backwardketfind_among_br   a_0brain_grouping_bg_particle_end_FinnishStemmer__r_R2	slice_del)r.   v_2	among_vars      r/   __r_particle_etczFinnishStemmer.__r_particle_etc3   s    ;;"!!"ii;;%%n&8&89	>"%D;;!>%%n&C&CD;;=~~r1   c                 4   | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j	                  t
        j                        }|dk(  r|| _        y| j                   | _        || _        |dk(  r6| j                  | j                   z
  }	 | j                  d      s
t               y|dk(  rX| j                         sy| j                   | _        | j                  d      sy| j                   | _        | j                  d      syy|dk(  r| j                         syy|d	k(  r5| j	                  t
        j                        dk(  ry| j                         syy|d
k(  r5| j	                  t
        j                        dk(  ry| j                         syy| j	                  t
        j                        dk(  ry| j                         syy# t        $ r Y nw xY w| j                  |z
  | _         | j                         syy)NFr$   r   r      kseksi         T)r+   r'   r5   r6   r7   r   a_4r9   r&   eq_s_blab0r=   
slice_froma_1a_2a_3r.   r>   r?   v_3s       r/   __r_possessivezFinnishStemmer.__r_possessiveJ   s   ;;"!!"ii;;%%n&8&89	>"%D;;!>**t{{*C{{4(&L !^>>#{{DH;;v&{{DH??6*. - !^>>#( % !^  !3!349>>#  !^  !3!349>>#    !3!349>>#K **s*DK>>#D s   ,G% %	G10G1c                 J    | j                  t        j                        dk(  ryy)Nr$   FT)r7   r   a_5r-   s    r/   __r_LONGzFinnishStemmer.__r_LONG   s!    ^//0A5r1   c                 h    | j                  d      sy| j                  t        j                        syy)Nr	   FT)rI   r:   r   g_V2r-   s    r/   __r_VIzFinnishStemmer.__r_VI   s+    {{4 !!."5"56r1   c                    | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j	                  t
        j                        }|dk(  r|| _        y| j                   | _        || _        |dk(  r| j                  d      s2y|dk(  r| j                  d      sy|dk(  r| j                  d      sy|d	k(  r| j                  d
      sy|dk(  r| j                  d      sy|dk(  r| j                  d      sy|dk(  rr| j                  | j                   z
  }	 | j                  | j                   z
  }	 | j                  | j                   z
  }	 | j                         s
t               t               |dk(  r@| j                  t
        j                        sy| j                  t
        j                         sy| j#                         syd| _        y# t        $ r Y nw xY w| j                  |z
  | _         | j                  d      s| j                  |z
  | _         t               n# t        $ r Y nw xY w| j                  |z
  | _         | j                   | j                  k  r| j                  |z
  | _         t               | xj                   dz  c_         | j                   | _        # t        $ r Y w xY w)NFr$   r   r   rB   r   rE   r	   rF   r   rG   r
      r"      ie   T)r+   r'   r5   r6   r7   r   a_6r9   rI   r&   _FinnishStemmer__r_LONGlab2lab1rJ   r:   r*   g_Cr=   B_ending_removed)r.   r>   r?   rP   v_4v_5s         r/   __r_case_endingzFinnishStemmer.__r_case_ending   s]   ;;"!!"ii;;%%n&8&89	>"%D;;!>;;t$!^;;t$!^;;t$!^;;t$!^;;u%!^;;u%!^**t{{*Cjj4;;."**t{{2C&#}}"&&L"f !^%%n&9&9:%%n&8&89~~ $-  %%"&**s"2DK;;u-&*jj3&6"f . !T!"jj3.;;$"5"55"&**s"2DK&Lq ;;sV   9K I -$G/ /	G;8I :G;;AI K 	IK IA4K 	KKc                    | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j	                  t
        j                        }|dk(  r|| _        y| j                   | _        || _        |dk(  r6| j                  | j                   z
  }	 | j                  d      s
t               y| j                         syy# t        $ r Y nw xY w| j                  |z
  | _         6)NFr$   r   poT)r+   r(   r5   r6   r7   r   a_7r9   r&   rI   rJ   r=   rO   s       r/   __r_other_endingsz FinnishStemmer.__r_other_endings   s    ;;"!!"ii;;%%n&8&89	>"%D;;!>**t{{*C{{5)&L ~~ **s*DKs   ,C 	C&%C&c                 :   | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j	                  t
        j                        dk(  r|| _        y| j                   | _        || _        | j                         syy)NFr$   T)	r+   r'   r5   r6   r7   r   a_8r9   r=   )r.   r>   s     r/   __r_i_pluralzFinnishStemmer.__r_i_plural   s~    ;;"!!"ii;;^//0A5"%D;;!~~r1   c                    | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j	                  d      s|| _        y| j                   | _        | j                  | j                   z
  }| j                  t        j                        s|| _        y| j                  |z
  | _         | j                         sy|| _        | j                   | j                  k  ry| j                  }| j                  | _        | j                   | _        | j                  t        j                        }|dk(  r|| _        y| j                   | _        || _        |dk(  r6| j                  | j                   z
  }	 | j	                  d      s
t               y| j                         syy# t        $ r Y nw xY w| j                  |z
  | _         6)NFr   r$   r   rg   T)r+   r'   r5   r6   rI   r9   r&   r:   r   r*   r=   r(   r7   a_9rJ   )r.   r>   rP   rd   r?   v_6s         r/   __r_t_pluralzFinnishStemmer.__r_t_plural   s   ;;"!!"ii;;{{4 "%D;;jj4;;&!!."5"56"%Djj3&~~!;;"!!"ii;;%%n&8&89	>"%D;;!>**t{{*C{{5)&L ~~ **s*DKs   
F8 8	GGc                    | j                   | j                  k  ry| j                  }| j                  | _        | j                  | j                   z
  }	 | j                  | j                   z
  }| j	                         s
t               | j                  |z
  | _         | j                   | _        | j                   | j                  k  r
t               | xj                   dz  c_         | j                   | _        | j                         sy	 | j                  |z
  | _         | j                  | j                   z
  }	 | j                   | _        | j                  t        j                        s
t               | j                   | _        | j                  t        j                        s
t               | j                         sy	 | j                  |z
  | _         | j                  | j                   z
  }	 | j                   | _        | j                  d      s
t               | j                   | _        	 | j                  | j                   z
  }	 | j                  d      s
t!               t#               # t
        $ r Y kw xY w# t        $ r Y w xY w# t         $ r Y nw xY w| j                  |z
  | _         | j                  d      s
t               n# t"        $ r Y nw xY w| j                         syn# t        $ r Y nw xY w| j                  |z
  | _         | j                  | j                   z
  }	 | j                   | _        | j                  d      s
t%               | j                   | _        | j                  d      s
t%               | j                         syn# t$        $ r Y nw xY w| j                  |z
  | _         || _        | j'                  t        j(                        sy| j                   | _        | j                  t        j                        sy| j                   | _        | j+                         | _        | j,                  dk(  ry| j                  | j,                        sy| j                         syy)NFr   r   r   r    r#   T)r+   r'   r5   r&   r^   rJ   r6   r9   r=   r:   r   g_AEIr`   ra   rI   r_   lab4lab3lab5go_in_grouping_br*   slice_toS_x)r.   r>   rP   rc   rd   ro   v_7v_8s           r/   __r_tidyzFinnishStemmer.__r_tidy#  sr   ;;"!!"iijj4;;&	**t{{*C==?f**s*DK{{DH{{d111fKK1K{{DH>># $ jj3&jj4;;&
	{{DH%%n&:&:;f{{DH%%n&8&89f>># $ jj3&jj4;;&	{{DH;;t$f{{DH
jj4;;.";;t,"f&L5 T T !T!"jj3.{{4(&L )>># $ Tjj3&jj4;;&
	{{DH;;t$f{{DH;;t$f>># $ Tjj3&!$$^%8%89;;!!."4"45;;==?88r>{{488$~~s   B1I$ 3BI4 '=K# %K ?%J $	I10I14	J ?J 	JK J2K K# 	KK# KK# #	K/.K/ A(N
 
	NNc                    | j                   }| j                          || _         d| _        | j                   | _        | j                  | _         | j                  | j                   z
  }| j                          | j                  |z
  | _         | j                  | j                   z
  }| j                          | j                  |z
  | _         | j                  | j                   z
  }| j                          | j                  |z
  | _         | j                  | j                   z
  }| j                          | j                  |z
  | _         	 	 | j                  s
t               | j                  | j                   z
  }| j                          | j                  |z
  | _         t               # t        $ r Y nw xY w| j                  | j                   z
  }| j                          | j                  |z
  | _         n# t        $ r Y nw xY w| j                  | j                   z
  }| j                          | j                  |z
  | _         | j                  | _         y)NFT)r+   _FinnishStemmer__r_mark_regionsrb   r5   r&   _FinnishStemmer__r_particle_etc_FinnishStemmer__r_possessive_FinnishStemmer__r_case_ending _FinnishStemmer__r_other_endingsr`   _FinnishStemmer__r_i_pluralrJ   _FinnishStemmer__r_t_plural_FinnishStemmer__r_tidy)	r.   v_1r>   rP   rc   rd   ry   rz   v_9s	            r/   _stemzFinnishStemmer._stemy  s   kk %"kkjjjj4;;&jj3&jj4;;&jj3&jj4;;&jj3&jj4;;& jj3&	,,&Ljj4;;.!!#"jj3.f**t{{*C**s*DKTjj4;;&jj3&))s,   AF   	F,)G- +F,,A G- -	G98G9par   stirB   kaanhankinu   hänu   käänkou   päu   köllanassataltarE   stau   lläu   näu   ssäu   täu   ltäu   ställeinensammennenisianrF   enrY   u   änrG   u   nsäaaeeiioouuu   ääu   öör   r\   ttarD   r   rZ      denseenhenttenhinsiinhonu   hönr
         u   ttäejammaimmampaimpammiimmimpiimpiu   ejäu   mmäu   immä
   u   mpäu   impä   r	   r   N)$__name__
__module____qualname____doc__rr   ra   r*   rV   r;   rb   rx   r(   r'   r}   r<   r~   r   r^   _FinnishStemmer__r_VIr   r   r   r   r   r   r   r8   rL   rM   rN   rH   rS   r]   rh   rk   rn    r1   r/   r   r      s   
 &E CC=D7DSN
CDD&(.7r
>@2 )VTl$N 	eRfb!gr1fb!fb!gr1iQeRfb!fb!C 	fb"eRfb"eRfafaC 	gr2fb"gr2fb"gq"gq"C 	fb"fb"C 	fb!fb!fb!eReReReRfb!gr1
C 	eReReReReRgr2gr2C 	dBfaeQfaeQfafafafb"fb"fb"dBfb!fb"f%gr2x(fb!gr2v&fb!gr2v&fb!gr1gr1eRgr2fb"gr2fb"gr2gr2gr1=CD 	fb"fb!gq"fb!gq"fb!gq"fb!gq"gr2gr1hBgr1hBC$ 	dBdBC 	fb!gq"Cr1   r   c                       e Zd Zy)rJ   Nr   r   r   r   r1   r/   rJ   rJ         r1   rJ   c                       e Zd Zy)r`   Nr   r   r1   r/   r`   r`     r   r1   r`   c                       e Zd Zy)r_   Nr   r   r1   r/   r_   r_     r   r1   r_   c                       e Zd Zy)rt   Nr   r   r1   r/   rt   rt     r   r1   rt   c                       e Zd Zy)rs   Nr   r   r1   r/   rs   rs   "  r   r1   rs   c                       e Zd Zy)ru   Nr   r   r1   r/   ru   ru   %  r   r1   ru   N)basestemmerr   amongr   r   BaseExceptionrJ   r`   r_   rt   rs   ru   r   r1   r/   <module>r      sX    % K[ K\  =   =   =   =   =   = r1   