§
    'ê[fbG  ã                   óÜ  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZ  G d„ de¦  «        Z G d„ dee¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ e¦   «          e¦   «          e¦   «          e¦   «          e¦   «         gZ% e¦   «          e¦   «          e¦   «          e¦   «         gZ& e¦   «          e
¦   «          e¦   «          e¦   «         gZ' e¦   «          e
¦   «          e¦   «          e¦   «         gZ( e¦   «          e¦   «          e ¦   «         gZ) G d„ de¦  «        Z* G d„ de*¦  «        Z+ G d„ d e*¦  «        Z, G d!„ d"e*¦  «        Z- G d#„ d$e*¦  «        Z. G d%„ d&e*¦  «        Z/ e¦   «          e¦   «          e"¦   «          e#¦   «          e$¦   «         gZ0 e¦   «          e¦   «          e¦   «          e!¦   «         gZ1 e¦   «          e¦   «          e¦   «          e!¦   «         gZ2 e¦   «          e¦   «          e¦   «          e!¦   «         gZ3 G d'„ d(e*e¦  «        Z4 G d)„ d*e4¦  «        Z5 G d+„ d,e4¦  «        Z6 G d-„ d.e4¦  «        Z7 G d/„ d0e4¦  «        Z8	 	 	 	 	 	 d9d6„Z9e:d7k    r e9¦   «          d8S d8S ):aÕ  
Data classes and parser implementations for *incremental* chart
parsers, which use dynamic programming to efficiently parse a text.
A "chart parser" derives parse trees for a text by iteratively adding
"edges" to a "chart".  Each "edge" represents a hypothesis about the tree
structure for a subsequence of the text.  The "chart" is a
"blackboard" for composing and combining these hypotheses.

A parser is "incremental", if it guarantees that for all i, j where i < j,
all edges ending at i are built before any edges ending at j.
This is appealing for, say, speech recognizer hypothesis filtering.

