B Anð]Ãã@s`ddlmZddlmZmZmZmZmZmZddlm Z m Z m Z m Z Gdd„de ƒZdd„Zd S) é)Úunicode_literalsé)ÚPOSÚNOUNÚVERBÚADJÚPUNCTÚPROPN)Ú VerbForm_infÚ VerbForm_noneÚ Number_singÚ Degree_posc@sleZdZdZeddd„ƒZddd„Zddd„Zdd d „Zdd d „Z dd d„Z ddd„Z ddd„Z dd„Z dS)Ú Lemmatizerz The Lemmatizer supports simple part-of-speech-sensitive suffix rules and lookup tables. DOCS: https://spacy.io/api/lemmatizer NcCs|||||ƒS)N©)ÚclsÚpathÚindexÚexcÚrulesÚlookuprrús/home/app_decipher_dev_19-4/dev/decipher-analysis/serverless-application/helper/df_spacy/python/spacy/lemmatizer.pyÚloadszLemmatizer.loadcCs(||_||_||_|dk r|ni|_dS)N)rrrÚ lookup_table)ÚselfrÚ exceptionsrrrrrÚ__init__szLemmatizer.__init__cCsÈ|js|j ||¡gS|tddfkr*d}nX|tddfkr>d}nD|tddfkrRd}n0|tddfkrfd}n|td fkrx|gS| ¡gS|  ||¡r˜| ¡gSt ||j  |i¡|j  |i¡|j |g¡ƒ}|S) NrÚnounrÚverbrÚadjrÚpunctr ) rrÚgetrrrrr ÚlowerÚ is_base_formÚ lemmatizerr)rÚstringÚuniv_posÚ morphologyZlemmasrrrÚ__call__s*      zLemmatizer.__call__cCsÞ|dkr in|}dd„|Dƒ}|dkr8| d¡dkr8dS|dkrR| d ¡d krRdS|dkrŒ| d ¡d krŒ| d ¡d krŒ| d¡dkrŒ|sŒdS|dkr¦| d¡dkr¦dSt|kr²dSt|kr¾dSt|krÊdSt|krÖdSdSdS)z{ Check whether we're dealing with an uninflected paradigm, so we can avoid lemmatization entirely. NcSs"g|]}|tddddfkr|‘qS)ÚNumberrÚVerbFormÚTense)r)Ú.0Úkeyrrrú ;sz+Lemmatizer.is_base_form..rr(ZsingTrr)ÚinfÚfinr*ZpresrÚDegreeÚposF)r r r r r )rr%r&Úothersrrrr"4s0zLemmatizer.is_base_formcCs ||d|ƒS)Nrr)rr$r&rrrrYszLemmatizer.nouncCs ||d|ƒS)Nrr)rr$r&rrrr\szLemmatizer.verbcCs ||d|ƒS)Nrr)rr$r&rrrr_szLemmatizer.adjcCs ||d|ƒS)Nrr)rr$r&rrrrbszLemmatizer.punctcCs||jkr|j|S|S)N)r)rr$rrrres  zLemmatizer.lookup)NNNN)NNNN)N)N)N)N)N)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú classmethodrrr'r"rrrrrrrrrrs    %    rc CsÎ|}| ¡}g}g}xb|D]Z\}}| |¡r|dt|ƒt|ƒ…|} | sNq| |ks^|  ¡sj| | ¡q| | ¡qWtt|ƒƒ}x(| |g¡D]} | |kr’| d| ¡q’W|s¼|  |¡|sÊ| |¡|S)Nr) r!ÚendswithÚlenÚisalphaÚappendÚlistÚsetr ÚinsertÚextend) r$rrrÚorigZformsZ oov_formsÚoldÚnewÚformrrrr#ks*     r#N)Ú __future__rÚsymbolsrrrrrr r r r r Úobjectrr#rrrrÚs  c