
    Ng                     d    d dl mZ d dlmZ  G d de          Zd Zedk    r e             dS dS )    )chain)Counterc                       e Zd Zd Zd Zd Zd Zd ZddZd Z	e
d	             Ze
dd
            Ze
d             Zd Zd ZddZdS )
FStructurec                 N    || vrg | |<   | |                              |           dS )zo
        Append 'item' to the list at 'key'.  If no list exists for 'key', then
        construct one.
        N)append)selfkeyitems      H/var/www/html/ai-engine/env/lib/python3.11/site-packages/nltk/sem/lfg.py
safeappendzFStructure.safeappend   s4    
 d??DIS	    c                 b    t                               | |                                |           d S N)dict__setitem__lower)r	   r
   values      r   r   zFStructure.__setitem__   s(    syy{{E22222r   c                 \    t                               | |                                          S r   )r   __getitem__r   r	   r
   s     r   r   zFStructure.__getitem__   s     ciikk222r   c                 \    t                               | |                                          S r   )r   __contains__r   r   s     r   r   zFStructure.__contains__   s       syy{{333r   c                 T    |                                  }|                    |          S r   )to_depgraphto_glueformula_list)r	   	glue_dictdepgraphs      r   r   zFStructure.to_glueformula_list!   s'    ##%%,,X666r   Nc                    ddl m}  |            }|j        }|                     |dd           |                                D ]}\  }}d |                                D             D ]Y}|d         |k    rK|d         }|d                             |g            |d         |                             |d                    Z~|d	         |_        |S )
Nr   DependencyGraphROOTc              3   2   K   | ]}|d          dk    |V  dS )relTOPN ).0ns     r   	<genexpr>z)FStructure.to_depgraph.<locals>.<genexpr>/   s0      FFQAeH4E4Eq4E4E4E4EFFr   headr$   depsaddress   )	nltk.parse.dependencygraphr!   nodes_to_depgraphitemsvalues
setdefaultr   root)	r	   r$   r!   r   r/   r,   noden2relations	            r   r   zFStructure.to_depgraph%   s    >>>>>>"?$$%F+++ #[[]] 	A 	AMGTFF%,,..FFF A Af:((!%yHL++Hb999L*11"Y-@@@	A ar   c           
      j   t          |          }||                             || j        d         | j        d         ||d           t          |           D ]}t          | |                   D ]}t	          |t
                    r|                    |||           /t	          |t                    r=t          |          }||                             ||d         |d         ||d           t	          |t                    r|D ]}|                    |||           t          d|z            d S )Nr   r-   )r,   wordtagr*   r$   0feature %s is not an FStruct, a list, or a tuple)
lenupdatepredsorted
isinstancer   r0   tuplelist	Exception)	r	   r/   r*   r$   indexfeaturer   	new_indexr(   s	            r   r0   zFStructure._to_depgraph9   sy   E

e 	!y| 	
 	
 	
 d|| 	 	GtG}--  dJ// %%eUG<<<<e,,  #E

I)$++'0$(G#'7$)#*      d++ ! > >ueW====> $JWT  %	 	r   c                 B    t                               | j        |           S r   )r   _read_depgraphr4   )r   s    r   read_depgraphzFStructure.read_depgraph]   s    ((AAAr   c           
         |st                      }| d                                         dv r| d         | d         fS t                      }d |_        t                              |                                          |_        ||_        | d         | d         }}|d d         dk    r5|dd         dk    r|                    d	d
           ||d d         f|_        |j        s	||f|_        fdt          j
        | d                                                   D             }|D ]9}|                    |d         t                              |||                     :|S )Nr$   )specpunctr9   r:      VB   Dtense)PASTrQ   c                 *    g | ]}j         |         S r&   )r/   )r'   idxr   s     r   
