o
     ¢i  ã                   @   s@   d dl mZmZmZ ddlmZ ddlmZ G dd„ deƒZdS )é    )ÚDictÚListÚTupleé   )Ú
Lemmatizer)ÚTokenc                	       s  e Zd ZdZededeee ee f f‡ fdd„ƒZde	dee fdd„Z
d	ed
edeeef dee fdd„Zd	ed
edeeef dee fdd„Zd	ed
edeeef dee fdd„Zd	ed
edeeef dee fdd„Zd	ed
edeeef dee fdd„Z‡  ZS )ÚItalianLemmatizera,  This lemmatizer was adapted from the Polish one (version of April 2021).
    It implements lookup lemmatization based on the morphological lexicon
    morph-it (Baroni and Zanchetta). The table lemma_lookup with non-POS-aware
    entries is used as a backup for words that aren't handled by morph-it.ÚmodeÚreturnc                    s$   |dkrg d¢}|g fS t ƒ  |¡S )NÚ
pos_lookup)Úlemma_lookup_numÚlemma_lookup_detÚlemma_lookup_adpÚlemma_lookup_adjÚlemma_lookup_nounÚlemma_lookup_pronÚlemma_lookup_verbÚlemma_lookup_auxÚlemma_lookup_advÚlemma_lookup_otherÚlemma_lookup)ÚsuperÚget_lookups_config)Úclsr	   Úrequired©Ú	__class__© úL/home/ubuntu/.local/lib/python3.10/site-packages/spacy/lang/it/lemmatizer.pyr      s   z$ItalianLemmatizer.get_lookups_configÚtokenc                 C   s  |j }|j}|j ¡ }| ¡ }|dkrd}n|dkrd}| j d| i ¡}|dkr0|  |||¡S |dkr8| ¡ }|dkrC|  |||¡S |dkrN|  	|||¡S |d	krY|  
|||¡S |d
krd|  |||¡S | |d¡}|sx| j d¡}| |d¡}|sˆ| j d¡}| || ¡ ¡}|gS )NÚPROPNÚnounÚPARTÚpronÚlemma_lookup_ÚNOUNÚDETÚPRONÚADPÚADJÚ r   r   )ÚtextÚpos_ÚmorphÚto_dictÚlowerÚlookupsÚ	get_tableÚlemmatize_nounÚlemmatize_detÚlemmatize_pronÚlemmatize_adpÚlemmatize_adjÚget)Úselfr   ÚstringÚuniv_posÚ
morphologyÚ
lookup_posÚlookup_tableÚlemmar   r   r   Úpos_lookup_lemmatize!   s>   
ÿz&ItalianLemmatizer.pos_lookup_lemmatizer9   r;   r=   c                 C   s*   |dv rdgS |dv rdgS |  ||¡gS )N)úl'ÚloÚlaÚiÚgliÚleÚil©zun'ÚunÚunaÚuno©r7   ©r8   r9   r;   r=   r   r   r   r3   D   s
   zItalianLemmatizer.lemmatize_detc                 C   sL   |dv rdgS |dv rdgS |  ||¡}|dkrd}|gS |dkr#d}|gS )	N)r@   ÚlirB   rD   rE   rA   rG   rJ   ÚalcunÚalcunoÚqualcunÚqualcunorK   ©r8   r9   r;   r=   r>   r   r   r   r4   T   s   þz ItalianLemmatizer.lemmatize_pronc                 C   s   |dkrdgS |  ||¡gS )Nzd'ÚdirK   rL   r   r   r   r5   h   s   zItalianLemmatizer.lemmatize_adpc                 C   s0   |  ||¡}|dkrd}|gS |dkrd}|gS )NrN   rO   rP   rQ   rK   rR   r   r   r   r6   o   s   þzItalianLemmatizer.lemmatize_adjc                 C   sP   ||  ¡ kr!|  ¡ |v r||  ¡  gS ||v r|| gS |  ¡ gS | ||¡gS )N)r/   r7   rL   r   r   r   r2   y   s   

z ItalianLemmatizer.lemmatize_noun)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚstrr   r   r   r   r?   Údictr   r3   r4   r5   r6   r2   Ú__classcell__r   r   r   r   r      sd    (#ÿÿ
ÿ
þÿÿ
ÿ
þÿÿ
ÿ
þÿÿ
ÿ
þ
ÿÿ
ÿþr   N)	Útypingr   r   r   Úpipeliner   Útokensr   r   r   r   r   r   Ú<module>   s    