
    i                     F    d dl mZmZmZ ddlmZ ddlmZ  G d de      Zy)    )DictListTuple   )
Lemmatizer)Tokenc            	       *    e Zd ZdZededeee   ee   f   f fd       Zde	dee   fdZ
deded	eeef   dee   fd
Zdeded	eeef   dee   fdZdeded	eeef   dee   fdZdeded	eeef   dee   fdZdeded	eeef   dee   fdZ x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                 <    |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__s      i/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/lang/it/lemmatizer.pyr   z$ItalianLemmatizer.get_lookups_config   s.    <H b>!7-d33    tokenc                    |j                   }|j                  }|j                  j                         }|j	                         }|dk(  rd}n|dk(  rd}| j
                  j                  d|z   i       }|dk(  r| j                  |||      S |dk7  r|j	                         }|dk(  r| j                  |||      S |dk(  r| j                  |||      S |d	k(  r| j                  |||      S |d
k(  r| j                  |||      S |j                  |d      }|s-| j
                  j                  d      }|j                  |d      }|s;| j
                  j                  d      }|j                  ||j	                               }|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lemmas           r   pos_lookup_lemmatizez&ItalianLemmatizer.pos_lookup_lemmatize!   s   ::[[((*
^^%
wJJ||--o
.JBOv&&vz<HH7"5 ))&*lKKV#**6:|LLU"))&*lKKU"))&*lKK$((4<<112FGL $$VR0E<<11L !$$VV\\^<Ewr    r<   r>   r@   c                 D    |dv rdgS |dv rdgS |j                  ||      gS )N)l'lolaiglileilzun'ununaunor:   r;   r<   r>   r@   s       r   r6   zItalianLemmatizer.lemmatize_detD   s@      
 
 6M))7N  011r    c                 j    |dv rdgS |dv rdgS |j                  ||      }|dk(  rd}|gS |dk(  rd}|gS )	N)rD   lirF   rH   rI   rE   rK   rN   alcunalcunoqualcunqualcunorO   r;   r<   r>   r@   rA   s        r   r7   z ItalianLemmatizer.lemmatize_pronT   sh      
 
 6M))7N  0GE w iEwr    c                 8    |dk(  rdgS |j                  ||      gS )Nzd'dirO   rP   s       r   r8   zItalianLemmatizer.lemmatize_adph   s(     T>6M  011r    c                 N    |j                  ||      }|dk(  rd}|gS |dk(  rd}|gS )NrS   rT   rU   rV   rO   rW   s        r   r9   zItalianLemmatizer.lemmatize_adjo   sB       0GE w iEwr    c                     ||j                         k7  rA|j                         |v r||j                            gS ||v r||   gS |j                         gS |j                  ||      gS )N)r2   r:   rP   s       r   r5   z ItalianLemmatizer.lemmatize_nouny   so    
 V\\^#||~-$V\\^455<'$V,--LLN##  011r    )__name__
__module____qualname____doc__classmethodstrr   r   r   r   rB   dictr   r6   r7   r8   r9   r5   __classcell__)r   s   @r   r
   r
      sJ   N
 4c 4eDItCy4H.I 4 4&!% !DI !F22'+2;?S>2	c2 '+;?S>	c(22'+2;?S>2	c2'+;?S>	c22'+2;?S>2	c2r    r
   N)	typingr   r   r   pipeliner   tokensr   r
    r    r   <module>rh      s    $ $ " }2
 }2r    