§
    'ê[f‡&  ã                   óò  — d Z ddlZddlmZ ddlmZmZmZmZ ddl	m
Z
 ddlmZ  ej        d¦  «        Z ej        d¦  «        Z ej        d	¦  «        Z ej        d
ej        ¦  «        Z ej        dej        ¦  «        Z ej        dej        ¦  «        Z ej        d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Z e
d¦  «        d„ ¦   «         Z ed¦  «        Z dS )z
CCG Lexicons
é    N)Údefaultdict)ÚCCGVarÚ	DirectionÚFunctionalCategoryÚPrimitiveCategory)Ú
deprecated)Ú
Expressionz([A-Za-z]+)(\[[A-Za-z,]+\])?z"([A-Za-z]+(?:\[[A-Za-z,]+\])?)(.*)z([\\/])([.,]?)([.,]?)(.*)z([\S_]+)\s*(::|[-=]+>)\s*(.+)z([^{}]*[^ {}])\s*(\{[^}]+\})?z\{([^}]+)\}z([^#]*)(?:#.*)?c                   ó2   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ ZdS )	ÚTokenzÄ
    Class representing a token.

    token => category {semantics}
    e.g. eat => S\var[pl]/var {\x y.eat(x,y)}

    * `token` (string)
    * `categ` (string)
    * `semantics` (Expression)
    Nc                 ó0   — || _         || _        || _        d S ©N)Ú_tokenÚ_categÚ
_semantics)ÚselfÚtokenÚcategÚ	semanticss       úD/var/www/piapp/venv/lib/python3.11/site-packages/nltk/ccg/lexicon.pyÚ__init__zToken.__init__9   s   € ØˆŒØˆŒØ#ˆŒˆˆó    c                 ó   — | j         S r   )r   ©r   s    r   r   zToken.categ>   s
   € ØŒ{Ðr   c                 ó   — | j         S r   )r   r   s    r   r   zToken.semanticsA   s
   € ØŒÐr   c                 ó|   — d}| j         �dt          | j         ¦  «        z   dz   }dt          | j        ¦  «        z   |z   S )NÚ z {ú})r   Ústrr   )r   Úsemantics_strs     r   Ú__str__zToken.__str__D   sB   € ØˆØŒ?Ð&Ø ¥3 t¤Ñ#7Ô#7Ñ7¸#Ñ=ˆMØ•C˜œÑ$Ô$Ñ$ }Ñ4Ð4r   c                 ó²   — t          |t          ¦  «        sdS t          | j        | j        f|                     ¦   «         |                     ¦   «         ¦  «        S )Néÿÿÿÿ)Ú
isinstancer   Úcmpr   r   r   r   )r   Úothers     r   Ú__cmp__zToken.__cmp__J   sF   € Ý˜%¥Ñ'Ô'ð 	Ø�2Ý�D”K ¤Ð1°5·;²;±=´=À%Ç/Â/ÑBSÔBSÑTÔTÐTr   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r    r&   © r   r   r   r   -   ss   € € € € € ð	ð 	ð$ð $ð $ð $ð
ð ð ðð ð ð5ð 5ð 5ðUð Uð Uð Uð Ur   r   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )Ú
CCGLexiconzâ
    Class representing a lexicon for CCG grammars.

    * `primitives`: The list of primitive categories for the lexicon
    * `families`: Families of categories
    * `entries`: A mapping of words to possible categories
    c                 óX   — t          |¦  «        | _        || _        || _        || _        d S r   )r   Ú_startÚ_primitivesÚ	_familiesÚ_entries)r   ÚstartÚ
primitivesÚfamiliesÚentriess        r   r   zCCGLexicon.__init__Y   s+   € Ý'¨Ñ.Ô.ˆŒØ%ˆÔØ!ˆŒØˆŒˆˆr   c                 ó   — | j         |         S )z@
        Returns all the possible categories for a word
        )r2   )r   Úwords     r   Ú
