
    i4                     x    d dl mZmZmZ ddlmZ ddl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Zd	eiZy
)    )IteratorTupleUnion   )Errors)NOUNPRON)DocSpandoclikereturnc              #     K   | j                   j                  d      st        t        j                        j                  d      st        t        j
                        dD cg c]  }j                  j                  |    c}dD cg c]  }j                  j                  |    }}j                  j                  j                  d      }d}t        t        d |             D ]  \  }}|j                  t        k(  rt        fd|j                        }t        |d	      }|At        fd
|j                        }	|	D 
cg c]  }
|
j                   c}
|j                  gz   }t!        |      }||k\  st#        |      dz   }|||f |j                  t$        k(  s|j&                  |v s|j                  }||k\  s|j                  dz   }|||f  y	c c}w c c}w c c}
w w)z
    Detect base noun phrases from a dependency parse. Works on Doc and Span.
    The definition is inspired by https://www.nltk.org/book/ch07.html
    Consider : [Noun + determinant / adjective] and also [Pronoun]
    POSDEP)amodz	nmod:possdetzdet:poss)nsubjz
nsubj:passNPc                 2    | j                   t        t        fv S N)posr	   r   )xs    o/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/lang/nl/syntax_iterators.py<lambda>znoun_chunks.<locals>.<lambda>,   s    aeed|.C     c                 P    | j                   j                  j                  d   k(  S )Nr   )depvocabstrings)r   docs    r   r   znoun_chunks.<locals>.<lambda>3   s    !%%399#4#4W#== r   Nc                      | j                   v S r   )r   )r   	noun_depss    r   r   znoun_chunks.<locals>.<lambda>:   s    (: r      )r!   has_annotation
ValueErrorr   E1019E029r   r    add	enumeratefilterr   r   childrennextiminmaxr	   r   )r   labelpronoun_deps
span_labelend_spanr.   wordnsubjs	next_wordr,   c
children_i
start_spanr!   r#   s                @@r   noun_chunksr;      s     ++C e$&&e$%% /W%*		% I ;RRCII%%e,RLR ""&&t,J HV$CWMN ;4 88t =t}}F VT*I$:DMMJH'/0!!##0DFF8;JZJX%z?Q. (J66 XXxx<'!VV
)#vvzH$h
::9; S, 1sC   A%G5) G&	G5 G+0BG5G0 !G5)G5,G5;G5(G5r;   N)typingr   r   r   errorsr   symbolsr   r	   tokensr
   r   intr;   SYNTAX_ITERATORS r   r   <module>rC      sQ    ) )  ! @;sDy) @;huS#s]7K.L @;F ";/ r   