ó
    ´OÂfçr  ã                   ó0  • S SK r S SKJr  S SKrS SKJr  S SKJrJr  S SK	J
r
JrJrJrJr  S SKJrJrJrJr  SSSS	S
SS.r/ SQr " S S5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r " S S\5      rSS jr\S:X  a  \" 5         gg)é    N)Úchain)ÚCounter)ÚdrtÚlinearlogic)ÚAbstractVariableExpressionÚ
ExpressionÚLambdaExpressionÚVariableÚVariableExpression)ÚBigramTaggerÚRegexpTaggerÚTrigramTaggerÚUnigramTaggerÚex_quantÚ
univ_quantÚdef_artÚno_quant)ÚaÚanÚeveryÚtheÚnoÚdefault)ÚnmodÚvmodÚpunctc                   ód   • \ rS rSrSS jrS rS rS rS rSS jr	S	 r
S
 rS rS rS rS rSrg)ÚGlueFormulaé$   Nc                 ó
  • U(       d
  [        5       n[        U[        5      (       a  [        R                  " U5      U l        O9[        U[        5      (       a  Xl        O[        SU< SUR                  < 35      e[        U[        5      (       a*  [        R                  " 5       R                  U5      U l        OC[        U[        R                  5      (       a  X l        O[        SU< SUR                  < 35      eX0l        g ©Nz+Meaning term neither string or expression: ú, z(Glue term neither string or expression: )ÚsetÚ
isinstanceÚstrr   Ú
fromstringÚmeaningÚRuntimeErrorÚ	__class__r   ÚLinearLogicParserÚparseÚglueÚindices©Úselfr'   r,   r-   s       Ú//usr/lib/python3/dist-packages/nltk/sem/glue.pyÚ__init__ÚGlueFormula.__init__%   s¾   € ÞÜ“eˆGä�gœs×#Ñ#Ü%×0Ò0°Ó9ˆD�LÜ˜¤×,Ñ,Ø"�Låã˜G×-Ó-ð/óð ô
 �dœC× Ñ Ü#×5Ò5Ó7×=Ñ=¸dÓCˆD�IÜ˜œk×4Ñ4×5Ñ5Ø�Iåã˜Ÿ›ð)óð ð
 �ó    c                 óö  • U R                   UR                   -  (       a  [        R                  " SU  SU S35      eU R                   UR                   -  n [        R                  " U R                  UR                  UR                   5      nUR                  nU(       aY  U R                  R                  5       R                  R                  SSS2    H!  nU R                  [        SU-  5      U5      nM#     U R                  R                  U5      nU R                  XsU5      $ ! [        R                   a?  n[        R                  " SU R                  5        SUR                  5        S35      UeSnAff = f)zaself = (\x.(walk x), (subj -o f))
arg  = (john        ,  subj)
returns ((walk john),          f)
Ú'z' applied to 'z'.  Indices are not disjoint.Néÿÿÿÿzv%s)r-   r   ÚLinearLogicApplicationExceptionÚApplicationExpressionr,   Úsimplifyr'   Ú
antecedentÚdependenciesÚmake_LambdaExpressionr
   Úapplytor)   )r/   ÚargÚreturn_indicesÚreturn_glueÚeÚarg_meaning_abstractedÚdepÚreturn_meanings           r0   r=   ÚGlueFormula.applyto?   sL  € ð
 �<‰<˜#Ÿ+™+×%Ü×=Ò=Ø�D�6˜¨ uÐ,IÐJóð ð "Ÿ\™\¨C¯K©KÑ7ˆNð	Ü%×;Ò;Ø—	‘	˜3Ÿ8™8 S§[¡[óˆKð "%§¡ÐÞØ—y‘y×)Ñ)Ó+×6Ñ6×CÑCÙ�"�ô�ð *.×)CÑ)CÜ˜U S™[Ó)Ð+Aó*Ò&ñð Ÿ™×-Ñ-Ð.DÓEˆà�~‰~˜n¸>ÓJÐJøô ×:Ñ:ó 	Ü×=Ò=Ø�D—M‘M“OÐ$ N°3·<±<³>Ð2BÀ!ÐDóàðûð	ús   Á6D% Ä%E8Ä9:E3Å3E8c                 ó   • [        U5      $ ©N)r   ©r/   Únames     r0   Úmake_VariableExpressionÚ#GlueFormula.make_VariableExpression`   s   € Ü! $Ó'Ð'r3   c                 ó   • [        X5      $ rG   )r	   ©r/   ÚvariableÚterms      r0   r<   Ú!GlueFormula.make_LambdaExpressionc   s   € Ü Ó/Ð/r3   c                 óD  • [        U[        5      (       d   e[        UR                  [        5      (       d   eU R	                  U R                  UR                  R                  U R                  5      [        R                  " UR                  U R                  5      5      $ rG   )
r$   r   r'   r   r)   r<   rN   r   ÚImpExpressionr,   ©r/   Úothers     r0   Úlambda_abstractÚGlueFormula.lambda_abstractf   st   € Ü˜%¤×-Ñ-Ð-Ð-Ü˜%Ÿ-™-Ô)C×DÑDÐDÐDØ�~‰~Ø×&Ñ& u§}¡}×'=Ñ'=¸t¿|¹|ÓLÜ×%Ò% e§j¡j°$·)±)Ó<ó
ð 	
r3   c                 óì   • U(       d
  [        5       nU R                  R                  5       R                  XR                  5      u  p#UU R	                  U R
                  X!R                  5       15      /-   $ )z)From Iddo Lev's PhD Dissertation p108-109)r   r,   r9   Úcompile_posr)   r'   Úget)r/   ÚcounterÚcompiled_glueÚ	new_formss       r0   ÚcompileÚGlueFormula.compilen   sa   € æÜ“iˆGØ%)§Y¡Y×%7Ñ%7Ó%9×%EÑ%EØ—^‘^ó&
Ñ"ˆð Ø�N‰N˜4Ÿ<™<¨¿¹»¸ÓHð
ñ 
ð 	
r3   c                 óœ   • U R                  U R                  R                  5       U R                  R                  5       U R                  5      $ rG   )r)   r'   r9   r,   r-   ©r/   s    r0   r9   ÚGlueFormula.simplifyy   s8   € Ø�~‰~Ø�L‰L×!Ñ!Ó# T§Y¡Y×%7Ñ%7Ó%9¸4¿<¹<ó
ð 	
r3   c                 ó´   • U R                   UR                   :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ rG   )r)   r'   r,   rS   s     r0   Ú__eq__ÚGlueFormula.__eq__~   sA   € à�N‰N˜eŸo™oÑ-÷ (Ø—‘ §¡Ñ-÷(à—	‘	˜UŸZ™ZÑ'ð	
r3   c                 ó   • X:X  + $ rG   © rS   s     r0   Ú__ne__ÚGlueFormula.__ne__…   s   € ØÒ Ð r3   c                 ó0   • [        U 5      [        U5      :  $ rG   ©r%   rS   s     r0   Ú__lt__ÚGlueFormula.__lt__‰   s   € Ü�4‹yœ3˜u›:Ñ%Ð%r3   c                 ó  • [        U R                  [        5      (       d   eU R                   SU R                   3nU R                  (       a4  USSR                  S [        U R                  5       5       5      -   S-   -  nU$ )Nú : z : {r"   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frG   rj   )Ú.0Úindexs     r0   Ú	<genexpr>Ú&GlueFormula.__str__.<locals>.<genexpr>‘   s   é € Ð"PÒ;O°%¤3 u§: :Ò;Oùs   ‚Ú})r$   r-   r#   r'   r,   ÚjoinÚsorted)r/   Úaccums     r0   Ú__str__ÚGlueFormula.__str__Œ   so   € Ü˜$Ÿ,™,¬×,Ñ,Ð,Ð,Ø—<‘<�.  D§I¡I ;Ð/ˆØ�<�<ØØ˜Ÿ™Ñ"P¼6À$Ç,Á,Ô;OÓ"PÓPÑPÐSVÑVñˆEð ˆr3   c                 ó   • SU -  $ )Nú%srf   r`   s    r0   Ú__repr__ÚGlueFormula.__repr__•   s   € Ø�d‰{Ðr3   ©r,   r-   r'   rG   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r1   r=   rJ   r<   rU   r]   r9   rc   rg   rk   rx   r|   Ú__static_attributes__rf   r3   r0   r   r   $   s@   † ôò4KòB(ò0ò
ô	
ò
ò

ò!ò&òõr3   r   c                   óz   • \ rS rSrSS jrSS jrS rSS jrS rS r	S	 r
S
 rS rS rS rS rS rS rS rSrg)ÚGlueDicté™   Nc                 ó<   • Xl         X l        U R                  5         g rG   )ÚfilenameÚfile_encodingÚ	read_file)r/   rˆ   Úencodings      r0   r1   ÚGlueDict.__init__š   s   € Ø ŒØ%ÔØ�‰Õr3   c                 óÞ  • U(       a  U R                  5          [        R                  R                  U R                  SU R
                  S9nUR                  5       nU GH�  nUR                  5       n[        U5      (       d  M&  US   S:X  a  M1  UR                  SS5      n/ nSnSn	Sn
S n[        U5      S:”  a–  [        US   5       H„  u  pÍUS	:X  a  US:X  a  US-   n	US-  nM  US
:X  a3  US-  nUS:X  a&  US   Xš nUS   U
S-   U nUR                  Xï/5        MT  MV  US:X  a  US:X  a  Un
Mf  Mh  US:X  d  Mp  US:w  a  [        SU-   5      e  O   [        U5      S:”  ac  US   R                  S5      S-   nUS   R                  S5      nUU:X  a  [        5       nO'[        S US   UU R                  S5       5       5      n US   R                  S	5      nUS   R                  S
5      nUS   S U R                  5       nUS   US-   U nUU ;  a  0 U U'   Ucˆ  U(       aV  U U    HJ  nUU U   ;  a  / U U   U'   U U   U   nU U   U   R!                  U5        U U   U   R!                  U5        ML     GM  S U U   ;  a  / U U   S '   U U   S    R!                  U5        GMD  X°U   ;  a  / U U   U'   U(       a  U U   U   R!                  U U   U   5        U U   U   R!                  U5        GM’     g ! [         aR  n [        R                  R                  SU R                  -   SU R
                  S9n S nAGNî! [         a    Uef = fS nAff = f!   US   R                  5       nS n GN`= f)NÚtext)Úformatr‹   zfile:r   Ú#rn   é   é   Ú(Ú)Ú,z&Formula syntax is incorrect for entry Ú[Ú]c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frG   )Ústrip)rp   Úrs     r0   rr   Ú%GlueDict.read_file.<locals>.<genexpr>è   s   é € ð .Ú+Q aŸ™Ÿ	˜	Ò+Qùs   ‚)ÚclearÚnltkÚdataÚloadrˆ   r‰   ÚLookupErrorÚ
splitlinesr™   ÚlenÚsplitÚ	enumerateÚappendr(   rq   Ú	frozensetÚextend)r/   Úempty_firstÚcontentsrA   ÚlinesÚlineÚpartsÚglue_formulasÚparen_countÚtuple_startÚtuple_commaÚrelationshipsÚiÚcÚmeaning_termÚ	glue_termÚ	rel_startÚrel_endÚstart_inheritanceÚend_inheritanceÚsemÚ	supertypeÚrelsr,   s                           r0   rŠ   ÚGlueDict.read_fileŸ   sÚ  € ÞØ�J‰JŒLð	Ü—y‘y—~‘~Ø—‘ f°t×7IÑ7Ið &ð ˆHð ×#Ñ#Ó%ˆäˆDà—:‘:“<ˆDÜ�t—9‘9ÙØ�A‰w˜#‹~Ùà—J‘JØ�qóˆEð ˆMØˆKØˆKØˆKà ˆMä�5‹z˜A‹~Ü% e¨A¡hÖ/‘D�AØ˜C“xØ&¨!Ó+Ø*+¨a©%˜KØ# qÑ(šØ˜c›Ø# qÑ(˜Ø&¨!Ó+Ø+0°©8Ø +ð,˜Lð ).¨a©°¸q±À1Ð(E˜IØ)×0Ñ0Ø!-Ð 9öñ ,ð ˜c›à'¨1Ó,à*+šKñ -ð ˜c�à'¨1Ó,ä".Ø HÈ4Ñ Oó#ð ñ ñ7 0ô: �5‹z˜A‹~Ø! !™HŸN™N¨3Ó/°!Ñ3�	Ø ™(Ÿ.™.¨Ó-�Ø Ó'Ü$-£K‘Mä$-ñ .Ø+0°©8°I¸gÐ+F×+LÑ+LÈSÔ+Qó.ó %�Mð!Ø$)¨!¡H§N¡N°3Ó$7Ð!Ø"'¨¡(§.¡.°Ó"5�Ø˜A‘hÐ1Ð 1Ð2×8Ñ8Ó:�Ø! !™HÐ%6¸Ñ%:¸_ÐM�	ð
 ˜$‹Ø��S‘	ð Ñ%ö Ø $ Y¤˜Ø t¨C¡yÓ0Ø.0˜D ™I d™OØ# I™¨tÑ4˜Ø˜S™	 $™×.Ñ.¨tÔ4Ø˜S™	 $™×.Ñ.Ø)öô !0ð  4¨¡9Ó,Ø*,˜˜S™	 $™Ø˜‘I˜d‘O×*Ñ*Ø%÷ð !¨S©	Ó1Ø/1�D˜‘I˜mÑ,ÞØ˜‘I˜mÑ,×3Ñ3°D¸±OÀMÑ4RÔSØ�S‘	˜-Ñ(×/Ñ/Ø!÷ò øô ó 	ðÜŸ9™9Ÿ>™>Ø˜dŸm™mÑ+°FÀT×EWÑEWð *ð –øô ó Ø�ðþð	ûðR!Ø˜A‘h—n‘nÓ&�Ø “	ús0   ™3K3 ÇA	MË3
MË>6L:Ì:MÍM
Í
MÍM,c                 ó
  • SnU  Hz  nSU-  nX    Hj  nSnX   U    HZ  nUS:X  a  XS-   -  nOUS[        U5      S-   -  -  nUSU-  -  nU(       a  U[        X   U   5      :X  a  USU-  -  nUS-  nUS-  nM\     Ml     M|     U$ )	NÚ r{   r’   z: Ú r‘   z : %sÚ
)r¢   )r/   rw   ÚposÚstr_posÚrelsetr²   Úgfs          r0   rx   ÚGlueDict.__str__  s³   € ØˆÛˆCØ˜S‘jˆGØœ)�Ø�Ø™) FÔ+�BØ˜A“vØ¨4¡Ñ/™à ¬¨G«°qÑ(8Ñ!9Ñ9˜Ø˜T B™YÑ&�EÞ !¤s¨4©9°VÑ+<Ó'=Ó"=Ø ¨6Ñ!1Ñ1˜Ø˜T‘M�EØ˜‘F’Aó ,ó $ñ ð ˆr3   c           	      óÄ  • Ucl  UR                   S   n[        [        R                  " US   R	                  5       5      5      nUR                   US      nU R                  X[        5       U5      $ U R                  X!U5      n[        R                  " US   R	                  5       5       H3  n	UR                   U	   n
UR                  U R                  XX45      5        M5     U$ )Nr   Údeps)	ÚnodesÚlistr   Úfrom_iterableÚvaluesÚto_glueformula_listr   Úlookupr§   )r/   ÚdepgraphÚnoderZ   ÚverboseÚtopÚdepListÚrootÚglueformulasÚdep_idxrC   s              r0   rÍ   ÚGlueDict.to_glueformula_list&  sÇ   € Ø‰<à—.‘. Ñ#ˆCÜœ5×.Ò.¨s°6©{×/AÑ/AÓ/CÓDÓEˆGØ—>‘> '¨!¡*Ñ-ˆDà×+Ñ+¨H¼G»IÀwÓOÐOà—{‘{ 4°7Ó;ˆÜ×*Ò*¨4°©<×+>Ñ+>Ó+@ÖAˆGØ—.‘. Ñ)ˆCØ×ÑØ×(Ñ(¨¸ÓIöñ Bð
 Ðr3   c           	      ó.  • U R                  U5      nS nU H  nX`;   d  M
  X   n  O   Uc  / $ U R                  X5        U R                  XQU5      n[        U5      (       d!  [	        SUS   < SUS   < SUS   < S35      eU R                  XqS   XU5      $ )Nz,There is no GlueDict entry for sem type of 'Úwordz' with tag 'Útagz', and rel 'Úrelr5   )Úget_semtypesÚadd_missing_dependenciesÚ_lookup_semtype_optionr¢   ÚKeyErrorÚ#get_glueformulas_from_semtype_entry)r/   rÐ   rÏ   rZ   Úsemtype_namesÚsemtyperI   rÎ   s           r0   rÎ   ÚGlueDict.lookup7  s¬   € Ø×)Ñ)¨$Ó/ˆàˆÛ!ˆDØ�|Ø™*�Ùñ "ð ‰?àˆIà×%Ñ% dÔ5à×,Ñ,¨W¸HÓEˆä�6�{‰{Ýà15°f´¸tÀE¼{ÈDÐQVÌKðYóð ð
 ×7Ñ7Ø˜‘L $°'ó
ð 	
r3   c                 óè   • US   R                  5       nUS:X  aY  UR                  US      nU R                  SXB5      nUS   nUS   R                  U/ 5        US   U   R	                  US   5        g g )NrÛ   ÚmainÚheadÚsubjrÈ   Úaddress)ÚlowerrÉ   Úlookup_uniqueÚ
setdefaultr¥   )r/   rÐ   rÏ   rÛ   Úheadnoderç   Úrelations          r0   rÝ   Ú!GlueDict.add_missing_dependenciesQ  s|   € Ø�5‰k×ÑÓ!ˆà�&‹=Ø—~‘~ d¨6¡lÑ3ˆHØ×%Ñ% f¨hÓAˆDØ˜E‘{ˆHØ�‰L×#Ñ# H¨bÔ1Ø�‰L˜Ñ"×)Ñ)¨$¨y©/Õ:ð r3   c                 óZ  ^• [        U4S j[        R                  " US   R                  5       5       5       5      n X   nU$ ! [         a]    [        5       n[        U5      S 1-
   H&  n[        U5      [        U5      :”  d  M  Xt:  d  M$  UnM(     U(       d  S U;   a  S nO g X   n U$ f = f)Nc              3   ó¸   >#   • U  HO  nTR                   U   S    R                  5       [        ;  d  M-  TR                   U   S    R                  5       v •  MQ     g7f)rÛ   N)rÉ   ré   ÚOPTIONAL_RELATIONSHIPS)rp   rC   rÏ   s     €r0   rr   Ú2GlueDict._lookup_semtype_option.<locals>.<genexpr>]  sT   øé € ð "
âA�Ø�~‰~˜cÑ" 5Ñ)×/Ñ/Ó1Ô9OÑOó /ˆH�N‰N˜3Ñ Ñ&×,Ñ,×.Ð.ÚAùs
   ƒ,A³'ArÈ   )r¦   r   rË   rÌ   rß   r#   r¢   )r/   râ   rÐ   rÏ   r±   rÎ   Ú
best_matchÚrelset_options      `    r0   rÞ   ÚGlueDict._lookup_semtype_option\  s²   ø€ Ü!ô "
ä×*Ò*¨4°©<×+>Ñ+>Ó+@ÔAó"
ó 
ˆð	)ØÑ+ˆFð( ˆøô' ó 	)ô
 #›ˆJÜ!$ W£°°Ô!6�ä˜Ó&¬¨Z«Õ8Ø%Õ5à!.’Jñ "7ö Ø˜7“?Ø!%‘JáØÑ(‰Fàˆð'	)ús#   ½A Á<B*ÂB*Â
B*Â"B*Â)B*c                 ó¼   • US   R                  5       nUS   R                  5       nUS:X  a  U[        ;   a
  [        U   /$ [        S   /$ US;   a  US   U/$ US   /$ )zR
Based on the node, return a list of plausible semtypes in order of
plausibility.
rÛ   rÙ   Úspecr   )r   r   rÚ   )ré   ÚSPEC_SEMTYPES)r/   rÐ   rÛ   rÙ   s       r0   rÜ   ÚGlueDict.get_semtypesz  sw   € ð
 �5‰k×ÑÓ!ˆØ�F‰|×!Ñ!Ó#ˆà�&‹=Ø”}Ó$Ü% dÑ+Ð,Ð,ä% iÑ0Ð1Ð1ØÐ$Ó$Ø˜‘K Ð%Ð%à˜‘K�=Ð r3   c                 óN  • / nU R                  5       nU HŒ  u  p‰U" U R                  X‚5      U	5      n
[        U5      (       d  X*l        OU [        U5      S-    3U
l        U R	                  U
R
                  X4UR                  5       5      U
l        UR                  U
5        MŽ     U$ )Nr’   )Úget_GlueFormula_factoryÚget_meaning_formular¢   rÙ   Úinitialize_labelsr,   rY   r¥   )r/   rÎ   rÙ   rÐ   rÏ   rZ   rÕ   ÚglueFormulaFactoryr'   r,   rÅ   s              r0   rà   Ú,GlueDict.get_glueformulas_from_semtype_entryŒ  sœ   € ð ˆà!×9Ñ9Ó;ÐÛ#‰MˆGÙ# D×$<Ñ$<¸WÓ$KÈTÓRˆBÜ�|×$Ñ$Ø•à!˜F¤3 |Ó#4°qÑ#8Ð"9Ð:�”à×,Ñ,¨R¯W©W°dÀgÇkÁkÃmÓTˆBŒGà×Ñ Ö#ñ $ð Ðr3   c                 óJ   • UR                  SS5      nUR                  SU5      $ )z„
:param generic: A meaning formula string containing the
    parameter "<word>"
:param word: The actual word to be replace "<word>"
Ú.r¿   z<word>)Úreplace)r/   ÚgenericrÙ   s      r0   rü   ÚGlueDict.get_meaning_formulaž  s%   € ð �|‰|˜C Ó$ˆØ�‰˜x¨Ó.Ð.r3   c           	      ó¸  • [        U[        R                  5      (       ao  U R                  UR                  R                  5       X#U5      nUS   R                  5       (       a  [        R                  " U5      $ [        R                  " U5      $ [        R                  " U R                  UR                  X#U5      U R                  UR                  X#U5      5      $ )Nr   )r$   r   ÚAtomicExpressionÚfind_label_namerI   ré   Úisupperr   ÚConstantExpressionrR   rý   r:   Ú
consequent)r/   ÚexprrÐ   rÏ   Úunique_indexrI   s         r0   rý   ÚGlueDict.initialize_labels§  s¦   € Ü�dœK×8Ñ8×9Ñ9Ø×'Ñ'¨¯	©	¯©Ó(9¸4È<ÓXˆDØ�A‰w�‰× Ñ Ü"×5Ò5°dÓ;Ð;ä"×5Ò5°dÓ;Ð;ä×,Ò,Ø×&Ñ& t§¡¸ÈÓUØ×&Ñ& t§¡¸ÈÓUóð r3   c                 óÐ  •  UR                  S5      nUS U nXS-   S  nUS:X  a"  U R                  XsR                  US      X45      $ U R                  UU R                  XbU5      UU5      $ ! [         að    U R                  U5      nUS:X  a  Us $ US:X  a  SU-  s $ US:X  a  S	U-  s $ US:X  a#  U R                  UR                  US      5      s $ US
:X  a  UR                  5        U 3s $ US:X  a#  U R                  U R                  SX#5      5      s $ US:X  a#  U R                  U R                  SX#5      5      s $ U R                  U R                  XU5      5      s $ f = f)Nr  r’   Úsuperræ   ÚfÚvz%svrš   z%srÚvarr   ÚconjaÚbÚconjb)rq   r  rÉ   rê   Ú
ValueErrorÚ	get_labelÚupper)	r/   rI   rÐ   rÏ   r  ÚdotÚ
before_dotÚ	after_dotÚlbls	            r0   r  ÚGlueDict.find_label_name´  sx  € ð!	PØ—*‘*˜S“/ˆCà˜d˜s˜ˆJØ 1™W˜Y˜ˆIØ˜WÓ$Ø×+Ñ+ØŸ~™~¨d°6©lÑ;¸Xóð ð ×+Ñ+ØØ×&Ñ& z¸ÓBØØ ó	ð øô ó 	PØ—.‘. Ó&ˆCØ�s‹{Ø’
Ø˜“Ø˜s‘{Ò"Ø˜“Ø˜s‘{Ò"Ø˜“Ø—~‘~ h§n¡n°T¸&±\Ñ&BÓCÒCØ˜“ØŸ)™)›+˜ | nÐ5Ò5Ø˜“Ø—~‘~ d×&8Ñ&8¸À$Ó&QÓRÒRØ˜“Ø—~‘~ d×&8Ñ&8¸À$Ó&QÓRÒRà—~‘~ d×&8Ñ&8¸ÀXÓ&NÓOÒOð#	PúsB   ‚AA+ Á#A+ Á+#E%ÂE%ÂE%Â*'E%ÃE%Ã/'E%Ä'E%Å!E%Å$E%c                 óh   • US   n/ SQUS-
     n[        U5      S-  nUS:”  a  U[        U5      -   $ U$ )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
rè   )r  ÚgÚhr²   ÚjÚkÚlÚmÚnÚoÚpÚqrš   ÚsÚtÚur  ÚwÚxÚyÚzr   r  r³   ÚdrA   r’   é   r   )Úintr%   )r/   rÐ   ÚvalueÚletterÚnums        r0   r  ÚGlueDict.get_labelØ  sM   € ð �Y‘ˆò
ð6 �!‰)ñ7ˆô8 �%‹j˜BÑˆØ�‹7ØœC ›HÑ$Ð$àˆMr3   c                 óº  • [         R                  " US   R                  5       5       Vs/ s HF  nUR                  U   S   R	                  5       UR	                  5       :X  d  M7  UR                  U   PMH     nn[        U5      S:X  a  [        SR                  US   U5      5      e[        U5      S:”  a  [        SR                  US   U5      5      eUS   $ s  snf )zL
Lookup 'key'. There should be exactly one item in the associated relation.
rÈ   rÛ   r   z#'{}' doesn't contain a feature '{}'rÙ   r’   z&'{}' should only have one feature '{}')r   rË   rÌ   rÉ   ré   r¢   rß   r�   )r/   rÛ   rÐ   rÏ   rC   rÈ   s         r0   rê   ÚGlueDict.lookup_unique  sØ   € ô ×*Ò*¨4°©<×+>Ñ+>Ó+@ÔAó
âA�Ø�~‰~˜cÑ" 5Ñ)×/Ñ/Ó1°S·Y±Y³[Ñ@ó  ˆH�N‰N˜3ÔÙAð 	ð 
ô ˆt‹9˜‹>ÜØ5×<Ñ<¸TÀ&¹\È3ÓOóð ô �‹Y˜‹]ÜØ8×?Ñ?ÀÀVÁÈcÓRóð ð ˜‘7ˆNùò
s   ª6CÁ$Cc                 ó   • [         $ rG   )r   r`   s    r0   rû   Ú GlueDict.get_GlueFormula_factory  s   € ÜÐr3   )r‰   rˆ   rG   )T)NNF)r   r€   r�   r‚   r1   rŠ   rx   rÍ   rÎ   rÝ   rÞ   rÜ   rà   rü   rý   r  r  rê   rû   rƒ   rf   r3   r0   r…   r…   ™   sR   † ôô
sòjô$ò"
ò4;òò<!ò$ò$/òò"PòH)òVõ*r3   r…   c                   ó`   • \ rS rSr SS jrSS jrS rS rS rS r	S	 r
S
 rS rS rS rSrg)ÚGluei  Nc                 ó´   • X@l         X l        X0l        SSKJn  U" 5       U l        U(       a  Xl        g [        R                  R                  SSS5      U l        g )Nr   )ÚProver9ÚgrammarsÚsample_grammarszglue.semtype)
rÑ   Úremove_duplicatesÚ	depparserr�   r>  ÚproverÚsemtype_fileÚosÚpathru   )r/   rD  rA  rB  rÑ   r>  s         r0   r1   ÚGlue.__init__  sF   € ð ŒØ!2ÔØ"Œå á“iˆŒæØ ,Õä "§¡§¡ØÐ-¨~ó!ˆDÕr3   c           	      óø   • U(       a  U R                   R                  U5        g U R                   R                  [        R                  R                  [        R                  R                  SSS5      5      5        g )Nr?  r@  zglue_train.conll)	rB  ÚtrainÚtrain_from_filer�   rž   ÚfindrE  rF  ru   )r/   Ú	depgraphss     r0   Útrain_depparserÚGlue.train_depparser/  sO   € ÞØ�N‰N× Ñ  Õ+à�N‰N×*Ñ*Ü—	‘	—‘Ü—G‘G—L‘L Ð->Ð@RÓSóõr3   c                 óz   • / nU R                  U5       H#  nUR                  U R                  U5      5        M%     U$ rG   )Úparse_to_compiledr§   Úget_readings)r/   ÚsentenceÚreadingsÚagendas       r0   Úparse_to_meaningÚGlue.parse_to_meaning9  s8   € ØˆØ×,Ñ,¨XÖ6ˆFØ�O‰O˜D×-Ñ-¨fÓ5Ö6ñ 7àˆr3   c                 ó²  • / n[        U5      n[        5       n[        5       nU(       Ga  UR                  5       nUR                  R	                  5       n[        U[        R                  5      (       aå  U HÀ  n [        UR                  [        R                  5      (       a  UR                  R                  n	O[        R                  " 5       n	UR                  R                  X‰5        XH    HD  n
UR                  U
R                  -  (       a  M#   UR                  UR                  U
5      5        MF     MÂ      XWR                     R                  U5        OÐU H¶  nXX    H«  n [        UR                  [        R                  5      (       a  UR                  R                  n	O[        R                  " 5       n	UR                  X‰5        UR                  UR                  -  (       d#   UR                  UR                  U5      5        M«  M­     M¸      XG   R                  U5        U(       a  GM  U H:  nXL    H/  n[        UR                  5      U:X  d  M  U R'                  XÒ5        M1     M<     U H:  nX\    H/  n[        UR                  5      U:X  d  M  U R'                  XÒ5        M1     M<     U$ ! [        R                    a     GMß  f = f! [        R"                   a     GMs  f = f! [$         a    U/XWR                  '    Nßf = f! [        R                    a     GMÂ  f = f! [        R"                   a     GMÞ  f = f! [$         a	    U/XG'    GN-f = frG   )r¢   ÚdictÚpopr,   r9   r$   r   rR   r8   ÚbindingsÚBindingDictr:   Úunifyr-   r¥   r=   r7   ÚUnificationExceptionrß   Ú_add_to_reading_list)r/   rT  rS  Úagenda_lengthÚatomicsÚ
nonatomicsÚcurÚ	glue_simpÚkeyrZ  ÚatomicÚ	nonatomicÚentryrÅ   s                 r0   rQ  ÚGlue.get_readings?  sË  € ØˆÜ˜F›ˆÜ“&ˆÜ“Vˆ
ßØ—*‘*“,ˆCØŸ™×)Ñ)Ó+ˆIÜØœ;×4Ñ4÷ñ ó #�CðÜ% c§h¡h´×0QÑ0Q×RÑRØ'*§x¡x×'8Ñ'8™Hä'2×'>Ò'>Ó'@˜HØ!×,Ñ,×2Ñ2°3ÔAØ&-¤l˜Fà #§¡¨f¯n©n× <Ñ <ð!)Ø$*§M¡M°#·+±+¸fÓ2EÖ$Fó '3ñ #ð"=Ø×3Ñ3Ñ4×;Ñ;¸CÕ@ó
 &�CØ%/¤_˜	ð!Ü)Ø )§¡´×0QÑ0Q÷ ñ  ð ,5¯>©>×+BÑ+B¡ä+6×+BÒ+BÓ+D Ø%ŸO™O¨CÔ:à #§¡¨i×.?Ñ.?× ?ð!)Ø$*§M¡M°)×2CÑ2CÀCÓ2HÖ$Iñ !@ó &5ñ &ð&/ØÑ&×-Ñ-¨cÔ2÷c ‰fój ˆEØ”n�Ü�r—z‘z“? mÕ3Ø×-Ñ-¨bÖ;ó %ñ ó  ˆEØ Ô'�Ü�r—z‘z“? mÕ3Ø×-Ñ-¨bÖ;ó (ñ  ð ˆøôU (3×'RÑ'Ró !)Û$(ð!)ûä&×;Ñ;ó Ûðûô  ó =Ø8;°u�J×3Ñ3Ó4ð=ûô& (3×'RÑ'Ró !)Û$(ð!)ûä*×?Ñ?ó !Û ð!ûô  ó /Ø*-¨�GÔ&ð/úsŒ   Á9BKÄ J4Ä1KÄ:K, Å%BL'Ç* LÈM Ê4KËKËKËKËK)Ë(K)Ë,LÌLÌL$ÌL'Ì#L$Ì$L'Ì'M Ì?M ÍMÍMc                 ó*  • SnU R                   (       a9  U H3  n UR                  UR                  U R                  5      (       a  Sn  OM5     U(       a  UR                  UR                  5        g g ! [         a  n[        SU5         S nAMw  S nAff = f)NTFz2Error when checking logical equality of statements)rA  Úequivr'   rC  Ú	ExceptionÚprintr¥   )r/   ÚglueformulaÚreading_listÚadd_readingÚreadingrA   s         r0   r^  ÚGlue._add_to_reading_listƒ  sŒ   € ØˆØ×!×!Û'�ðSØ—}‘} [×%8Ñ%8¸$¿+¹+×FÑFØ&+˜Ùñ Gñ (ö Ø×Ñ × 3Ñ 3Õ4ð øô !ó Sô ÐNÐPQ×RÒRûð	Sús   š-A1Á1
BÁ;BÂBc                 ó¶   • U R                  U5       Vs/ s H  o R                  U5      PM     nnU Vs/ s H  o@R                  U5      PM     sn$ s  snf s  snf rG   )Ú	dep_parseÚdepgraph_to_glueÚgfl_to_compiled)r/   rR  ÚdgÚgflsÚgfls        r0   rP  ÚGlue.parse_to_compiled”  sQ   € Ø48·N±NÀ8Ô4LÓMÒ4L¨b×%Ñ% bÖ)Ñ4LˆÐMÙ59Ó:²T¨c×$Ñ$ SÖ)±TÑ:Ð:ùò NùÚ:s
   ”A´Ac                 óö   • U R                   c  SSKJn  U" U R                  5       S9U l         U R                   R                  (       d  U R                  5         U R                   R                  XR                  S9$ )z‹
Return a dependency graph for the sentence.

:param sentence: the sentence to be parsed
:type sentence: list(str)
:rtype: DependencyGraph
r   ©Ú
MaltParser©Útagger)rÑ   )rB  Ú
nltk.parser|  Úget_pos_taggerÚ_trainedrM  r+   rÑ   )r/   rR  r|  s      r0   rs  ÚGlue.dep_parse˜  s[   € ð �>‰>Ñ!Ý-á'¨t×/BÑ/BÓ/DÑEˆDŒNØ�~‰~×&×&Ø× Ñ Ô"Ø�~‰~×#Ñ# H·l±lÐ#ÐCÐCr3   c                 ó@   • U R                  5       R                  U5      $ rG   )Úget_glue_dictrÍ   )r/   rÏ   s     r0   rt  ÚGlue.depgraph_to_glueª  s   € Ø×!Ñ!Ó#×7Ñ7¸ÓAÐAr3   c                 ó,   • [        U R                  5      $ rG   )r…   rD  r`   s    r0   r„  ÚGlue.get_glue_dict­  s   € Ü˜×)Ñ)Ó*Ð*r3   c                 óÐ   • [        5       n/ nU H#  nUR                  UR                  U5      5        M%     U R                  (       a  [	        S5        U H  n[	        U5        M     U$ )NzCompiled Glue Premises:)r   r§   r]   rÑ   rl  )r/   rx  Úindex_counterÚreturn_listrÅ   Úcgfs         r0   ru  ÚGlue.gfl_to_compiled°  sZ   € Ü›	ˆØˆÛˆBØ×Ñ˜rŸz™z¨-Ó8Ö9ñ ð �<�<ÜÐ+Ô,Û"�Ü�c–
ñ #ð Ðr3   c                 ó˜   • SSK Jn  [        / SQ5      nUR                  SS9n[	        X2S9n[        X4S9n[        X5S9n[        SS/US9nU$ )	Nr   )Úbrown)	)z^-?[0-9]+(\.[0-9]+)?$ÚCD)z(The|the|A|a|An|an)$ÚAT)z.*able$ÚJJ)z.*ness$ÚNN)z.*ly$ÚRB)z.*s$ÚNNS)z.*ing$ÚVBG)z.*ed$ÚVBD)z.*r’  Únews)Ú
categories)Úbackoff)z(A|a|An|an)$r   )z(Every|every|All|all)$r   )Únltk.corpusrŽ  r   Útagged_sentsr   r   r   )r/   rŽ  Úregexp_taggerÚbrown_trainÚunigram_taggerÚbigram_taggerÚtrigram_taggerÚmain_taggers           r0   r€  ÚGlue.get_pos_tagger½  sg   € Ý%ä$ò
ó
ˆð ×(Ñ(°FÐ(Ð;ˆÜ& {ÑJˆÜ$ [ÑIˆÜ& {ÑJˆô #Ø*Ð,UÐVØ"ñ
ˆð
 Ðr3   )rB  rC  rA  rD  rÑ   ©NFNFrG   )r   r€   r�   r‚   r1   rM  rU  rQ  r^  rP  rs  rt  r„  ru  r€  rƒ   rf   r3   r0   r<  r<    s@   † àRWôô$òòBòH5ò";òDò$Bò+òõr3   r<  c                   ó*   • \ rS rSrSS jrS rS rSrg)ÚDrtGlueFormulaiÛ  Nc                 ó0  • U(       d
  [        5       n[        U[        5      (       a%  [        R                  R                  U5      U l        OC[        U[        R                  5      (       a  Xl        O[        SU< SUR                  < 35      e[        U[        5      (       a*  [        R                  " 5       R                  U5      U l        OC[        U[        R                  5      (       a  X l        O[        SU< SUR                  < 35      eX0l        g r!   )r#   r$   r%   r   ÚDrtExpressionr&   r'   r(   r)   r   r*   r+   r,   r   r-   r.   s       r0   r1   ÚDrtGlueFormula.__init__Ü  sÊ   € ÞÜ“eˆGä�gœs×#Ñ#Ü×,Ñ,×7Ñ7¸Ó@ˆD�LÜ˜¤×!2Ñ!2×3Ñ3Ø"�Låã˜G×-Ó-ð/óð ô
 �dœC× Ñ Ü#×5Ò5Ó7×=Ñ=¸dÓCˆD�IÜ˜œk×4Ñ4×5Ñ5Ø�Iåã˜Ÿ›ð)óð ð
 �r3   c                 ó.   • [         R                  " U5      $ rG   )r   ÚDrtVariableExpressionrH   s     r0   rJ   Ú&DrtGlueFormula.make_VariableExpressionö  s   € Ü×(Ò(¨Ó.Ð.r3   c                 ó.   • [         R                  " X5      $ rG   )r   ÚDrtLambdaExpressionrM   s      r0   r<   Ú$DrtGlueFormula.make_LambdaExpressionù  s   € Ü×&Ò& xÓ6Ð6r3   r~   rG   )r   r€   r�   r‚   r1   rJ   r<   rƒ   rf   r3   r0   r¥  r¥  Û  s   † ôò4/õ7r3   r¥  c                   ó   • \ rS rSrS rSrg)ÚDrtGlueDictiý  c                 ó   • [         $ rG   )r¥  r`   s    r0   rû   Ú#DrtGlueDict.get_GlueFormula_factoryþ  s   € ÜÐr3   rf   N)r   r€   r�   r‚   rû   rƒ   rf   r3   r0   r°  r°  ý  s   † õr3   r°  c                   ó&   • \ rS rSr SS jrS rSrg)ÚDrtGluei  Nc                 ó‚   • U(       d!  [         R                  R                  SSS5      n[        R	                  XX#U5        g )Nr?  r@  zdrt_glue.semtype)rE  rF  ru   r<  r1   )r/   rD  rA  rB  rÑ   s        r0   r1   ÚDrtGlue.__init__  s5   € ö ÜŸ7™7Ÿ<™<ØÐ-Ð/AóˆLô 	�‰�dÐ*;ÈÕPr3   c                 ó,   • [        U R                  5      $ rG   )r°  rD  r`   s    r0   r„  ÚDrtGlue.get_glue_dict  s   € Ü˜4×,Ñ,Ó-Ð-r3   rf   r£  )r   r€   r�   r‚   r1   r„  rƒ   rf   r3   r0   r´  r´    s   † àRWôQõ.r3   r´  c                 ó`  • SSK Jn  / SQn[        S5        [        / SQ5      nU" US9n[	        USS9n[        U5       Hm  u  pgX`:X  d  U S	:X  d  M  [        S
U SU 35        UR                  UR                  5       5       H  n[        UR                  5       5        M     [        S5        Mo     g )Nr   r{  )zDavid sees MaryzDavid eats a sandwichzevery man chases a dogzevery man believes a dog sleepszJohn gives David a sandwichzJohn chases himselfz"============== DEMO ==============))z^(David|Mary|John)$ÚNNP)zN^(sees|eats|chases|believes|gives|sleeps|chases|persuades|tries|seems|leaves)$ÚVB)z!^(go|order|vanish|find|approach)$r»  )z^(a)$r   )z	^(every)$r   )z.^(sandwich|man|dog|pizza|unicorn|cat|senator)$r’  )z^(big|gray|former)$r‘  )z^(him|himself)$ÚPRPr}  F)rB  rÑ   r6   z[[[Example z]]]  r¿   )	r  r|  rl  r   r<  r¤   rU  r£   r9   )	Úshow_exampler|  Úexamplesr~  rB  r,   r²   rR  rp  s	            r0   Údemor¿    s¦   € Ý%ò€Hô$ 
Ð
.Ô/äò	
ó€Fñ   &Ñ)€IÜ˜)¨UÑ3€Dä  Ö*‰ˆØÓ °Õ 2Ü�K ˜s %¨ zÐ2Ô3Ø×0Ñ0°·±Ó1AÖB�Ü�g×&Ñ&Ó(Ö)ñ Cä�"ŽIò +r3   Ú__main__)r6   )rE  Ú	itertoolsr   r�   Únltk.internalsr   Únltk.semr   r   Únltk.sem.logicr   r   r	   r
   r   Únltk.tagr   r   r   r   rø   rñ   r   rX  r…   r<  r¥  r°  r´  r¿  r   rf   r3   r0   Ú<module>rÆ     s´   ðó 
Ý ã Ý "ß %÷õ ÷ NÓ Mð 
Ø
ØØØ
Øñ€ò 3Ð ÷rñ rôj@ˆtô @÷F|ñ |ô~7�[ô 7ôD�(ô ô
.ˆdô .ô/ðd ˆzÓÙ…Fð r3   