+
    ÖÇÜhÓ/  ã                   ó4   € R t ^ RIt^ RIHt  ! R R]4      tR# )z�
A word stemmer based on the Lancaster (Paice/Husk) stemming algorithm.
Paice, Chris D. "Another Stemmer." ACM SIGIR Forum 24.3 (1990): 56-61.
N)ÚStemmerIc                   óf   a € ] tR t^t o RtRtRR ltRR ltR tR t	R t
R tR	 tR
 tR tRtV tR# )ÚLancasterStemmera¯  
Lancaster Stemmer

    >>> from nltk.stem.lancaster import LancasterStemmer
    >>> st = LancasterStemmer()
    >>> st.stem('maximum')     # Remove "-um" when word is intact
    'maxim'
    >>> st.stem('presumably')  # Don't remove "-um" when word is not intact
    'presum'
    >>> st.stem('multiply')    # No action taken if word ends with "-ply"
    'multiply'
    >>> st.stem('provision')   # Replace "-sion" with "-j" to trigger "j" set of rules
    'provid'
    >>> st.stem('owed')        # Word starting with vowel must contain at least 2 letters
    'ow'
    >>> st.stem('ear')         # ditto
    'ear'
    >>> st.stem('saying')      # Words starting with consonant must contain at least 3
    'say'
    >>> st.stem('crying')      #     letters and one of those letters must be a vowel
    'cry'
    >>> st.stem('string')      # ditto
    'string'
    >>> st.stem('meant')       # ditto
    'meant'
    >>> st.stem('cement')      # ditto
    'cem'
    >>> st_pre = LancasterStemmer(strip_prefix_flag=True)
    >>> st_pre.stem('kilometer') # Test Prefix
    'met'
    >>> st_custom = LancasterStemmer(rule_tuple=("ssen4>", "s1t."))
    >>> st_custom.stem("ness") # Change s to t
    'nest'
Nc                ób   € / V n         W n        V'       d	   Wn        R# V P                  V n        R# )z,Create an instance of the Lancaster stemmer.N)Úrule_dictionaryÚ_strip_prefixÚdefault_rule_tupleÚ_rule_tuple)ÚselfÚ
rule_tupleÚstrip_prefix_flags   &&&Ú5/usr/lib/python3/dist-packages/nltk/stem/lancaster.pyÚ__init__ÚLancasterStemmer.__init__¬   s'   € ð  "ˆÔà.Ôç)3˜:Ö¸×9PÑ9PˆÖó    c                ód  € V'       d   TMV P                   p\        P                  ! R4      p/ V n        V Fv  pVP	                  V4      '       g   \        RV R24      hVR,          pW@P                  9   d%   V P                  V,          P                  V4       Kf  V.V P                  V&   Kx  	  R# )a  Validate the set of rules used in this stemmer.

If this function is called as an individual method, without using stem
method, rule_tuple argument will be compiled into self.rule_dictionary.
If this function is called within stem, self._rule_tuple will be used.

z^[a-z]+\*?\d[a-z]*[>\.]?$z	The rule z is invalid:é    é   NN)r	   ÚreÚcompiler   ÚmatchÚ
ValueErrorÚappend)r
   r   Ú
valid_ruleÚruleÚfirst_letters   &&   r   Ú
parseRulesÚLancasterStemmer.parseRulesµ   s™   € ÷ $.‘Z°4×3CÑ3Cˆ
Ü—Z’ZÐ <Ó=ˆ
à!ˆÔãˆDØ×#Ñ# D×)Ò)Ü  9¨T¨F°+Ð!>Ó?Ð?Ø �9ˆLØ×3Ñ3Ô3Ø×$Ñ$ \Õ2×9Ñ9¸$Ö?à6:°V�×$Ñ$ \Ó2ó r   c                óÖ   € VP                  4       pV P                  '       d   V P                  V4      MTpTpV P                  '       g   V P	                  4        V P                  W4      # )z(Stem a word using the Lancaster stemmer.)Úlowerr   Ú_LancasterStemmer__stripPrefixr   r   Ú_LancasterStemmer__doStemming)r
   ÚwordÚintact_words   && r   ÚstemÚLancasterStemmer.stemÌ   s\   € ð �z‰z‹|ˆØ+/×+=×+=Ð+=ˆt×!Ñ! $Ô'À4ˆð ˆð ×#×#Ð#Ø�O‰OÔà× Ñ  Ó3Ð3r   c                óÊ  € \         P                  ! R4      pRpV'       EdB   V P                  V4      pV^ 8  g   W,          V P                  9  d   RpK<  RpV P                  W,          ,           Fà  pVP	                  V4      pV'       g   K  VP                  4       w  p	p
ppp\        V4      pVP                  V	RRR1,          4      '       g   Kb  V
'       dA   W8X  d9   V P                  W4      '       d    V P                  WV4      pRpVR8X  d   Rp M>K¨  Kª  V P                  W4      '       g   KÃ  V P                  WV4      pRpVR8X  d   Rp M	  VR8X  g   EKE  RpEKJ  V# )z Perform the actual word stemmingz#^([a-z]+)(\*?)(\d)([a-z]*)([>\.]?)$TFNÚ.éÿÿÿÿ)
r   r   Ú _LancasterStemmer__getLastLetterr   r   ÚgroupsÚintÚendswithÚ_LancasterStemmer__isAcceptableÚ_LancasterStemmer__applyRule)r
   r"   r#   r   ÚproceedÚlast_letter_positionÚrule_was_appliedr   Ú
