U C^@s^ddlmZmZmZmZmZmZmZmZm Z ddl m Z Gddde Z ddZ dddZd S) ) ADJDETNOUNNUMPRONPROPNPUNCTVERBPOS) LemmatizercsBeZdZdZd fdd Zd ddZeddZd dd ZZ S) UkrainianLemmatizerNc s\tt||z&ddlm}tjdkr4|ddt_Wn ttfk rVtdYnXdS)N) MorphAnalyzeruk)langzThe Ukrainian lemmatizer requires the pymorphy2 library and dictionaries: try to fix it with "pip uninstall pymorphy2" and"pip install git+https://github.com/kmike/pymorphy2.git pymorphy2-dicts-uk")superr __init__Z pymorphy2r_morph ImportError TypeError)selfZlookupsr __class__;/tmp/pip-install-6_kvzl1k/spacy/spacy/lang/uk/lemmatizer.pyr s  zUkrainianLemmatizer.__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)rrrrrrr )rrcSsg|] }|jqSr normal_form.0analysisrrr /sz0UkrainianLemmatizer.__call__..)rrrrCaseNumberGenderrrPersonAspectMoodTenseVerbFormVoicecSsg|] }|jqSrrrrrrr!Qs)normalize_univ_pos PUNCT_RULESgetlowerrparseZis_knownoc2udstrtagappendlenr listset) rstringuniv_pos morphologyanalysesZfiltered_analysesr Z analysis_pos_Zfeatures_to_compareZanalysis_morphZfeaturerrr__call__sd            zUkrainianLemmatizer.__call__cCsJt|tr|Stdtdtdtdtdtdt dt di}||krF||SdS) Nrrrrrrrr ) isinstancer1upperrrrrrrrr )r8Zsymbols_to_strrrrr+Ss,  z&UkrainianLemmatizer.normalize_univ_poscCs&|j|}t|dkr"|djS|S)Nrr )rr/r4r)rr7Zorthr:rrrlookupfs   zUkrainianLemmatizer.lookup)N)N)N) __name__ __module__ __qualname__rrr< staticmethodr+r? __classcell__rrrrr s  < r c 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