Z?e j9dOZ@e j9dPZAe j9dQdRjBdSdTZCi e=ddWdX f6e=d dcdX f6e=d dndo f6e=d d{d| f6e=d dd f6e=d dd f6e=dd6e=dd6e=dd6ZDgeDjED]>ZFeFD]1ZGdjBgeGD]ZHe jIeH^q^qqZJe j9ddRjBeJZJe j9dZKidd6dd6dd6dd6dd6dd6dd6ZLdZMe;e>eLddZNdddZOde&fdYZPdddYZQde(eQfdYZRde(eQfdYZSe j9dZTe j9dZUe j9dZVde&eQfdYZWdZXdZYd\Z*Z+ZZZ[e j9dZ\dZ]de^fdYZ_de&fdYZ`e j9dZaddZbiddddddddZddZedZfdZgdZhdZide j9defdeidRehdefdfde j9deidegdfde j9dfd e j9dfde j9deidRehdehdfde j9deidfgde j9defdeidRehdefdeidRehdfde j9deidegdeidfde j9dfd e j9dfde j9deidRehdehdfde j9deidfggZjejdjkdejdjldejdjkdejdjldddZmdZndZoZpdddYZqdZrdefdYZsde&fdYZtdS(unThis file is adapted from the pattern library. URL: http://www.clips.ua.ac.be/pages/pattern-web Licence: BSD i(tunicode_literalsN(tchain(t cElementTreei(t text_typet basestringtimaptunicodet binary_typetPY2uu&slash;uwordupart-of-speechuchunku prepositionurelationuanchorulemmauutf-8cCsqt|tr(|ffddf}nt|trgx)|D]!}y|j|SWq>q>Xq>W|St|S(u@ Returns the given value as a Unicode string (if possible). u windows-1252uutf-8uignore(u windows-1252(uutf-8uignore(t isinstanceRRtdecodeR(tvtencodingte((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt decode_strings cCsqt|tr(|ffddf}nt|trgx)|D]!}y|j|SWq>q>Xq>W|St|S(uD Returns the given value as a Python byte string (if possible). u windows-1252uutf-8uignore(u windows-1252(uutf-8uignore(R RRtencodetstr(R R R ((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt encode_string+s cCs'yt|Wntk r"tSXtS(N(tfloatt ValueErrortFalsetTrue(tstrg((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt isnumeric=s  tlazydictcBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZRS(cCsdS(N((tself((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytloadKscGs]tj|dkrG|jt||tjtt||ntt|||S(u If the dictionary is empty, calls lazydict.load(). Replaces lazydict.method() with dict.method() and calls it. i(tdictt__len__Rtsetattrttypest MethodTypetgetattr(Rtmethodtargs((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt_lazyPs (cCs |jdS(Nu__repr__(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt__repr__YscCs |jdS(Nu__len__(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR[scCs |jdS(Nu__iter__(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt__iter__]scGs|jd|S(Nu __contains__(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt __contains___scGs|jd|S(Nu __getitem__(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt __getitem__ascGs|jd|S(Nu __setitem__(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt __setitem__cscGs|jd|S(Nu setdefault(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt setdefaultescOs|jd|S(Nuget(R#(RR"tkwargs((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytgetgscCs |jdS(Nuitems(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytitemsiscCs |jdS(Nukeys(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytkeyskscCs |jdS(Nuvalues(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytvaluesmscGs|jd|S(Nuupdate(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytupdateoscGs|jd|S(Nupop(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytpopqscGs|jd|S(Nupopitem(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytpopitemss(t__name__t __module__RR#R$RR%R&R'R(R)R+R,R-R.R/R0R1(((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRIs               tlazylistcBskeZdZdZdZdZdZdZdZdZ dZ d Z d Z RS( cCsdS(N((R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRxscGs]tj|dkrG|jt||tjtt||ntt|||S(u~ If the list is empty, calls lazylist.load(). Replaces lazylist.method() with list.method() and calls it. i(tlistRRRRRR (RR!R"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR#}s (cCs |jdS(Nu__repr__(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR$scCs |jdS(Nu__len__(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRscCs |jdS(Nu__iter__(R#(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR%scGs|jd|S(Nu __contains__(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR&scGs|jd|S(Nuinsert(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytinsertscGs|jd|S(Nuappend(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytappendscGs|jd|S(Nuextend(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytextendscGs|jd|S(Nuremove(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytremovescGs|jd|S(Nupop(R#(RR"((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR0s( R2R3RR#R$RR%R&R6R7R8R9R0(((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR4vs         u universaluNNuVBuJJuRBuPRuDTuPPuNOuCJuUHuPTu.uXc CsB|jd4r0|dt|jddffS|d5krF|tfS|d6kr\|tfS|d7krr|tfS|d8kr|tfS|d9kr|tfS|d:kr|tfS|d;kr|tfS|d<kr|t fS|d=kr|t fS|d>kr |t fS|d?kr"|t fS|d@kr8|t fS|tfS(AuR Returns a (token, tag)-tuple with a simplified universal part-of-speech tag. uNNP-uNNPS-u%s-%su-iuNNuNNSuNNPuNNPSuNPuMDuVBuVBDuVBGuVBNuVBPuVBZuJJuJJRuJJSuRBuRBRuRBSuWRBuPRPuPRP$uWPuWP$uDTuPDTuWDTuEXuINuCDuCCuUHuPOSuRPuTOuSYMuLSu.u!u?u,u:u(u)u"u#u$(uNNP-uNNPS-(uNNuNNSuNNPuNNPSuNP(uMDuVBuVBDuVBGuVBNuVBPuVBZ(uJJuJJRuJJS(uRBuRBRuRBSuWRB(uPRPuPRP$uWPuWP$(uDTuPDTuWDTuEX(uIN(uCD(uCC(uUH(uPOSuRPuTO( uSYMuLSu.u!u?u,u:u(u)u"u#u$(t startswithtNOUNtsplittVERBtADJtADVtPRONtDETtPREPtNUMtCONJtINTJtPRTtPUNCtX(ttokenttag((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytpenntreebank2universals6!                        u(\S+)\su.,;:!?()[]{}`''"@#$^&*+-|=~_ua.uadj.uadv.ual.ua.m.uc.ucf.ucomp.uconf.udef.ued.ue.g.uesp.uetc.uex.uf.ufig.ugen.uid.ui.e.uint.ul.um.uMed.uMil.uMr.un.un.q.uorig.upl.upred.upres.up.m.uref.uv.uvs.uw/u ^[A-Za-z]\.$u^([A-Za-z]\.)+$u^[A-Z][u|ubcdfghjklmnpqrstvwxzu]+.$u<3u♥uloveg?u>:Du:-Du:Du=-Du=DuX-Dux-DuXDuxDu8-Dugrinu>:Pu:-Pu:Pu:-pu:pu:-bu:bu:c)u:o)u:^)utauntg?u>:)u:-)u:)u=)u=]u:]u:}u:>u:3u8)u8-)usmileg?u>;]u;-)u;)u;-]u;]u;Du;^)u*-)u*)uwinkg?u>:ou:-Ou:Ou:ou:-ouo_Ouo.Ou°O°u°o°ugaspg?u>:/u:-/u:/u:\u>:\u:-.u:-su:su:Su:-Su>.>uworrygпu>:[u:-(u:(u=(u:-[u:[u:{u:-=scss0|]&}t|dkrdj|VqdS(iu N(tlentjoin(RMts((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys Bscss!|]}tjd|VqdS(u(!)N(t RE_SARCASMtsub(RMRQ((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys CscSs&|jdjdd|jdS(Niu ui(tgrouptreplace(tm((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytEs(u.N(u'u"(ttupleRUR5R,treRSR RRLtTOKENtfindallROR:R7tendswithtrstriptRE_ABBR1tmatchtNonetRE_ABBR2tRE_ABBR3R8treversedtcountt RE_EMOTICONS(tstringt punctuationt abbreviationsRUt linebreaktatbttokensRNttailt sentencestitjRQ((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt find_tokenssv          .1"  %u;;;ccsD|r:t|tr`tjj|r`trHtj|ddd}qt|ddd}nHt|tr~|j}n*t |dr|j j}n|}xt |D]~\}}|dkrt|t r|j tjn|}|j }t|}| s|r.|j|r.qn|VqWntdS(u Returns an iterator over the lines in the file at the given path, stripping comments and decoding each line to Unicode. urR uutf-8ureadiN(R RtostpathtexistsRtcodecstopent splitlinesthasattrtreadt enumerateRtstriptBOM_UTF8t decode_utf8R:t StopIteration(RsR tcommenttfRotline((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt_readSs$!3   tLexiconcBsJeZdddddddZdZedZedZRS(uuNNPcCs[||_||_t|d||_t|d||_t|d|d||_dS(u A dictionary of words and their part-of-speech tags. For unknown words, rules for word morphology, context and named entities can be used. RsRJN(t_patht _languaget Morphologyt morphologytContexttcontexttEntitiestentities(RRsRRRtNNPtlanguage((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt__init__rs   cCs'tj|dt|jDdS(Ncss.|]$}|jr|jdd VqdS(u iN(R{R<(RMtx((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys ~s(RR/RR(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR|scCs|jS(N(R(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsscCs|jS(N(R(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsN(R2R3R`RRtpropertyRsR(((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRps tRulescBs eZiidZdZRS(cCs|||_|_dS(N(tlexicontcmd(RRR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRscCs|S(u@ Applies the rule to the given token or list of tokens. ((RR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytapplys(R2R3RR(((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsRcBsbeZiddZedZdZd d dZdd dZdZ gdZ RS( uc Cs[d }tj|t}|jd t|jDtj|||||_d S( uD A list of rules based on word morphology (prefix, suffix). ucharuhasprefuhassufuaddprefuaddsufu deleteprefu deletesufugoodleftu goodrightcss%|]\}}d||fVqdS(ufN((RMtkR ((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys sN( ucharuhasprefuhassufuaddprefuaddsufu deleteprefu deletesufugoodleftu goodright( RtfromkeysRR/R5R,RRR(RRRsR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRs#cCs|jS(N(R(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsscCs'tj|dt|jDdS(Ncss|]}|jVqdS(N(R<(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys s(R5R8RR(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsc Cs|d}x |D]}|d|jkrctd|d|d|djf\}}}} n|d|jkrtd|d|d|djjdf\}}}} n|r|d|dkrqn| dkr||ks| dkr |j|s| dkr&|j|s| d krE|||jks| d krd|||jks| d kr|j|r|t||jks| d kr|j|r|t| |jks| d kr||dks| dkr||dkr||ds(R5R8RR(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsc Cs2d"gd}|||}xt|D]\}}x|D]}|ddkrWq;n|d|dkr|ddkrq;n|d|dt|dkr|dnd}}} |j}|d kr|||ddks|d kr |||ddks|d kr1|||ddks|d krU|||ddks|d kr|||dd||ddfks|dkr|||dd||ddfks|dkr|||dd||dd||ddfks|dkrK|||dd||dd||ddfks|dkr|||ddkr| ||ddks|dkr|||ddks|dkr|||ddks|dkr|||ddks|dkr)|||dd||ddfks|dkr_|||dd||ddfks|dkr|||ddkr| ||ddks|dkr|||ddkr| ||ddks|dkr|||ddkr| ||ddks|dkrO|||ddkrO| ||ddks|dkr|||ddkr| ||ddks|dkr|||ddkr| ||ddks|dkr|||ddkr| ||ddks|dkr?|||ddkr?| ||ddks|dkr{|||ddkr{| ||ddks|d kr|||ddkr| ||ddks|d!kr;|||ddkr;| ||ddkr;||d|dg|| unexttaguN(R<R4R6(RRottag1ttag2RRR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR6<s  cOs!|jt|d||dS(Ni(R6RO(RR"R*((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR7FscCs"x|D]}|j|qWdS(N(R7(RRR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR8Is N( R2R3RRRsRRR`R6R7R8(((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRs"  * u^http://u#^www\..*?\.[com|org|net|edu|de|uk]$u#^[\w\-\.\+]+@(\w[\w\-]+\.)+[\w\-]+$RcBsPeZidddZedZdZdZddZdZRS( uuNNPcCs/d}tj|||||_||_dS(u A dictionary of named entities and their labels. For domain names and e-mail adresses, regular expressions are used. upersulocuorgN(upersulocuorg(RRRRJ(RRRsRJR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRTs  cCs|jS(N(R(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsascCscx\t|jD]K}g|jD]}|j^q#}tj||dgj|qWdS(Ni(RRsR<RRR)R7(RR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRes%c Csd}x|t|kr||dj}tj|s\tj|s\tj|rp|j||ds(RRrRsRtRtparsetgetrootR[RR`RtattribR+RR)R7RRR,R5RR.RR/RR(RRstwordstsynsetstlabelstxmlRRtpRQRotlabelRRRtid((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRsD  $-!(  # (7-cCst|jd}|jd s|tkr=d|}n|tkrVd|}n|tkrod|}n|tkrd|}qntj|dkr|j nt |j j |d d S( u Returns a (polarity, subjectivity)-tuple for the given synset id. For example, the adjective "horrible" has id 193480 in WordNet: Sentiment.synset(193480, pos="JJ") => (-0.6, 1.0, 1.0). iun-uv-ua-ur-igi(un-uv-ua-ur-(gg( RtzfillR:R;R=t ADJECTIVEtADVERBRRRRXRR+(RRR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR s        c sdd}tdrQjdf|jjdjdg}nttrtj rjdf|jjdjdg}nttr|j ddj |j j D|}nytdr|j d tD|}nEtd rM|j d jD|}ntd r|j jpwjjjd ff|}ntdr|j tdD|}|jdfdnttr-|j tdD|}|jdfdn4ttr[|j dD|}ng}|jdd}td|g|D]\}}} ||f^q|d|g|D]\}}} |f^q|d|S(u Returns a (polarity, subjectivity)-tuple for the given sentence, with polarity between -1.0 and 1.0 and subjectivity between 0.0 and 1.0. The sentence can be a string, Synset, Text, Sentence, Chunk, Word, Document, Vector. An optional weight parameter can be given, as a function that takes a list of words and returns a weight. cSsdS(Ni((R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRW$scSs[d\}}x8|D]0\}}||}|||7}||7}qW|t|pVdS(Nii(ii(R(RtweightedRQtnRtscoreR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR$s   uglossiRcss!|]}|jdfVqdS(N(RR`(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys 7su u sentencescss4|]*}|jp|jj|jd fVqdS(iN(tlemmaRfRR(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys :sulemmatacss4|]*}|jp|jj|jd fVqdS(iN(RRfRR(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys =sulemmaiutermscss!|]}|dfdfVqdS(N(NN(R`(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys Fsuweightcsj|dS(Ni(tterms(R(RQ(sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRWGscss!|]}|dfdfVqdS(N(NN(R`(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys Jscs |dS(Ni((R(RQ(sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRWKscss|]}|dfVqdS(N(R`(RMR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys NscSsdS(Ni((R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRWQsRRRN(N(N(RxtsynonymsRRRR`R Rt RE_SYNSETR_RRPRR<RRRRfRR)RR5R+R( RRQtnegationR*RRjtweightRRR((RQsd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt__call__s4 337%"7"":4cCsg}d}d}x1|D])\}}|dkr7qn||kr!|||kr!|||\}} } |dkr|jtd|gd|d| d| ddd|jj|n|dk rb|dd j|td t||dd d |dd [["The", "DT"], ["cat", "NN"], ["purs", "VB"]] Words are tagged using the given lexicon of (word, tag)-items. Unknown words are tagged NN by default. Unknown words that start with a capital letter are tagged NNP (unless language="de"). Unknown words that consist only of digits and punctuation marks are tagged CD. Unknown words are then improved with morphological rules. All words are improved with contextual rules. If a model is given, uses model for unknown words instead of morphology and context. If map is a function, it is applied to each (token, tag) after applying all rules. iiudeiuenN(NN(NN(( RzR7R+RR`ROtunknownRtistitletCDR_RR5(RlRtmodelRRRtdefaultRRR*RRoRIRJtprevR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt find_tagss8 D  - " &   Au/u.NN|NNS|NNP|NNPS|NNPS?\-[A-Z]{3,4}|PR|PRP|PRP\$uVB|VBD|VBG|VBN|VBP|VBZu JJ|JJR|JJSu(? The/DT/B-NP nice/JJ/I-NP fish/NN/I-NP is/VBZ/B-VP dead/JJ/B-ADJP ././O ucss%|]\}}d|tfVqdS(u%s%sN(t SEPARATOR(RMRIRJ((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys "sucauesuptufruituroiiiuCCuCJuKONu Conj(neven)uB-uI-cSst|dkS(Ni(RO(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRW9suOuRBuB-NPuJJuB-ADVPi(ucauesuptufruitupturo(uCCuCJuKONu Conj(neven)(RPtCHUNKStinttfinditertstartRdRRTRROR7tfilterRzR:(RRRtchunkedttagsRJtruleRVRoRpRRtchinkRtchunk((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt find_chunkss0#    $"2cCsMx|D]}|jdqWx(t|D]\}}|djdr+|ddkr+|t|dkrE||ddjd s||ddd krEd |d}g|D]+}g|D]}|jdd^qd^qW^qJ}djd|D}ntj||}t||_||_|S(u Unicode string with tags and language attributes. For example: TaggedString("cat/NN/NP", tags=["word", "pos", "chunk"]). utagsu/u&slash;u css(|]}djd|DVqdS(u css|]}dj|VqdS(u/N(RP(RMRI((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys sN(RP(RMRQ((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys s( R RRxRRR5RURPR(RRfRRRQRIR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR sK c Cs|tkrtj||St|dkr2gSgtj|dD]P}g|jdD]4}g|jdD]}|jdd^qq^q[^qES(u Returns a list of sentences, where each sentence is a list of tokens, where each token is a list of word + tags. iu u u/u&slash;(tTOKENSRR<RORU(RtseptsentenceRIR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR<s  N(R2R3R`RR R<(((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR stSpellingcBszeZdZddZdZedZedZeddZ dZ d Z gd Z d Z RS( uabcdefghijklmnopqrstuvwxyzucCs ||_dS(N(R(RRs((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR.scCsKxDt|jD]3}|j}tj||dt|dqWdS(Nii(RRR<RR(R(RR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR1s cCs|jS(N(R(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyRs6scCs|jS(N(R(R((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR:su spelling.txtcCsi}xDtjd|jD]*}||kr?||dpBd||Fsu uwN( RYR[RtsortedR,RPRvtwritetclose(RRQRsRRR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyttrain>s( c CsEgtt|dD]}|| ||f^q}g|D] \}}|r>||d^q>g|D]<\}}t|dkrh||d|d|d^qhg|D]4\}}tjD]}|r|||d^qqg|D].\}}tjD]}|||d^qqf\}}} } t||| | S(uJ Returns a set of words with edit distance 1 from the given word. iii(RROR tALPHAtset( RRRoR<RjRktctdeletet transposeRUR6((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt_edit1Ls 7*F>Jcs#tfdj|DS(uI Returns a set of words with edit distance 2 from the given word c3s7|]-}j|D]}|kr|VqqdS(N(R(RMte1te2(R(sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys _s(RR(RR((Rsd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt_edit2Zscstfd|DS(uB Returns the given list of words filtered by known words. c3s!|]}|kr|VqdS(N((RMR(R(sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys ds(R(RR((Rsd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyt_knownascst|dkr|jnt|dkr>|dfgS|tkrW|dfgS|tjkrs|dfgS|jddjr|dfgS|j|gp|j|j|p|j|j |p|g}g|D]}|j |d|f^q}t t d|Dp*dt fd|Dd t}|jrg|D]\}}|j|f^qe}n%g|D]\}}||f^q}|S( u Return a list of (word, confidence) spelling corrections for the given word, based on the probability of known words with edit distance 1-2 from the given word. iig?u.ugcss|]\}}|VqdS(N((RMRR((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys ysc3s%|]\}}||fVqdS(N((RMRR(RQ(sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pys zstreverse(RORRRft whitespaceRUtisdigitRRRR+RRR RRttitle(RRt candidatesRRR((RQsd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pytsuggestfs*       +"" .%(R2R3RRRRRsRt classmethodRRRRR (((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyR *s     (u&slash;uwordupart-of-speechuchunku prepositionurelationuanchorulemma(uNNuVBuJJuRBuPRuDTuPPuPPuNOuCJuUHuPTu.uX(%ua.uadj.uadv.ual.ua.m.uc.ucf.ucomp.uconf.udef.ued.ue.g.uesp.uetc.uex.uf.ufig.ugen.uid.ui.e.uint.ul.um.uMed.uMil.uMr.un.un.q.uorig.upl.upred.upres.up.m.uref.uv.uvs.uw/(u<3u♥( u>:Du:-Du:Du=-Du=DuX-Dux-DuXDuxDu8-D( u>:Pu:-Pu:Pu:-pu:pu:-bu:bu:c)u:o)u:^)( u>:)u:-)u:)u=)u=]u:]u:}u:>u:3u8)u8-)( u>;]u;-)u;)u;-]u;]u;Du;^)u*-)u*)( u>:ou:-Ou:Ou:ou:-ouo_Ouo.Ou°O°u°o°( u>:/u:-/u:/u:\u>:\u:-.u:-su:su:Su:-Su>.>(uworrygп( u>:[u:-(u:(u=(u:-[u:[u:{u:-R?R@RARBtADPRCRDRERFRGRHRKtcompileRZRRgRRRhR^RaRPRbRR.R R RtescapeReRRRRLRqRRRRRRRRRRRRRRRRXRRRRR`RRtNNtVBtJJtRBRR6R0RRtPTBtPENNRR RR (((sd/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/textblob/textblob/_text.pyts     ."    -00 !    Q S NhV   !72"*B**#!! ) ; !