<listcomp>z-FStructure._read_depgraph.<locals>.<listcomp>z   s0        s#  r   r+   )r   r   r   r>   _make_labelgetlabelparentr   r   from_iterabler2   rH   )	r5   r   label_counterrY   fstructr9   r:   childrenchilds	    `       r   rH   zFStructure._read_depgrapha   s    	&#IIM;"333L$u+.. !llGGL&22=3D3D3F3FGGGM#GNVd5k#D2A2w$qs8s??&&w0ABBB $c"1"g< + $c{    .tF|/B/B/D/DEE  H "  ""%L--eX}gVV   
 Nr   c                 t    g d| dz
           }t          |           dz  }|dk    r|t          |          z   S |S )z
        Pick an alphabetic character as identifier for an entity in the model.

        :param value: where to index into the list of characters
        :type value: int
        )fghijklmr(   opqrstuvwxyzabcder-      r   )intstr)r   letternums      r   rV   zFStructure._make_label   sR    
 
 
6 !)78 %jjB77CHH$$Mr   c                 R    |                                                      dd          S )N
 )__str__replacer	   s    r   __repr__zFStructure.__repr__   s     ||~~%%dB///r   c                 *    |                                  S r   )pretty_formatr   s    r   r   zFStructure.__str__   s    !!###r   rO   c                    	 d| j         z  }n# t          $ r d}Y nw xY w	 |d| j        d         z  z  }n# t          $ r Y nw xY wt          |           D ])}| |         D ]}t	          |t
                    r[|t          |          z   dz   t          | j                   z   }|d                    d|z  ||                    |                    z  }st	          |t                    r$|d                    d|z  ||d                   z  }t	          |t                    rK|d	                    d|z  |d
d|t          |          z   dz   z  z                      |                    z  }t          d|z            +|dz   S )Nz%s:[[z	pred '%s'r   rO   z
{}{} {} z

{}{} '{}'z
{}{} {{{}}}z
%srM   r;   ])rX   	NameErrorr>   r?   r@   r   r<   formatr   rA   rB   joinrC   )r	   indentaccumrE   r   next_indents         r   r   zFStructure.pretty_format   s   	TZ'EE 	 	 	EEE		[DIaL11EE 	 	 	D	 d|| 	 	GW  dJ// "(3w<<"7!";c$*oo"MK[//v**;77  EE
  e,, ]11#.'4PQ7SSSEEd++ 	_33v3&3w<<*?!*C#DEKKDQQ  EE $JWT  #( s{s   
 4 
A Ar   )NN)rO   )__name__
__module____qualname__r   r   r   r   r   r   r0   staticmethodrI   rH   rV   r   r   r   r&   r   r   r   r      s         3 3 33 3 34 4 47 7 7   (" " "H B B \B " " " \"H ' ' \'R0 0 0$ $ $     r   r   c                      ddl m}   | d          } | d          } | d          } | d          }||||g}|D ])}t          t                              |                     *d S )Nr   r    zEsso       NNP     2       SUB
said       VBD     0       ROOT
the        DT      5       NMOD
Whiting    NNP     5       NMOD
field      NN      6       SUB
started    VBD     2       VMOD
production NN      6       OBJ
Tuesday    NNP     6       VMOD
zUJohn    NNP     2       SUB
sees    VBP     0       ROOT
Mary    NNP     2       OBJ
zWa       DT      2       SPEC
man     NN      3       SUBJ
walks   VB      0       ROOT
zevery   DT      2       SPEC
girl    NN      3       SUBJ
chases  VB      0       ROOT
a       DT      5       SPEC
dog     NN      3       OBJ
)r.   r!   printr   rI   )r!   dg1dg2dg3dg4	depgraphsdgs          r   demo_read_depgraphr      s    ::::::
/		 C /	 C /	 C /	 C c3$I , ,j&&r**++++, ,r   __main__N)	itertoolsr   nltk.internalsr   r   r   r   r   r&   r   r   <module>r      s          " " " " " "G G G G G G G GT), ), ),X z r   