U C^H@svddlmZddlmZmZmZmZmZmZm Z m Z m Z ddl m Z ddlmZGddde Zdd Zd d d Zd S) )unicode_literals) ADJDETNOUNNUMPRONPROPNPUNCTVERBPOS) Lemmatizer)unicode_csBeZdZdZd fdd Zd ddZeddZd dd ZZ S) RussianLemmatizerNcsTtt||zddlm}Wntk r<tdYnXtjdkrP|t_dS)Nr) MorphAnalyzerzThe Russian lemmatizer requires the pymorphy2 library: try to fix it with "pip install pymorphy2==0.8" or "pip install git+https://github.com/kmike/pymorphy2.git pymorphy2-dicts-uk"if you need Ukrainian too)superr__init__Z pymorphy2r ImportError_morph)selfZlookupsr __class__;/tmp/pip-install-6_kvzl1k/spacy/spacy/lang/ru/lemmatizer.pyr s  zRussianLemmatizer.__init__c Cs||}|dkr t||gS|dkr2|gS|j|}g}|D]@}|jsRqFtt|j \}}||ks||dkrF|dkrF| |qFt |s|gS|dkst |dkrt |krt tdd|DS|dkrdd d g} n<|d krdd g} n*|d kr dd d d g} ndd dd dddg} |g}}|D]b}tt|j \}} | D]:} | |krD| | krD|| | | krDq*qD| |q*t |s|gSt tdd|DS)Nr )rrrrrr r )rr cSsg|] }|jqSr normal_form.0analysisrrr 2sz.RussianLemmatizer.__call__..)rrrr CaseNumberGenderrrPersonAspectMoodTenseVerbFormVoicecSsg|] }|jqSrrrrrrr Ts)normalize_univ_pos PUNCT_RULESgetlowerrparseZis_knownoc2udstrtagappendlenr listset) rstringuniv_pos morphologyanalysesZfiltered_analysesrZ analysis_pos_Zfeatures_to_compareZanalysis_morphZfeaturerrr__call__sd            zRussianLemmatizer.__call__cCsJt|tr|Stdtdtdtdtdtdt dt di}||krF||SdS) Nrrrrrr r r ) isinstancerupperrrrrrr r r )r7Zsymbols_to_strrrrr*Vs,  z$RussianLemmatizer.normalize_univ_poscCs&|j|}t|dkr"|djS|S)Nrr)rr.r3r)rr6Zorthr9rrrlookupis   zRussianLemmatizer.lookup)N)N)N) __name__ __module__ __qualname__rrr; staticmethodr*r> __classcell__rrrrr s  < rc Csdddddddddddd d d d d dddd ddddddddddddddddd ddddd d!d"dd#d$d%d&d'd(d)id*d+d,d+d*d-d.d/d0d1d2d2d3d4d5d6d6d7d8d9d:d;d}d?}t}t}|d@dAdA}|D]X}dB}t|D]4\}} || krdC}|dDkr| |}q| |||<q|s||qt|dEkr|}|dFkrbdG}n"|dHkrrdI}n|dJkrs ,  gU