rule_matchÚending_stringÚintact_flagÚremove_totalÚappend_stringÚ	cont_flags   &&&           r   Ú__doStemmingÚLancasterStemmer.__doStemmingÛ   s|  € ô —Z’ZÐ FÓGˆ
àˆçˆgà#'×#7Ñ#7¸Ó#=Ð ð % qÔ(ØÕ-°T×5IÑ5IÔIà’ð $)Ð ð !×0Ñ0°Õ1K×LÐL�DØ!+×!1Ñ!1°$Ó!7�Jß!‘zð '×-Ñ-Ó/ñØ)Ø'Ø(Ø)Ø%ô
 (+¨<Ó'8˜ð  Ÿ=™=¨±t¸°tÕ)<×=Ô=ß*Ø#'Ô#6¸4×;NÑ;NØ$(÷<"ò <"ð ,0×+;Ñ+;Ø(,¸Mó,& Dð 8<Ð$4Ø'0°CÔ'7Ø27¨Ù$)ñ<"Ñ#6ð "&×!4Ñ!4°T×!HÔ!HØ'+×'7Ñ'7Ø$(¸ó(" ð 48Ð 0Ø#,°Ô#3Ø.3 GÙ %ñG MðJ $ u×,Ø#“GØˆr   c                ó‚   € Rp\        \        V4      4       F$  pW,          P                  4       '       d   TpK#   V# 	  V# )zHGet the zero-based index of the last alphabetic character in this stringr(   )ÚrangeÚlenÚisalpha)r
   r"   Úlast_letterÚpositions   &&  r   Ú__getLastLetterÚ LancasterStemmer.__getLastLetter  sA   € àˆÜœc $›iÖ(ˆHØ�~×%Ñ%×'Ò'Ø&’àØÐñ )ð
 Ðr   c                óÎ   € RpV^ ,          R9   d   \        V4      V,
          ^8¼  d   RpV# \        V4      V,
          ^8¼  d#   V^,          R9   d   RpV# V^,          R9   d   RpV# )z1Determine if the word is acceptable for stemming.FÚaeiouyT©r<   )r
   r"   r5   Úword_is_acceptables   &&& r   Ú__isAcceptableÚLancasterStemmer.__isAcceptable$  s|   € à"Ðð ��7�hÔÜ�4‹y˜<Õ'¨1Ô,Ø%)Ð"ð "Ð!ô �‹Y˜Õ%¨Ô*Ø�A�w˜(Ô"Ø%)Ð"ð "Ð!ð �a•˜HÔ$Ø%)Ð"Ø!Ð!r   c                óT   € \        V4      V,
          pV^ V pV'       d	   W,          pV# )z#Apply the stemming rule to the wordrD   )r
   r"   r5   r6   Únew_word_lengths   &&&& r   Ú__applyRuleÚLancasterStemmer.__applyRule5  s0   € ô ˜d›) lÕ2ˆØ�A�oÐ&ˆ÷ ØÕ!ˆDØˆr   c                óf   € R F*  pVP                  V4      '       g   K  V\        V4      R u # 	  V# )zIRemove prefix from a word.

This function originally taken from Whoosh.

N)	ÚkiloÚmicroÚmilliÚintraÚultraÚmegaÚnanoÚpicoÚpseudo)Ú
startswithr<   )r
   r"   Úprefixs   && r   Ú__stripPrefixÚLancasterStemmer.__stripPrefix@  s7   € ó

ˆFð �‰˜v×&Ô&ØœC ›K˜MÐ*Ò*ñ

ð ˆr   c                ó   € R # )z<LancasterStemmer>© )r
   s   &r   Ú__repr__ÚLancasterStemmer.__repr__U  s   € Ù#r   )r	   r   r   )szai*2.za*1.zbb1.zcity3s.zci2>zcn1t>zdd1.zdei3y>zdeec2ss.zdee1.zde2>zdooh4>ze1>zfeil1v.zfi2>zgni3>zgai3y.zga2>zgg1.zht*2.z	hsiug5ct.zhsi3>zi*1.zi1y>zji1d.zjuf1s.zju1d.zjo1d.zjeh1r.zjrev1t.zjsim2t.zjn1d.zj1s.zlbaifi6.zlbai4y.zlba3>zlbi3.zlib2l>zlc1.zlufi4y.zluf3>zlu2.zlai3>zlau3>zla2>zll1.zmui3.zmu*2.zmsi3>zmm1.znois4j>znoix4ct.znoi3>znai3>zna2>znee0.zne2>znn1.zpihs4>zpp1.zre2>zrae0.zra2.zro2>zru2>zrr1.zrt1>zrei3y>zsei3y>zsis2.zsi2>zssen4>zss0.zsuo3>zsu*2.zs*1>zs0.z	tacilp4y.zta2>ztnem4>ztne3>ztna3>ztpir2b.ztpro2b.ztcud1.ztpmus2.ztpec2iv.ztulo2v.ztsis0.ztsi3>ztt1.zuqi3.zugo1.zvis3j>zvie0.zvi2>zylb1>zyli3y>zylp0.zyl2>zygo1.zyhp1.zymo1.zypo1.zyti3>zyte3>zytl2.zyrtsi5.zyra3>zyro3>zyfi3.zycn2t>zyca3>zzi2>zzy1s.)NF)N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r$   r!   r)   r-   r.   r    r\   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      sI   ø‡ € ñ!ðHtÐôlQô<ò.4ò=ò~ò"ò"	ò÷*$ð $r   r   )rb   r   Únltk.stem.apir   r   r[   r   r   Ú<module>rg      s    ðñó 
å "ôE$�xö E$r   