categorieszCCGLexicon.categories_   s   € ð Œ}˜TÔ"Ð"r   c                 ó   — | j         S )z;
        Return the target category for the parser
        )r/   r   s    r   r3   zCCGLexicon.starte   s   € ð Œ{Ðr   c                 ó¢   — d}d}t          | j        ¦  «        D ]5}|s|dz   }||z   dz   }d}| j        |         D ]}|s|dz   }nd}|d|z  z   }ŒŒ6|S )zK
        String representation of the lexicon. Used for debugging.
        r   TÚ
z => z | Fz%s)Úsortedr2   )r   ÚstringÚfirstÚidentÚcats        r   r    zCCGLexicon.__str__k   s•   € ð ˆØˆÝ˜DœMÑ*Ô*ð 	-ð 	-ˆEØð 'Ø $™�Ø˜e‘^ fÑ,ˆFàˆEØ”} UÔ+ð -ð -�Øð "Ø# e™^�F�Fà!�EØ $¨¡*Ñ,��ð-ð ˆr   N)r'   r(   r)   r*   r   r9   r3   r    r+   r   r   r-   r-   P   sZ   € € € € € ðð ð ð  ð  ð#ð #ð #ðð ð ðð ð ð ð r   r-   c                 ó|  — | dd…         }d}|dk    rr|                      d¦  «        s]|                      d¦  «        rt          |¦  «        \  }}||z   }n||d         z   }|dd…         }|dk    r|                      d¦  «        ¯]|                      d¦  «        r|dz   |dd…         fS t          d| z   dz   ¦  «        ‚)	zb
    Separate the contents matching the first set of brackets from the rest of
    the input.
    é   Nú(r   ú)r   zUnmatched bracket in string 'ú')Ú
startswithÚmatchBracketsÚAssertionError)r>   ÚrestÚinsideÚparts       r   rH   rH   …   sÛ   € ð
 �!�"�"Œ:€DØ€Fà
�"Š*ˆ*˜TŸ_š_¨SÑ1Ô1ˆ*Ø�?Š?˜3ÑÔð 	Ý(¨Ñ.Ô.‰LˆT�4Ø˜d‘]ˆFˆFà˜d 1œgÑ%ˆFØ˜˜˜”8ˆDð �"Š*ˆ*˜TŸ_š_¨SÑ1Ô1ˆ*ð ‡‚�sÑÔð (Ø˜‘˜d 1 2 2œhÐ'Ð'Ý
Ð8¸6ÑAÀCÑGÑ
HÔ
HÐHr   c                 ó¢   — |                       d¦  «        rt          | ¦  «        S t                               | ¦  «                             ¦   «         S )zb
    Separate the string for the next portion of the category from the rest
    of the string
    rD   )rG   rH   ÚNEXTPRIM_REÚmatchÚgroups)r>   s    r   ÚnextCategoryrQ   ™   sH   € ð
 ×Ò˜ÑÔð %Ý˜VÑ$Ô$Ð$Ý×Ò˜VÑ$Ô$×+Ò+Ñ-Ô-Ð-r   c                 ó>   — t          | d         | dd…         ¦  «        S )z'
    Parse an application operator
    r   rC   N)r   )Úapps    r   ÚparseApplicationrT   £   s    € õ �S˜”V˜S   œWÑ%Ô%Ð%r   c                 óD   — | r| dd…                               d¦  «        S g S )z7
    Parse the subscripts for a primitive category
    rC   r"   ú,)Úsplit)Úsubscrs    r   ÚparseSubscriptsrY   ª   s-   € ð ð 'Ø�a˜�dŒ|×!Ò! #Ñ&Ô&Ð&Ø€Ir   c                 óB  — | d         dk    r| d         €|€t          ¦   «         }||fS | d         }||v r,||         \  }}|€|}n|                     ||fg¦  «        }||fS ||v r't          | d         ¦  «        }t          ||¦  «        |fS t	          d|z   dz   ¦  «        ‚)zƒ
    Parse a primitive category

    If the primitive is the special category 'var', replace it with the
    correct `CCGVar`.
    r   ÚvarrC   NzString 'z-' is neither a family nor primitive category.)r   Ú