The main parser class is ``EarleyChartParser``, which is a top-down
algorithm, originally formulated by Jay Earley (1970).
é    )Úperf_counter)ÚBottomUpPredictCombineRuleÚBottomUpPredictRuleÚCachedTopDownPredictRuleÚChartÚChartParserÚEdgeIÚEmptyPredictRuleÚ"FilteredBottomUpPredictCombineRuleÚ!FilteredSingleEdgeFundamentalRuleÚLeafEdgeÚLeafInitRuleÚSingleEdgeFundamentalRuleÚTopDownInitRule)Ú!FeatureBottomUpPredictCombineRuleÚFeatureBottomUpPredictRuleÚFeatureChartÚFeatureChartParserÚFeatureEmptyPredictRuleÚ FeatureSingleEdgeFundamentalRuleÚFeatureTopDownInitRuleÚFeatureTopDownPredictRulec                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚIncrementalChartc                 ó‚   — t          d„ |                      ¦   «         D ¦   «         ¦  «        | _        i | _        i | _        d S )Nc              3   ó   K  — | ]}g V — Œd S ©N© ©Ú.0Úxs     úJ/var/www/piapp/venv/lib/python3.11/site-packages/nltk/parse/earleychart.pyú	<genexpr>z.IncrementalChart.initialize.<locals>.<genexpr>@   s"   è è € Ð>Ð> q Ð>Ð>Ð>Ð>Ð>Ð>ó    )ÚtupleÚ
_positionsÚ
_edgelistsÚ_edge_to_cplsÚ_indexes©Úselfs    r"   Ú
initializezIncrementalChart.initialize>   sA   € åÐ>Ð>¨D¯OªOÑ,=Ô,=Ð>Ñ>Ô>Ñ>Ô>ˆŒð  ˆÔð ˆŒˆˆr$   c                 óD   — t          |                      ¦   «         ¦  «        S r   )ÚlistÚ	iteredgesr*   s    r"   ÚedgeszIncrementalChart.edgesI   s   € Ý�D—N’NÑ$Ô$Ñ%Ô%Ð%r$   c                 ó$   — d„ | j         D ¦   «         S )Nc              3   ó$   K  — | ]}|D ]}|V — ŒŒd S r   r   )r    ÚedgelistÚedges      r"   r#   z-IncrementalChart.iteredges.<locals>.<genexpr>M   s/   è è € ÐJÐJ˜ÀÐJÐJ¸�ÐJÐJÐJÐJÐJÐJÐJr$   )r'   r*   s    r"   r/   zIncrementalChart.iteredgesL   s   € ØJÐJ T¤_ÐJÑJÔJÐJr$   c                 ó‚  ‡— | j         |         }‰i k    rt          |¦  «        S t          ‰                     ¦   «         ¦  «        }t	          |¦  «        }|| j        vr|                      |¦  «         t	          ˆfd„|D ¦   «         ¦  «        }t          | j        |         |                              |g ¦  «        ¦  «        S )Nc              3   ó(   •K  — | ]}‰|         V — Œd S r   r   )r    ÚkeyÚrestrictionss     €r"   r#   z*IncrementalChart.select.<locals>.<genexpr>^   s(   øè è € Ð=Ð=¨3�\ #Ô&Ð=Ð=Ð=Ð=Ð=Ð=r$   ©r'   ÚiterÚsortedÚkeysr%   r)   Ú
_add_indexÚget©r+   Úendr8   r3   Ú
restr_keysÚvalss     `   r"   ÚselectzIncrementalChart.selectO   s½   ø€ Ø”? 3Ô'ˆð ˜2ÒÐÝ˜‘>”>Ð!õ ˜L×-Ò-Ñ/Ô/Ñ0Ô0ˆ
Ý˜:Ñ&Ô&ˆ
ð ˜Tœ]Ð*Ð*Ø�OŠO˜JÑ'Ô'Ð'åÐ=Ð=Ð=Ð=°*Ð=Ñ=Ô=Ñ=Ô=ˆÝ�D”M *Ô-¨cÔ2×6Ò6°t¸RÑ@Ô@ÑAÔAÐAr$   c                 ó   ‡— |D ])}t          t          |¦  «        st          d|z  ¦  «        ‚Œ*t          d„ |                      ¦   «         D ¦   «         ¦  «        x}| j        |<   t          | j        ¦  «        D ]V\  }}||         }|D ]FŠt          ˆfd„|D ¦   «         ¦  «        }|                     |g ¦  «         	                    ‰¦  «         ŒGŒWd S )NúBad restriction: %sc              3   ó   K  — | ]}i V — Œd S r   r   r   s     r"   r#   z.IncrementalChart._add_index.<locals>.<genexpr>h   ó"   è è € Ð1PÐ1P¸°"Ð1PÐ1PÐ1PÐ1PÐ1PÐ1Pr$   c              3   óH   •K  — | ]} t          ‰|¦  «        ¦   «         V — Œd S r   ©Úgetattr©r    r7   r4   s     €r"   r#   z.IncrementalChart._add_index.<locals>.<genexpr>n   s6   øè è € ÐHÐH°cÐ/�W T¨3Ñ/Ô/Ñ1Ô1ÐHÐHÐHÐHÐHÐHr$   ©
Úhasattrr	   Ú
ValueErrorr%   r&   r)   Ú	enumerater'   Ú
setdefaultÚappend©	r+   rA   r7   Úindexr@   r3   Ú
this_indexrB   r4   s	           @r"   r=   zIncrementalChart._add_indexa   s   ø€ àð 	>ð 	>ˆCÝ�5 #Ñ&Ô&ð >Ý Ð!6¸Ñ!<Ñ=Ô=Ð=ð>õ -2Ð1PÐ1P¸d¿oºoÑ>OÔ>OÐ1PÑ1PÔ1PÑ,PÔ,PÐPˆ�”˜jÑ)õ ' t¤Ñ7Ô7ð 	=ð 	=‰MˆC�Ø˜sœˆJØ ð =ð =�ÝÐHÐHÐHÐH¸ZÐHÑHÔHÑHÔH�Ø×%Ò% d¨BÑ/Ô/×6Ò6°tÑ<Ô<Ð<Ð<ð=ð	=ð 	=r$   c                 ó  ‡— ‰                      ¦   «         }| j                             ¦   «         D ]O\  }}t          ˆfd„|D ¦   «         ¦  «        }||                              |g ¦  «                             ‰¦  «         ŒPd S )Nc              3   óH   •K  — | ]} t          ‰|¦  «        ¦   «         V — Œd S r   rI   rK   s     €r"   r#   z:IncrementalChart._register_with_indexes.<locals>.<genexpr>t   s6   øè è € ÐDÐD°#Ð+�  sÑ+Ô+Ñ-Ô-ÐDÐDÐDÐDÐDÐDr$   ©r@   r)   Úitemsr%   rP   rQ   ©r+   r4   r@   rA   rS   rB   s    `    r"   Ú_register_with_indexesz'IncrementalChart._register_with_indexesq   s‰   ø€ Ø�hŠh‰jŒjˆØ#'¤=×#6Ò#6Ñ#8Ô#8ð 	9ð 	9ÑˆZ˜ÝÐDÐDÐDÐD¸ÐDÑDÔDÑDÔDˆDØ�#ŒJ×!Ò! $¨Ñ+Ô+×2Ò2°4Ñ8Ô8Ð8Ð8ð	9ð 	9r$   c                 ój   — | j         |                     ¦   «                                       |¦  «         d S r   )r'   r@   rQ   )r+   r4   s     r"   Ú_append_edgezIncrementalChart._append_edgew   s+   € ØŒ˜Ÿš™
œ
Ô#×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0r$   c                 óJ   — t          |                      ¦   «         dz   ¦  «        S )Né   )ÚrangeÚ
num_leavesr*   s    r"   r&   zIncrementalChart._positionsz   s   € Ý�T—_’_Ñ&Ô&¨Ñ*Ñ+Ô+Ð+r$   N)Ú__name__Ú
__module__Ú__qualname__r,   r0   r/   rC   r=   rZ   r\   r&   r   r$   r"   r   r   =   s’   € € € € € ð	ð 	ð 	ð&ð &ð &ðKð Kð KðBð Bð Bð$=ð =ð =ð 9ð 9ð 9ð1ð 1ð 1ð,ð ,ð ,ð ,ð ,r$   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚFeatureIncrementalChartc                 ó†  ‡ ‡— ‰ j         |         }‰i k    rt          |¦  «        S t          ‰                     ¦   «         ¦  «        }t	          |¦  «        }|‰ j        vr‰                      |¦  «         t	          ˆˆ fd„|D ¦   «         ¦  «        }t          ‰ j        |         |                              |g ¦  «        ¦  «        S )Nc              3   óN   •K  — | ]}‰                      ‰|         ¦  «        V — Œ d S r   )Ú_get_type_if_possible)r    r7   r8   r+   s     €€r"   r#   z1FeatureIncrementalChart.select.<locals>.<genexpr>Ž   sG   øè è € ð 
ð 
Ø>AˆD×&Ò& |°CÔ'8Ñ9Ô9ð
ð 
ð 
ð 
ð 
ð 
r$   r9   r?   s   ` `   r"   rC   zFeatureIncrementalChart.select   sØ   øø€ Ø”? 3Ô'ˆð ˜2ÒÐÝ˜‘>”>Ð!õ ˜L×-Ò-Ñ/Ô/Ñ0Ô0ˆ
Ý˜:Ñ&Ô&ˆ
ð ˜Tœ]Ð*Ð*Ø�OŠO˜JÑ'Ô'Ð'åð 
ð 
ð 
ð 
ð 
ØEOð
ñ 
ô 
ñ 
ô 
ˆõ �D”M *Ô-¨cÔ2×6Ò6°t¸RÑ@Ô@ÑAÔAÐAr$   c                 ó¤  ‡ ‡— |D ])}t          t          |¦  «        st          d|z  ¦  «        ‚Œ*t          d„ ‰                      ¦   «         D ¦   «         ¦  «        x}‰ j        |<   t          ‰ j        ¦  «        D ]W\  }}||         }|D ]GŠt          ˆˆ fd„|D ¦   «         ¦  «        }|                     |g ¦  «         	                    ‰¦  «         ŒHŒXd S )NrE   c              3   ó   K  — | ]}i V — Œd S r   r   r   s     r"   r#   z5FeatureIncrementalChart._add_index.<locals>.<genexpr>š   rG   r$   c              3   ón   •K  — | ]/}‰                       t          ‰|¦  «        ¦   «         ¦  «        V — Œ0d S r   ©rh   rJ   ©r    r7   r4   r+   s     €€r"   r#   z5FeatureIncrementalChart._add_index.<locals>.<genexpr>    sX   øè è € ð ð àð ×.Ò.Ð/A­w°t¸SÑ/AÔ/AÑ/CÔ/CÑDÔDðð ð ð ð ð r$   rL   rR   s	   `       @r"   r=   z"FeatureIncrementalChart._add_index“   s  øø€ àð 	>ð 	>ˆCÝ�5 #Ñ&Ô&ð >Ý Ð!6¸Ñ!<Ñ=Ô=Ð=ð>õ -2Ð1PÐ1P¸d¿oºoÑ>OÔ>OÐ1PÑ1PÔ1PÑ,PÔ,PÐPˆ�”˜jÑ)õ ' t¤Ñ7Ô7ð 	=ð 	=‰MˆC�Ø˜sœˆJØ ð =ð =�Ýð ð ð ð ð à)ðñ ô ñ ô �ð ×%Ò% d¨BÑ/Ô/×6Ò6°tÑ<Ô<Ð<Ð<ð=ð	=ð 	=r$   c                 ó  ‡ ‡— ‰                      ¦   «         }‰ j                             ¦   «         D ]P\  }}t          ˆˆ fd„|D ¦   «         ¦  «        }||                              |g ¦  «                             ‰¦  «         ŒQd S )Nc              3   ón   •K  — | ]/}‰                       t          ‰|¦  «        ¦   «         ¦  «        V — Œ0d S r   rl   rm   s     €€r"   r#   zAFeatureIncrementalChart._register_with_indexes.<locals>.<genexpr>©   sU   øè è € ð ð ØEH�×*Ò*Ð+=­7°4¸Ñ+=Ô+=Ñ+?Ô+?Ñ@Ô@ðð ð ð ð ð r$   rW   rY   s   ``    r"   rZ   z.FeatureIncrementalChart._register_with_indexes¦   s¤   øø€ Ø�hŠh‰jŒjˆØ#'¤=×#6Ò#6Ñ#8Ô#8ð 	9ð 	9ÑˆZ˜Ýð ð ð ð ð ØLVðñ ô ñ ô ˆDð �#ŒJ×!Ò! $¨Ñ+Ô+×2Ò2°4Ñ8Ô8Ð8Ð8ð		9ð 	9r$   N)ra   rb   rc   rC   r=   rZ   r   r$   r"   re   re   ~   sD   € € € € € ðBð Bð Bð(=ð =ð =ð&9ð 9ð 9ð 9ð 9r$   re   c                   ó   — e Zd Zd„ ZdS )ÚCompleteFundamentalRulec              #   ó  K  — |                      ¦   «         }|                     ||d|                     ¦   «         ¬¦  «        D ]D}|                     |                      ¦   «         ¦  «        }|                     |||¦  «        r|V — ŒEd S ©NT)Ústartr@   Úis_completeÚlhs)r@   rC   ÚnextsymÚmove_dot_forwardÚinsert_with_backpointer)r+   ÚchartÚgrammarÚ	left_edger@   Ú
right_edgeÚnew_edges          r"   Ú_apply_incompletez)CompleteFundamentalRule._apply_incompleteµ   s™   è è € Ø�mŠm‰oŒoˆð  Ÿ,š,Ø˜3¨D°i×6GÒ6GÑ6IÔ6Ið 'ñ 
ô 
ð 	ð 	ˆJð !×1Ò1°*·.².Ñ2BÔ2BÑCÔCˆHØ×,Ò,¨X°yÀ*ÑMÔMð Ø���øð	ð 	r$   N©ra   rb   rc   r   r   r$   r"   rq   rq   ´   s#   € € € € € ð	ð 	ð 	ð 	ð 	r$   rq   c                   ó(   — e Zd Z e¦   «         Zd„ ZdS )ÚCompleterRulec              #   ó|   K  — t          |t          ¦  «        s$| j                             |||¦  «        E d {V —† d S d S r   ©Ú
isinstancer   Ú_fundamental_ruleÚapply©r+   rz   r{   r4   s       r"   r‡   zCompleterRule.applyÄ   sX   è è € Ý˜$¥Ñ)Ô)ð 	JØÔ-×3Ò3°E¸7ÀDÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIð	Jð 	Jr$   N©ra   rb   rc   rq   r†   r‡   r   r$   r"   r‚   r‚   Á   ó7   € € € € € Ø/Ð/Ñ1Ô1ÐðJð Jð Jð Jð Jr$   r‚   c                   ó(   — e Zd Z e¦   «         Zd„ ZdS )ÚScannerRulec              #   ó|   K  — t          |t          ¦  «        r$| j                             |||¦  «        E d {V —† d S d S r   r„   rˆ   s       r"   r‡   zScannerRule.applyÌ   sX   è è € Ý�d�HÑ%Ô%ð 	JØÔ-×3Ò3°E¸7ÀDÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIð	Jð 	Jr$   Nr‰   r   r$   r"   rŒ   rŒ   É   rŠ   r$   rŒ   c                   ó   — e Zd ZdS )ÚPredictorRuleN©ra   rb   rc   r   r$   r"   r�   r�   Ñ   ó   € € € € € Ø€Dr$   r�   c                   ó   — e Zd Zd„ ZdS )ÚFilteredCompleteFundamentalRulec              #   óp   K  — |                      ¦   «         r|                      |||¦  «        E d {V —† d S d S r   )ru   Ú_apply_completerˆ   s       r"   r‡   z%FilteredCompleteFundamentalRule.applyÖ   sY   è è € ð ×ÒÑÔð 	BØ×+Ò+¨E°7¸DÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAÐAð	Bð 	Br$   N)ra   rb   rc   r‡   r   r$   r"   r“   r“   Õ   s(   € € € € € ðBð Bð Bð Bð Br$   r“   c                   ó   — e Zd Zd„ ZdS )ÚFeatureCompleteFundamentalRulec              #   óØ   K  — | j         }|                     ¦   «         }|                     ||d|                     ¦   «         ¬¦  «        D ] }|                     ||||¦  «        E d {V —† Œ!d S rs   )r†   r@   rC   rw   r‡   )r+   rz   r{   r|   Úfrr@   r}   s          r"   r   z0FeatureCompleteFundamentalRule._apply_incompleteã   s‘   è è € ØÔ#ˆØ�mŠm‰oŒoˆð  Ÿ,š,Ø˜3¨D°i×6GÒ6GÑ6IÔ6Ið 'ñ 
ô 
ð 	Gð 	GˆJð —x’x  w°	¸:ÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFð	Gð 	Gr$   Nr€   r   r$   r"   r—   r—   â   s(   € € € € € ðGð Gð Gð Gð Gr$   r—   c                   ó"   — e Zd Z e¦   «         ZdS )ÚFeatureCompleterRuleN©ra   rb   rc   r—   r†   r   r$   r"   r›   r›   î   ó   € € € € € Ø6Ð6Ñ8Ô8ÐÐÐr$   r›   c                   ó"   — e Zd Z e¦   «         ZdS )ÚFeatureScannerRuleNrœ   r   r$   r"   rŸ   rŸ   ò   r�   r$   rŸ   c                   ó   — e Zd ZdS )ÚFeaturePredictorRuleNr�   r   r$   r"   r¡   r¡   ö   r‘   r$   r¡   c                   ó*   — e Zd ZdZeddefd„Zdd„ZdS )ÚIncrementalChartParsera  
    An *incremental* chart parser implementing Jay Earley's
    parsing algorithm:

    | For each index end in [0, 1, ..., N]:
    |   For each edge such that edge.end = end:
    |     If edge is incomplete and edge.next is not a part of speech:
    |       Apply PredictorRule to edge
    |     If edge is incomplete and edge.next is a part of speech:
    |       Apply ScannerRule to edge
    |     If edge is complete:
    |       Apply CompleterRule to edge
    | Return any complete parses in the chart
    r   é2   c                 ó  — || _         || _        || _        || _        g | _        g | _        |D ]\}|j        dk    r| j                             |¦  «         Œ(|j        dk    r| j                             |¦  «         ŒNt          d¦  «        ‚dS )aö  
        Create a new Earley chart parser, that uses ``grammar`` to
        parse texts.

        :type grammar: CFG
        :param grammar: The grammar used to parse texts.
        :type trace: int
        :param trace: The level of tracing that should be used when
            parsing a text.  ``0`` will generate no tracing output;
            and higher numbers will produce more verbose tracing
            output.
        :type trace_chart_width: int
        :param trace_chart_width: The default total width reserved for
            the chart in trace output.  The remainder of each line will
            be used to display edges.
        :param chart_class: The class that should be used to create
            the charts used by this parser.
        r   r^   z9Incremental inference rules must have NUM_EDGES == 0 or 1N)	Ú_grammarÚ_traceÚ_trace_chart_widthÚ_chart_classÚ_axiomsÚ_inference_rulesÚ	NUM_EDGESrQ   rN   )r+   r{   ÚstrategyÚtraceÚtrace_chart_widthÚchart_classÚrules          r"   Ú__init__zIncrementalChartParser.__init__/  s¬   € ð4  ˆŒØˆŒØ"3ˆÔØ'ˆÔàˆŒØ "ˆÔØð 	ð 	ˆDØŒ~ Ò"Ð"Ø”×#Ò# DÑ)Ô)Ð)Ð)Ø” 1Ò$Ð$ØÔ%×,Ò,¨TÑ2Ô2Ð2Ð2å ØRñô ð ð	ð 	r$   Nc           	      ó‚  — |€| j         }| j        }t          |¦  «        }| j                             |¦  «         |                      |¦  «        }| j        }| j        |                     ¦   «         dz   z  }|r"t          | 	                    |¦  «        ¦  «         | j
        D ]4}t          |                     ||¦  «        ¦  «        } ||||||¦  «         Œ5| j        }	t          |                     ¦   «         dz   ¦  «        D ]¾}
