
    h'                         S SK JrJrJrJrJr  S SKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  S	S	S
.r " S S\	5      rS\S\\\\\4   4   4S jrg)    )CallableDictListOptionalTuple)Model   )
Lemmatizer)lemmatizer_score)POS)Token)Vocab")   «   »c                      ^  \ rS rSr SSS\S.S\S\\   S\S\S	\	S
\\
   SS4U 4S jjjjrS\S\\   4S jrS\S\\   4S jrS\S\\   4S jrS\S\\   4S jrS\S\\   4S jrS\S\\   4S jrSrU =r$ )RussianLemmatizer   	pymorphy3Fmode	overwritescorervocabmodelnamer   r   r   returnNc          	      &  > US;   a!   SSK Jn  [        U SS 5      c  U" SS9U l        O&US;   a    SSKJn  [        U SS 5      c  U" SS9U l        [        TU ]  XX4XVS
9  g ! [         a    [        S5      S ef = f! [         a    [        S	5      S ef = f)N>   	pymorphy2pymorphy2_lookupr   )MorphAnalyzerzThe lemmatizer mode 'pymorphy2' requires the pymorphy2 library and dictionaries. Install them with: pip install pymorphy2# for Ukrainian dictionaries:pip install pymorphy2-dicts-uk_morphru)lang>   r   pymorphy3_lookupzThe lemmatizer mode 'pymorphy3' requires the pymorphy3 library and dictionaries. Install them with: pip install pymorphy3# for Ukrainian dictionaries:pip install pymorphy3-dicts-ukr   )r   r!   ImportErrorgetattrr"   r   super__init__)	selfr   r   r   r   r   r   r!   	__class__s	           R/home/james-whalen/.local/lib/python3.13/site-packages/spacy/lang/ru/lemmatizer.pyr)   RussianLemmatizer.__init__   s     44	3 tXt,4+666	3 tXt,4+6$Y 	 	
/  !5   !5 s   A A9 A69Btokenc                    UR                   nUR                  nUR                  R                  5       nUS:X  a  [        R                  X"5      /$ US;  a  U R                  U5      $ U R                  R                  U5      n/ nU Hh  nUR                  (       d  M  [        [        UR                  5      5      u  pX:X  d  US;   a  US;   d  US:X  d  MO  US:X  d  MW  UR                  U5        Mj     [        U5      (       d  UR                  5       /$ Ub  [        U5      S:X  aB  [         U;   a8  [#        [$        R'                  U Vs/ s H  owR(                  PM     sn5      5      $ US;   a  / SQn
OUS	:X  a  S
S/n
OUS:X  a  / SQn
O/ SQn
U/ peU Ht  n[        [        UR                  5      5      u  pU
 H:  nX;   d  M
  X;   d  M  XL   R                  5       X   R                  5       :w  d  M9    Ma     UR                  U5        Mv     [        U5      (       d  UR                  5       /$ [#        [$        R'                  U Vs/ s H  owR(                  PM     sn5      5      $ s  snf s  snf )NPUNCT)ADJDETNOUNNUMPRONPROPNVERB)r3   r6   r5   r2      )r1   r2   r3   r6   )CaseNumberGenderr4   r9   r;   )r9   r:   r;   Person)Aspectr;   Moodr:   TenseVerbFormVoice)textpos_morphto_dictPUNCT_RULESget_pymorphy_lookup_lemmatizer"   parseis_knownoc2udstrtagappendlenlowerr   listdictfromkeysnormal_form)r*   r.   stringuniv_pos
morphologyanalysesfiltered_analysesanalysisanalysis_pos_features_to_compareanalysis_morphfeatures                r,   _pymorphy_lemmatize%RussianLemmatizer._pymorphy_lemmatize7   s>   ::[[((*
wOOF344QQ22599;;$$V, H$$#C$56OL( $55(FW:W!V+(e2C!((2 ! $%%LLN###j/Q"63*;LDUVDU33DUVW  66">#)8"4"H# '8# H %c(,,&7 8A.)1"+113~7N7T7T7VV / "((2 ! $%%LLN##MM@QR@QH//@QRS
 	
A WB Ss   I!I&c                     UR                   nU R                  R                  U5      n[        U Vs/ s H  oDR                  PM     sn5      n[        U5      S:X  a  [        [        U5      5      /$ U/$ s  snf )Nr8   )rB   r"   rI   setrT   rO   nextiter)r*   r.   rU   rX   annormal_formss         r,   rH   ,RussianLemmatizer._pymorphy_lookup_lemmatizet   sh    ;;$$V, X>XrNNX>?|!l+,--x ?s   A4c                 $    U R                  U5      $ Nr`   r*   r.   s     r,   pymorphy2_lemmatize%RussianLemmatizer.pymorphy2_lemmatize~       ''..    c                 $    U R                  U5      $ rj   rH   rl   s     r,   pymorphy2_lookup_lemmatize,RussianLemmatizer.pymorphy2_lookup_lemmatize       ..u55rp   c                 $    U R                  U5      $ rj   rk   rl   s     r,   pymorphy3_lemmatize%RussianLemmatizer.pymorphy3_lemmatize   ro   rp   c                 $    U R                  U5      $ rj   rr   rl   s     r,   pymorphy3_lookup_lemmatize,RussianLemmatizer.pymorphy3_lookup_lemmatize   ru   rp   )r"   )
lemmatizer)__name__
__module____qualname____firstlineno__r   r   r   r   rL   boolr   r)   r   r   r`   rH   rm   rs   rw   rz   __static_attributes____classcell__)r+   s   @r,   r   r      s    
 !	&
  %5&
&
 &
 	&
 &
 &
 "&
 
&
 &
P;
 ;
49 ;
z $s) / /49 /6 6$s) 6/ /49 /6 6$s) 6 6rp   r   oc_tagr   c                    0 SS_SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSS.ESSS.S S!S".S#S$S%S&S&S&S'S'S(S)S*.
S+S,S-.S.S/S0S1.S S2S3.S4S5S6.SS70S8S9S:S9S8S;.S<S=S>S?.S@S@SA.SBSCSDSDSESF.SGSHSI.SJSK0SL.nSMn[        5       n[        5       nU R                  SNSO5      R                  SO5      nU H\  nSPn[	        UR                  5       5       H   u  pXi;   d  M  SQnUSR:X  a  X   nM  X   X8'   M"     U(       a  MK  UR                  U5        M^     [        U5      SS:  a>  UR                  5       nUST;   a  SUnOUSV:X  a  SWnOUSX:X  a  SYUSZ'   [        U5      SS:  a  M>  X#4$ )[NADJFr1   ADJSADVBADVApror2   COMPCONJCCONJGRNDr7   INFNINTJr3   NPROr5   NUMRr4   NUMBPNCTr0   PRCLPARTPREPADPPRTF)PRTSr7   AnimInan)animinanImpPerf)impfperfInsAccDatGenLocNomVoc)
abltaccsdatvgen1gen2gentloc2loctnomnvoctCmpSup)r   SuprFemMascNeut)femnmascneutInd)imprindcPlurSing)plursingDigit123)1per2per3perexclinclFutPastPres)futrpastpresBrev)r   r   ConvInfPartFin)r   r   r   r   r7   ActPass)actvpssvAbbrYes)_POSAnimacyr=   r9   Degreer;   r>   r:   NumFormr<   r?   Variantr@   rA   r   X ,FTr   r   )NamePatrSurnGeoxOrgnr6   AuxtAUXPltmPtanr:   )	rR   rc   replacesplitsorteditemsaddrO   pop)
r   gram_mapposrW   	unmatchedgramsgrammatchcateggmaps
             r,   rK   rK      ss   
E
E
 E
 E	

 E
 G
 F
 F
 F
 F
 F
 E
 E
 G
 F
  E!
" F#
$ '
* #F3 &1
 !%0 &&A.!62G$S#sS@"F3
  0i5Hl CJINN3$**3/E!(.."23KE|F?*C(,
J% 4 uMM$  i.1
}};;CV^CV^#)Jx  i.1
 ?rp   N)typingr   r   r   r   r   	thinc.apir   pipeliner
   pipeline.lemmatizerr   symbolsr   tokensr   r   r   rF   r   rL   rK    rp   r,   <module>r     s^    8 8  " 3   $z6
 z6zN# N%T#s(^ 34 Nrp   