o
    iL	                     @   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}fdd}| j   dsttj fdd|D  fdd|D } jjd	} jjd
}d}d}t| D ]K\}	}
|	|k rMqD||
s[|
j	|kr||
j
r|
j}|
jD ]}|j	|v rn|jj} nqa||krtqD|
j}|
jD ]
}|j	|v r|j}qz|}||d |fV  qDdS )zMDetect base noun phrases from a dependency parse. Works on both Doc and Span.)apposnsubjz	nsubj:copobjoblROOT)	amodcompoundzcompound:nnz	flat:namenmodz	nmod:gobjz
nmod:gsubjz	nmod:possnummodc                    s$   | j ttfv o| j v p| jj tkS )N)posr   r	   depheadr   )word)np_deps R/home/ubuntu/.local/lib/python3.10/site-packages/spacy/lang/fi/syntax_iterators.pypotential_np_head   s   z&noun_chunks.<locals>.potential_np_headDEPc                       g | ]} j j| qS r   vocabstrings.0labeldocr   r   
<listcomp>'       znoun_chunks.<locals>.<listcomp>c                    r    r   r!   r$   r'   r   r   r)   (   r*   NPconjr      N)r(   has_annotation
ValueErrorr   E029r"   r#   add	enumerater   r   ilefts	left_edgerights)r   labelsextend_labelsr   extend_depsnp_label
conj_labelrbracketprev_endr4   r   lbracketldeprdepr   )r(   r   r   noun_chunks   sF   





rB   N)typingr   r   r   errorsr   symbolsr   r   r	   tokensr
   r   intrB   SYNTAX_ITERATORSr   r   r   r   <module>   s    (H