o
    i                     @   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                 #   s$   g d}g d}| j   dsttj fdd|D } fdd|D } jjd} jjd} jjd	} jjd
} jjd}	 jjd}
 jjd}d}t| D ]\}}|j	t
ttfvrlq_|jj|krsq_|j|v rt|j}|r|d nd}|r|j|kr|j}n|j|kr|j	|kr|}n|j|v r|j}n|}n|}|j}|jj}|jj	|	kr|d n|}||jd |fV  q_|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  q_d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DEPc                       h | ]	} j j|qS  vocabstringsadd).0labeldocr   R/home/ubuntu/.local/lib/python3.10/site-packages/spacy/lang/pt/syntax_iterators.py	<setcomp>       znoun_chunks.<locals>.<setcomp>c                    r   r   r   )r   modifierr!   r   r#   r$      r%   NPamoddet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np_deps	np_modifsnp_label	adj_label	det_labeldet_pos	adp_labelr,   conj_posprev_endr6   wordright_childsright_child	right_end
left_indexr;   r   r!   r#   noun_chunks   sf   





rL   N)typingr   r   r   errorsr   symbolsr   r   r	   tokensr
   r   intrL   SYNTAX_ITERATORSr   r   r   r#   <module>   s    (M