o
    iA                     @   sx   d dl mZmZmZ ddlmZ ddlmZmZm	Z	 ddl
mZmZ deeef deeeeef  fdd	Zd	eiZd
S )    )IteratorTupleUnion   )Errors)NOUNPRONPROPN)DocSpandoclikereturnc                 #   s0   g d}g d}ddg}| j   dsttj fdd|D } fdd|D } jjd	} jjd
} fdd|D } jjd}	 jjd}
 jjd} jjd}d}t| D ]\}}|j	t
ttfvrrqe|jj|kryqe|j|v rt|j}|r|d nd}|r|j|kr|j}n|j|v r|j	|	kr|}n|j|v r|j}n|}n|}|j}|jj}|jj	|
kr|d n|}||jd |fV  qe|j|kr|j}|j|kr|jj|jk r|j}|j|kr|jj|jk s|j|v r|j}|jj}|jj	|kr
|d n|}||jd |fV  qedS )zW
    Detect base noun phrases from a dependency parse. Works on both Doc and Span.
    )	nsubjz
nsubj:passobjoblz	obl:agentnmodpcompapposROOT)flatz	flat:namefixedcompounddetzdet:possDEPc                       h | ]	} j j|qS  vocabstringsadd).0labeldocr   R/home/ubuntu/.local/lib/python3.10/site-packages/spacy/lang/it/syntax_iterators.py	<setcomp>       znoun_chunks.<locals>.<setcomp>c                    r   r   r   )r    modifierr"   r   r$   r%      r&   NPamodc                    r   r   r   )r    r   r"   r   r$   r%       r&   DETADPconjCCONJr   N   )r#   has_annotation
ValueErrorr   E029r   r   r   	enumerateposr   r	   r   	left_edgeideplistrights
right_edgehead)r   labelspost_modifiersdetsnp_deps	np_modifsnp_label	adj_label
det_labelsdet_pos	adp_labelr,   conj_posprev_endr6   wordright_childsright_child	right_end
left_indexr;   r   r"   r$   noun_chunks   sh   





rM   N)typingr   r   r   errorsr   symbolsr   r   r	   tokensr
   r   intrM   SYNTAX_ITERATORSr   r   r   r$   <module>   s    (N