substituterY   r   rI   )Úchunksr4   r5   r[   ÚcatstrrA   ÚcvarÚsubscrss           r   ÚparsePrimitiveCategoryra   ³   sÕ   € ð ˆa„y�EÒÐØ�!Œ9ÐØˆ{Ý‘h”h�Ø˜�:Ðà�AŒY€FØ�ÐÐØ˜vÔ&‰ˆˆdØˆ;ØˆCˆCà—.’. 4¨ + Ñ/Ô/ˆCØ�SˆzÐà�ÐÐÝ! &¨¤)Ñ,Ô,ˆÝ! &¨'Ñ2Ô2°CÐ8Ð8Ý
Ø�VÑÐMÑMñô ð r   c                 óê  — t          | ¦  «        \  }}|                     d¦  «        rt          |dd…         |||¦  «        \  }}n?t          t                               |¦  «                             ¦   «         |||¦  «        \  }}|dk    ræt                               |¦  «                             ¦   «         }t          |dd…         ¦  «        }|d         }t          |¦  «        \  }}|                     d¦  «        rt          |dd…         |||¦  «        \  }	}n?t          t                               |¦  «                             ¦   «         |||¦  «        \  }	}t          ||	|¦  «        }|dk    °æ||fS )z{
    Parse a string representing a category, and returns a tuple with
    (possibly) the CCG variable for the category
    rD   rC   r"   r   r   é   )
rQ   rG   ÚaugParseCategoryra   ÚPRIM_RErO   rP   ÚAPP_RErT   r   )
Úliner4   r5   r[   Ú
cat_stringrJ   ÚresrS   Ú	directionÚargs
             r   rd   rd   Ñ   ss  € õ
 & dÑ+Ô+Ñ€Z�à×Ò˜SÑ!Ô!ð 
Ý% j°°2°Ô&6¸
ÀHÈcÑRÔR‰
ˆˆcˆcõ ,Ý�MŠM˜*Ñ%Ô%×,Ò,Ñ.Ô.°
¸HÀcñ
ô 
‰
ˆˆcð �"Š*ˆ*Ý�lŠl˜4Ñ Ô ×'Ò'Ñ)Ô)ˆÝ$ S¨¨1¨¤XÑ.Ô.ˆ	Ø�1Œvˆå)¨$Ñ/Ô/Ñˆ�TØ× Ò  Ñ%Ô%ð 	Ý)¨*°Q°r°TÔ*:¸JÈÐRUÑVÔV‰JˆS�#�#å/Ý—’˜jÑ)Ô)×0Ò0Ñ2Ô2°JÀÈ#ñô ‰JˆS�#õ !  c¨9Ñ5Ô5ˆð �"Š*ˆ*ð �ˆ:Ðr   Fc                 ó  — t          j        ¦   «          g }i }t          t          ¦  «        }|                      ¦   «         D �]ª}t
                               |¦  «                             ¦   «         d                              ¦   «         }|dk    rŒN| 	                    d¦  «        r=|d„ |dd…                              ¦   «          
                    d¦  «        D ¦   «         z   }Œ t                               |¦  «                             ¦   «         \  }}}t                               |¦  «                             ¦   «         \  }	}
t          |	||¦  «        \  }}|dk    r	||f||<   �Œ"d}|d	u rX|
€t          |d
z   ¦  «        ‚t          j        t"                               |
¦  «                             ¦   «         d         ¦  «        }||                              t'          |||¦  «        ¦  «         �Œ¬t)          |d         |||¦  «        S )z@
    Convert string representation into a lexicon for CCGs.
    r   r   z:-c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r+   )Ústrip)Ú.0Úprims     r   ú
