JL i/2dZddlZddlmZGddeZy)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)StemmerIcNeZdZdZdZd dZddZdZdZdZ d Z d Z d Z d Z y)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' )szai*2.za*1.zbb1.zcity3s.zci2>zcn1t>zdd1.zdei3y>zdeec2ss.zdee1.zde2>zdooh4>ze1>zfeil1v.zfi2>zgni3>zgai3y.zga2>zgg1.zht*2.z hsiug5ct.zhsi3>zi*1.zi1y>zji1d.zjuf1s.zju1d.zjo1d.zjeh1r.zjrev1t.zjsim2t.zjn1d.zj1s.zlbaifi6.zlbai4y.zlba3>zlbi3.zlib2l>zlc1.zlufi4y.zluf3>zlu2.zlai3>zlau3>zla2>zll1.zmui3.zmu*2.zmsi3>zmm1.znois4j>znoix4ct.znoi3>znai3>zna2>znee0.zne2>znn1.zpihs4>zpp1.zre2>zrae0.zra2.zro2>zru2>zrr1.zrt1>zrei3y>zsei3y>zsis2.zsi2>zssen4>zss0.zsuo3>zsu*2.zs*1>zs0.z tacilp4y.zta2>ztnem4>ztne3>ztna3>ztpir2b.ztpro2b.ztcud1.ztpmus2.ztpec2iv.ztulo2v.ztsis0.ztsi3>ztt1.zuqi3.zugo1.zvis3j>zvie0.zvi2>zylb1>zyli3y>zylp0.zyl2>zygo1.zyhp1.zymo1.zypo1.zyti3>zyte3>zytl2.zyrtsi5.zyra3>zyro3>zyfi3.zycn2t>zyca3>zzi2>zzy1s.NcVi|_||_|r||_y|j|_y)z,Create an instance of the Lancaster stemmer.N)rule_dictionary _strip_prefixdefault_rule_tuple _rule_tuple)self rule_tuplestrip_prefix_flags Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/nltk/stem/lancaster.py__init__zLancasterStemmer.__init__s+ ".)3:9P9Pc.|r|n |j}tjd}i|_|D]d}|j |st d|d|dd}||jvr|j|j |U|g|j|<fy)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 invalidrN)r recompilermatch ValueErrorappend)r r valid_rulerule first_letters r parseRuleszLancasterStemmer.parseRuless$.Z43C3C ZZ <= ! ??!9Lt333$$\299$?6:V$$\2 \.]?)$TrFN.) rr _LancasterStemmer__getLastLetterrrgroupsintendswith_LancasterStemmer__isAcceptable_LancasterStemmer__applyRule)r r r!rproceedlast_letter_positionrule_was_appliedr rule_match ending_string intact_flag remove_total append_string cont_flags r __doStemmingzLancasterStemmer.__doStemmings}ZZ FG #'#7#7#= %q(,-T5I5II$) !006J1KL#&D!+!1!1$!7J!'--/ )'()% (+<'8  ==tt)<=*#';#64;N;N$(,<",0+;+;(,lM,&D8<$4'0C'727$)!%!4!4T)r s r__repr__zLancasterStemmer.__repr__Us#r)NF)N)__name__ __module__ __qualname____doc__r rrr"rr&r*r+rrVrUrrrrsA!HtlQ<. 4=~"" *$rr)rZr nltk.stem.apirrrUrrr\s  "E$xE$r