|dk    rt          d|
d¦  «         t          |                     |
¬¦  «        ¦  «        }|r€|                     ¦   «         }|	D ]g}t          |                     |||¦  «        ¦  «        } ||||||¦  «         |D ]/}|                     ¦   «         |
k    r|                     |¦  «         Œ0Œh|°€Œ¿|S )Nr^   z
* Processing queue:Ú
)r@   )r§   Ú_trace_new_edgesr.   r¦   Úcheck_coverager©   r¨   r`   ÚprintÚpretty_format_leavesrª   r‡   r«   r_   rC   Úpopr@   rQ   )r+   Útokensr®   Útrace_new_edgesrz   r{   Útrace_edge_widthÚaxiomÚ	new_edgesÚinference_rulesr@   Úagendar4   r±   r~   s                  r"   Úchart_parsez"IncrementalChartParser.chart_parseZ  sï  € Øˆ=Ø”KˆEØÔ/ˆå�f‘”ˆØŒ×$Ò$ VÑ,Ô,Ð,Ø×!Ò! &Ñ)Ô)ˆØ”-ˆð  Ô2°u×7GÒ7GÑ7IÔ7IÈAÑ7MÑNÐØð 	@Ý�%×,Ò,Ð-=Ñ>Ô>Ñ?Ô?Ð?à”\ð 	Nð 	NˆEÝ˜UŸ[š[¨°Ñ8Ô8Ñ9Ô9ˆIØˆO˜E 5¨)°UÐ<LÑMÔMÐMÐMàÔ/ˆÝ˜×)Ò)Ñ+Ô+¨aÑ/Ñ0Ô0ð 	4ð 	4ˆCØ�qŠyˆyÝÐ-¨s°DÑ9Ô9Ð9Ý˜%Ÿ,š,¨3˜,Ñ/Ô/Ñ0Ô0ˆFØð 4Ø—z’z‘|”|�Ø+ð 4ð 4�DÝ $ T§Z¢Z°°wÀÑ%EÔ%EÑ FÔ F�IØ#�O E¨4°¸EÐCSÑTÔTÐTØ$-ð 4ð 4˜Ø#Ÿ<š<™>œ>¨SÒ0Ð0Ø"ŸMšM¨(Ñ3Ô3Ð3øð4ð ð 4øð ˆr$   r   )ra   rb   rc   Ú__doc__ÚBU_LC_INCREMENTAL_STRATEGYr   r²   rÁ   r   r$   r"   r£   r£     sU   € € € € € ðð ð$ ,ØØØ$ð)ð )ð )ð )ðV!ð !ð !ð !ð !ð !r$   r£   c                   ó   — e Zd Zd„ ZdS )ÚEarleyChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )r£   r²   ÚEARLEY_STRATEGY©r+   r{   Úparser_argss      r"   r²   zEarleyChartParser.__init__  s%   € ÝÔ'¨¨gµÐVÐVÈ+ÐVÐVÐVÐVÐVr$   N©ra   rb   rc   r²   r   r$   r"   rÅ   rÅ   ~  s(   € € € € € ðWð Wð Wð Wð Wr$   rÅ   c                   ó   — e Zd Zd„ ZdS )ÚIncrementalTopDownChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )r£   r²   ÚTD_INCREMENTAL_STRATEGYrÈ   s      r"   r²   z&IncrementalTopDownChartParser.__init__„  ó6   € ÝÔ'Ø�'Õ2ð	
ð 	
Ø6Að	
ð 	
ð 	
ð 	
ð 	
r$   NrÊ   r   r$   r"   rÌ   rÌ   ƒ  ó#   € € € € € ð
ð 
ð 
ð 
ð 
r$   rÌ   c                   ó   — e Zd Zd„ ZdS )ÚIncrementalBottomUpChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )r£   r²   ÚBU_INCREMENTAL_STRATEGYrÈ   s      r"   r²   z'IncrementalBottomUpChartParser.__init__‹  rÏ   r$   NrÊ   r   r$   r"   rÒ   rÒ   Š  rÐ   r$   rÒ   c                   ó   — e Zd Zd„ ZdS )Ú(IncrementalBottomUpLeftCornerChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )r£   r²   rÃ   rÈ   s      r"   r²   z1IncrementalBottomUpLeftCornerChartParser.__init__’  s6   € ÝÔ'Ø�'Õ5ð	
ð 	
Ø9Dð	
ð 	
ð 	
ð 	
ð 	
r$   NrÊ   r   r$   r"   rÖ   rÖ   ‘  rÐ   r$   rÖ   c                   ó   — e Zd Zd„ ZdS )Ú IncrementalLeftCornerChartParserc                 ó~   — |                      ¦   «         st          d¦  «        ‚t          j        | |t          fi |¤Ž d S )NzNIncrementalLeftCornerParser only works for grammars without empty productions.)Úis_nonemptyrN   r£   r²   ÚLC_INCREMENTAL_STRATEGYrÈ   s      r"   r²   z)IncrementalLeftCornerChartParser.__init__™  sc   € Ø×"Ò"Ñ$Ô$ð 	Ýð-ñô ð õ 	Ô'Ø�'Õ2ð	
ð 	
Ø6Að	
ð 	
ð 	
ð 	
ð 	
r$   NrÊ   r   r$   r"   rÙ   rÙ   ˜  s#   € € € € € ð
ð 
ð 
ð 
ð 
r$   rÙ   c                   ó   — e Zd Zedefd„ZdS )ÚFeatureIncrementalChartParseré   c                 ó4   — t          j        | |f|||dœ|¤Ž d S )N)r­   r¯   r°   )r£   r²   )r+   r{   r­   r¯   r°   rÉ   s         r"   r²   z&FeatureIncrementalChartParser.__init__Ä  sH   € õ 	Ô'ØØð	
ð Ø/Ø#ð	
ð 	
ð ð	
ð 	
ð 	
ð 	
ð 	
r$   N)ra   rb   rc   Ú"BU_LC_INCREMENTAL_FEATURE_STRATEGYre   r²   r   r$   r"   rÞ   rÞ   Ã  s3   € € € € € ð 4ØØ+ð
ð 
ð 
ð 
ð 
ð 
r$   rÞ   c                   ó   — e Zd Zd„ ZdS )ÚFeatureEarleyChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )rÞ   r²   ÚEARLEY_FEATURE_STRATEGYrÈ   s      r"   r²   z!FeatureEarleyChartParser.__init__×  s6   € Ý%Ô.Ø�'Õ2ð	
ð 	
Ø6Að	
ð 	
ð 	
ð 	
ð 	
r$   NrÊ   r   r$   r"   rã   rã   Ö  rÐ   r$   rã   c                   ó   — e Zd Zd„ ZdS )Ú$FeatureIncrementalTopDownChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )rÞ   r²   ÚTD_INCREMENTAL_FEATURE_STRATEGYrÈ   s      r"   r²   z-FeatureIncrementalTopDownChartParser.__init__Þ  ó6   € Ý%Ô.Ø�'Õ:ð	
ð 	
Ø>Ið	
ð 	
ð 	
ð 	
ð 	
r$   NrÊ   r   r$   r"   rç   rç   Ý  rÐ   r$   rç   c                   ó   — e Zd Zd„ ZdS )Ú%FeatureIncrementalBottomUpChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )rÞ   r²   ÚBU_INCREMENTAL_FEATURE_STRATEGYrÈ   s      r"   r²   z.FeatureIncrementalBottomUpChartParser.__init__å  rê   r$   NrÊ   r   r$   r"   rì   rì   ä  rÐ   r$   rì   c                   ó   — e Zd Zd„ ZdS )Ú/FeatureIncrementalBottomUpLeftCornerChartParserc                 ó8   — t          j        | |t          fi |¤Ž d S r   )rÞ   r²   rá   rÈ   s      r"   r²   z8FeatureIncrementalBottomUpLeftCornerChartParser.__init__ì  s6   € Ý%Ô.Ø�'Õ=ð	
ð 	
ØALð	
ð 	
ð 	
ð 	
ð 	
r$   NrÊ   r   r$   r"   rð   rð   ë  rÐ   r$   rð   TFé   ú$I saw John with a dog with my cookieé   c                 óÔ  — ddl }ddl}ddlm}  |¦   «         }	|rt	          d¦  «         t	          |	¦  «         t	          d¦  «         t	          |¦  «         |                     ¦   «         }
t	          |
¦  «         t	          ¦   «          t          |	|¬¦  «        }t          ¦   «         }|                     |
¦  «        }t          | 
                    |	                     ¦   «         ¦  «        ¦  «        }t          ¦   «         |z
  }|rt          |¦  «        |k    s
J d¦   «         ‚|r|D ]}t	          |¦  «         Œnt	          dt          |¦  «        ¦  «         | rt	          d	|¦  «         dS dS )
z0
    A demonstration of the Earley parsers.
    r   N)Údemo_grammarz	* Grammarz* Sentence:)r®   zNot all parses foundz	Nr trees:zTime:)ÚsysÚtimeÚnltk.parse.chartrö   r·   ÚsplitrÅ   r   rÁ   r.   Úparsesrt   Úlen)Úprint_timesÚprint_grammarÚprint_treesr®   ÚsentÚ	numparsesr÷   rø   rö   r{   rº   ÚearleyÚtrz   rû   Útrees                   r"   Údemor  ÷  s…  € ð €J€J€JØ€K€K€Kà-Ð-Ð-Ð-Ð-Ð-ð ˆl‰nŒn€GØð ÝˆkÑÔÐÝˆg‰Œˆõ 
ˆ-ÑÔÐÝ	ˆ$�K„K€KØ�ZŠZ‰\Œ\€FÝ	ˆ&�M„M€MÝ	�G„G€Gõ ˜w¨eÐ4Ñ4Ô4€FÝ‰Œ€AØ×Ò˜vÑ&Ô&€EÝ�%—,’,˜wŸ}š}™œÑ/Ô/Ñ0Ô0€FÝ‰Œ˜Ñ€Að ð @Ý�6‰{Œ{˜iÒ'Ð'Ð'Ð)?Ñ'Ô'Ð'Øð (Øð 	ð 	ˆDÝ�$‰KŒKˆKˆKð	õ 	ˆk�3˜v™;œ;Ñ'Ô'Ð'Øð Ýˆg�qÑÔÐÐÐðð r$   Ú__main__N)TFTrò   ró   rô   );rÂ   rø   r   rù   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Únltk.parse.featurechartr   r   r   r   r   r   r   r   r   re   rq   r‚   rŒ   r�   r“   r—   r›   rŸ   r¡   rÇ   rÎ   rÔ   rÃ   rÜ   r£   rÅ   rÌ   rÒ   rÖ   rÙ   rå   ré   rî   rá   rÞ   rã   rç   rì   rð   r  ra   r   r$   r"   ú<module>r     s?  ððð ð  Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð >,ð >,ð >,ð >,ð >,�uñ >,ô >,ð >,ðB.9ð .9ð .9ð .9ð .9Ð.°ñ .9ô .9ð .9ðl
ð 
ð 
ð 
ð 
Ð7ñ 
ô 
ð 
ðJð Jð Jð Jð JÐ+ñ Jô Jð JðJð Jð Jð Jð JÐ)ñ Jô Jð Jð	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ðBð Bð Bð Bð BÐ&Gñ Bô Bð Bð	Gð 	Gð 	Gð 	Gð 	GÐ%Eñ 	Gô 	Gð 	Gð9ð 9ð 9ð 9ð 9˜=ñ 9ô 9ð 9ð9ð 9ð 9ð 9ð 9˜ñ 9ô 9ð 9ð	ð 	ð 	ð 	ð 	Ð4ñ 	ô 	ð 	ð €L�N„NØ€OÑÔØ€M�O„OØ€K�M„MØ€M�O„Oð€ð €L�N„NØ€OÑÔØÐÑÔØÐÑÔð	Ð ð €L�N„NØÐÑÔØÐÑÔØÐÑÔð	Ð ð €L�N„NØÐÑÔØÐÑ Ô ØÐÑÔð	Ð ð €L�N„NØ&Ð&Ñ(Ô(Ø#Ð#Ñ%Ô%ðÐ ð\ð \ð \ð \ð \˜[ñ \ô \ð \ð~Wð Wð Wð Wð WÐ.ñ Wô Wð Wð

ð 
ð 
ð 
ð 
Ð$:ñ 
ô 
ð 
ð
ð 
ð 
ð 
ð 
Ð%;ñ 
ô 
ð 
ð
ð 
ð 
ð 
ð 
Ð/Eñ 
ô 
ð 
ð	
ð 	
ð 	
ð 	
ð 	
Ð'=ñ 	
ô 	
ð 	
ð" €L�N„NØÐÑÔØÐÑÔØÐÑÔØÐÑÔðÐ ð €L�N„NØÐÑÔØÐÑÔØ"Ð"Ñ$Ô$ð	#Ð ð €L�N„NØÐÑÔØÐÑ Ô Ø"Ð"Ñ$Ô$ð	#Ð ð €L�N„NØÐÑÔØ%Ð%Ñ'Ô'Ø"Ð"Ñ$Ô$ð	&Ð "ð
ð 
ð 
ð 
ð 
Ð$:Ð<Nñ 
ô 
ð 
ð&
ð 
ð 
ð 
ð 
Ð<ñ 
ô 
ð 
ð
ð 
ð 
ð 
ð 
Ð+Hñ 
ô 
ð 
ð
ð 
ð 
ð 
ð 
Ð,Iñ 
ô 
ð 
ð
ð 
ð 
ð 
ð 
Ð6Sñ 
ô 
ð 
ð ØØØ
Ø	/Øð-ð -ð -ð -ð` ˆzÒÐØ€D�F„F€F€F€Fð Ðr$   