<listcomp>zfromstring.<locals>.<listcomp>  s-   € ð 'ð 'ð 'Ø!%�—
’
‘”ð'ð 'ð 'r   é   NrV   z::Tz@ must contain semantics because include_semantics is set to True)r   Úreset_idr   ÚlistÚ
splitlinesÚCOMMENTS_RErO   rP   rn   rG   rW   ÚLEX_REÚRHS_RErd   rI   r	   Ú
fromstringÚSEMANTICS_REÚappendr   r-   )Úlex_strÚinclude_semanticsr4   r5   r6   rg   r@   ÚsepÚrhsr^   r   rA   r[   r   s                 r   ry   ry   ñ   s  € õ „OÑÔÐØ€JØ€HÝ�$ÑÔ€GØ×"Ò"Ñ$Ô$ð %Dñ %Dˆå× Ò  Ñ&Ô&×-Ò-Ñ/Ô/°Ô2×8Ò8Ñ:Ô:ˆØ�2Š:ˆ:Øà�?Š?˜4Ñ Ô ð 	Dð $ð 'ð 'Ø)-¨a¨b¨b¬¯ªÑ)9Ô)9×)?Ò)?ÀÑ)DÔ)Dð'ñ 'ô 'ñ ˆJˆJõ
 !'§¢¨TÑ 2Ô 2× 9Ò 9Ñ ;Ô ;ÑˆU�C˜Ý&,§l¢l°3Ñ&7Ô&7×&>Ò&>Ñ&@Ô&@Ñ#ˆV�]Ý)¨&°*¸hÑGÔG‰JˆS�#à�dŠ{ˆ{ð $'¨ *�˜‘‘à �	Ø$¨Ð,Ð,Ø$Ð,Ý,Ø Ø`ñañô ð õ
 %/Ô$9Ý(×.Ò.¨}Ñ=Ô=×DÒDÑFÔFÀqÔIñ%ô %˜	ð
 ˜”×%Ò%¥e¨E°3¸	Ñ&BÔ&BÑCÔCÐCÑCÝ�j ”m Z°¸7ÑCÔCÐCr   zUse fromstring() instead.c                 ó    — t          | ¦  «        S r   )ry   )r|   s    r   ÚparseLexiconr�   "  s   € å�gÑÔÐr   a¡  
    # Rather minimal lexicon based on the openccg `tinytiny' grammar.
    # Only incorporates a subset of the morphological subcategories, however.
    :- S,NP,N                    # Primitive categories
    Det :: NP/N                  # Determiners
    Pro :: NP
    IntransVsg :: S\NP[sg]    # Tensed intransitive verbs (singular)
    IntransVpl :: S\NP[pl]    # Plural
    TransVsg :: S\NP[sg]/NP   # Tensed transitive verbs (singular)
    TransVpl :: S\NP[pl]/NP   # Plural

    the => NP[sg]/N[sg]
    the => NP[pl]/N[pl]

    I => Pro
    me => Pro
    we => Pro
    us => Pro

    book => N[sg]
    books => N[pl]

    peach => N[sg]
    peaches => N[pl]

    policeman => N[sg]
    policemen => N[pl]

    boy => N[sg]
    boys => N[pl]

    sleep => IntransVsg
    sleep => IntransVpl

    eat => IntransVpl
    eat => TransVpl
    eats => IntransVsg
    eats => TransVsg

    see => TransVpl
    sees => TransVsg
    r   )F)!r*   ÚreÚcollectionsr   Únltk.ccg.apir   r   r   r   Únltk.internalsr   Únltk.sem.logicr	   Úcompilere   rN   rf   ÚUNICODErw   rx   rz   rv   r   r-   rH   rQ   rT   rY   ra   rd   ry   r�   Úopenccg_tinytinyr+   r   r   ú<module>rŠ      s(  ððð ð 
€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #à QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ %Ð %Ð %Ð %Ð %Ð %Ø %Ð %Ð %Ð %Ð %Ð %ð ˆ"Œ*Ð8Ñ
9Ô
9€ð ˆbŒjÐBÑCÔC€ð 
ˆŒÐ4Ñ	5Ô	5€ð 
ˆŒÐ8¸"¼*Ñ	EÔ	E€ð 
ˆŒÐ8¸"¼*Ñ	EÔ	E€ð ˆrŒzÐ,¨b¬jÑ9Ô9€ð ˆbŒjÐ.Ñ/Ô/€ð Uð  Uð  Uð  Uð  Uñ  Uô  Uð  UðF-ð -ð -ð -ð -ñ -ô -ð -ðjIð Ið Ið(.ð .ð .ð&ð &ð &ðð ð ðð ð ð<ð ð ð ð@.Dð .Dð .Dð .Dðb €Ð'Ñ(Ô(ðð ñ )Ô(ðð �:ð)ñ+ô +Ð Ð Ð r   