ó
    ´OÂf6E  ã                   ór  • S r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJr  SSKJrJrJrJrJrJrJrJ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\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$\" 5       \" 5       \" 5       \" 5       \" 5       /r%\" 5       \" 5       \" 5       \" 5       /r&\" 5       \
" 5       \" 5       \" 5       /r'\" 5       \
" 5       \" 5       \" 5       /r(\" 5       \" 5       \ " 5       /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/\" 5       \" 5       \"" 5       \#" 5       \$" 5       /r0\" 5       \" 5       \" 5       \!" 5       /r1\" 5       \" 5       \" 5       \!" 5       /r2\" 5       \" 5       \" 5       \!" 5       /r3 " S' S(\*\5      r4 " S) S*\45      r5 " S+ S,\45      r6 " S- S.\45      r7 " S/ S0\45      r8      S4S1 jr9\:S2:X  a  \9" 5         g3g3)5aÕ  
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                   óD   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)ÚIncrementalCharté=   c                 ój   • [        S U R                  5        5       5      U l        0 U l        0 U l        g )Nc              3   ó&   #   • U  H  n/ v •  M	     g 7f©N© ©Ú.0Úxs     Ú8/usr/lib/python3/dist-packages/nltk/parse/earleychart.pyÚ	<genexpr>Ú.IncrementalChart.initialize.<locals>.<genexpr>@   s   é € Ð>Ò,= q¥Ò,=ùó   ‚)ÚtupleÚ
_positionsÚ
_edgelistsÚ_edge_to_cplsÚ_indexes©Úselfs    r#   Ú
initializeÚIncrementalChart.initialize>   s.   € äÑ>¨D¯O©OÔ,=Ó>Ó>ˆŒð  ˆÔð ˆ�ó    c                 ó4   • [        U R                  5       5      $ r   )ÚlistÚ	iteredgesr,   s    r#   ÚedgesÚIncrementalChart.edgesI   s   € Ü�D—N‘NÓ$Ó%Ð%r0   c                 ó(   • S U R                    5       $ )Nc              3   ó6   #   • U  H  o  H  o"v •  M     M     g 7fr   r   )r!   ÚedgelistÚedges      r#   r$   Ú-IncrementalChart.iteredges.<locals>.<genexpr>M   s   é € ÐJ¢_˜Ã¸”Á‘¢_ùs   ‚)r)   r,   s    r#   r3   ÚIncrementalChart.iteredgesL   s   € ÙJ T§_¢_ÓJÐJr0   c                 óL  ^• U R                   U   nT0 :X  a  [        U5      $ [        TR                  5       5      n[	        U5      nX@R
                  ;  a  U R                  U5        [	        U4S jU 5       5      n[        U R
                  U   U   R                  U/ 5      5      $ )Nc              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr   r   )r!   ÚkeyÚrestrictionss     €r#   r$   Ú*IncrementalChart.select.<locals>.<genexpr>^   s   øé € Ð=²*¨3�\ #Ö&²*ùs   ƒ©r)   ÚiterÚsortedÚkeysr'   r+   Ú
_add_indexÚget©r-   Úendr?   r8   Ú
restr_keysÚvalss     `   r#   ÚselectÚIncrementalChart.selectO   s’   ø€ Ø—?‘? 3Ñ'ˆð ˜2ÓÜ˜“>Ð!ô ˜L×-Ñ-Ó/Ó0ˆ
Ü˜:Ó&ˆ
ð Ÿ]™]Ó*Ø�O‰O˜JÔ'äÔ=±*Ó=Ó=ˆÜ�D—M‘M *Ñ-¨cÑ2×6Ñ6°t¸RÓ@ÓAÐAr0   c                 ó|  ^• U H&  n[        [        U5      (       a  M  [        SU-  5      e   [        S U R	                  5        5       5      =o0R
                  U'   [        U R                  5       HH  u  pEX4   nU H9  m[        U4S jU 5       5      nUR                  U/ 5      R                  T5        M;     MJ     g )NúBad restriction: %sc              3   ó&   #   • U  H  n0 v •  M	     g 7fr   r   r    s     r#   r$   Ú.IncrementalChart._add_index.<locals>.<genexpr>h   ó   é € Ð1PÒ>O¸µ"Ò>Oùr&   c              3   óF   >#   • U  H  n[        TU5      " 5       v •  M     g 7fr   ©Úgetattr©r!   r>   r9   s     €r#   r$   rP   n   s   øé € ÐHºZ°cœW T¨3Ô/×1Ð1ºZùó   ƒ!©
Úhasattrr	   Ú
ValueErrorr'   r(   r+   Ú	enumerater)   Ú
setdefaultÚappend©	r-   rI   r>   ÚindexrH   r8   Ú
this_indexrJ   r9   s	           @r#   rE   ÚIncrementalChart._add_indexa   s£   ø€ ãˆCÜœ5 #×&Ó&Ü Ð!6¸Ñ!<Ó=Ð=ñ ô
 -2Ñ1P¸d¿o¹oÔ>OÓ1PÓ,PÐPˆ—‘˜jÑ)ô ' t§¡Ö7‰MˆCØ™ˆJÛ �ÜÔH¹ZÓHÓH�Ø×%Ñ% d¨BÓ/×6Ñ6°tÖ<ó !ò 8r0   c                 óÜ   ^• TR                  5       nU R                  R                  5        H=  u  p4[        U4S jU 5       5      nXB   R	                  U/ 5      R                  T5        M?     g )Nc              3   óF   >#   • U  H  n[        TU5      " 5       v •  M     g 7fr   rS   rU   s     €r#   r$   Ú:IncrementalChart._register_with_indexes.<locals>.<genexpr>t   s   øé € ÐDº°#œ  sÔ+×-Ð-ºùrV   ©rH   r+   Úitemsr'   r[   r\   ©r-   r9   rH   rI   r^   rJ   s    `    r#   Ú_register_with_indexesÚ'IncrementalChart._register_with_indexesq   sU   ø€ Ø�h‰h‹jˆØ!%§¡×!4Ñ!4Ö!6ÑˆJÜÔD¹ÓDÓDˆDØ‰J×!Ñ! $¨Ó+×2Ñ2°4Ö8ò "7r0   c                 ó\   • U R                   UR                  5          R                  U5        g r   )r)   rH   r\   )r-   r9   s     r#   Ú_append_edgeÚIncrementalChart._append_edgew   s   € Ø�‰˜Ÿ™›
Ñ#×*Ñ*¨4Õ0r0   c                 ó:   • [        U R                  5       S-   5      $ )Né   )ÚrangeÚ
num_leavesr,   s    r#   r(   ÚIncrementalChart._positionsz   s   € Ü�T—_‘_Ó&¨Ñ*Ó+Ð+r0   )r*   r)   r+   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r.   r4   r3   rK   rE   rg   rj   r(   Ú__static_attributes__r   r0   r#   r   r   =   s,   † ò	ò&òKòBò$=ò 9ò1õ,r0   r   c                   ó&   • \ rS rSrS rS rS rSrg)ÚFeatureIncrementalCharté~   c                 óR  ^ ^• T R                   U   nT0 :X  a  [        U5      $ [        TR                  5       5      n[	        U5      nUT R
                  ;  a  T R                  U5        [	        UU 4S jU 5       5      n[        T R
                  U   U   R                  U/ 5      5      $ )Nc              3   óL   >#   • U  H  nTR                  TU   5      v •  M     g 7fr   )Ú_get_type_if_possible)r!   r>   r?   r-   s     €€r#   r$   Ú1FeatureIncrementalChart.select.<locals>.<genexpr>Ž   s'   øé € ð 
ÚEO¸cˆD×&Ñ& |°CÑ'8×9Ð9ÂZùs   ƒ!$rA   rG   s   ` `   r#   rK   ÚFeatureIncrementalChart.select   s�   ù€ Ø—?‘? 3Ñ'ˆð ˜2ÓÜ˜“>Ð!ô ˜L×-Ñ-Ó/Ó0ˆ
Ü˜:Ó&ˆ
ð ˜TŸ]™]Ó*Ø�O‰O˜JÔ'äõ 
ÙEOó
ó 
ˆô �D—M‘M *Ñ-¨cÑ2×6Ñ6°t¸RÓ@ÓAÐAr0   c                 ó‚  ^ ^• U H&  n[        [        U5      (       a  M  [        SU-  5      e   [        S T R	                  5        5       5      =nT R
                  U'   [        T R                  5       HI  u  pEX4   nU H:  m[        UU 4S jU 5       5      nUR                  U/ 5      R                  T5        M<     MK     g )NrN   c              3   ó&   #   • U  H  n0 v •  M	     g 7fr   r   r    s     r#   r$   Ú5FeatureIncrementalChart._add_index.<locals>.<genexpr>š   rQ   r&   c              3   ód   >#   • U  H%  nTR                  [        TU5      " 5       5      v •  M'     g 7fr   ©r{   rT   ©r!   r>   r9   r-   s     €€r#   r$   r€       s0   øé € ð â)˜ð ×.Ñ.¬w°t¸SÔ/AÓ/C×DÐDÚ)ùó   ƒ-0rW   r]   s	   `       @r#   rE   Ú"FeatureIncrementalChart._add_index“   s®   ù€ ãˆCÜœ5 #×&Ó&Ü Ð!6¸Ñ!<Ó=Ð=ñ ô
 -2Ñ1P¸d¿o¹oÔ>OÓ1PÓ,PÐPˆ�—‘˜jÑ)ô ' t§¡Ö7‰MˆCØ™ˆJÛ �Üõ á)óó �ð ×%Ñ% d¨BÓ/×6Ñ6°tÖ<ó !ò 8r0   c                 óà   ^ ^• TR                  5       nT R                  R                  5        H>  u  p4[        UU 4S jU 5       5      nXB   R	                  U/ 5      R                  T5        M@     g )Nc              3   ód   >#   • U  H%  nTR                  [        TU5      " 5       5      v •  M'     g 7fr   r‚   rƒ   s     €€r#   r$   ÚAFeatureIncrementalChart._register_with_indexes.<locals>.<genexpr>©   s,   øé € ð ÚLVÀS�×*Ñ*¬7°4¸Ô+=Ó+?×@Ð@ÊJùr„   rd   rf   s   ``    r#   rg   Ú.FeatureIncrementalChart._register_with_indexes¦   s^   ù€ Ø�h‰h‹jˆØ!%§¡×!4Ñ!4Ö!6ÑˆJÜõ ÙLVóó ˆDð ‰J×!Ñ! $¨Ó+×2Ñ2°4Ö8ò	 "7r0   r   N)rq   rr   rs   rt   rK   rE   rg   ru   r   r0   r#   rw   rw   ~   s   † òBò(=õ&9r0   rw   c                   ó   • \ rS rSrS rSrg)ÚCompleteFundamentalRuleé´   c              #   óð   #   • UR                  5       nUR                  XDSUR                  5       S9 H?  nUR                  UR                  5       5      nUR	                  XcU5      (       d  M;  Uv •  MA     g 7f©NT)ÚstartrH   Úis_completeÚlhs)rH   rK   ÚnextsymÚmove_dot_forwardÚinsert_with_backpointer)r-   ÚchartÚgrammarÚ	left_edgerH   Ú
right_edgeÚnew_edges          r#   Ú_apply_incompleteÚ)CompleteFundamentalRule._apply_incompleteµ   sk   é € Ø�m‰m‹oˆð  Ÿ,™,Ø¨D°i×6GÑ6GÓ6Ið 'ó 
ˆJð !×1Ñ1°*·.±.Ó2BÓCˆHØ×,Ñ,¨XÀ*×MÓMØ”ò
ùs   ‚A'A6Á-	A6r   N©rq   rr   rs   rt   rš   ru   r   r0   r#   r‹   r‹   ´   s   † õ	r0   r‹   c                   ó(   • \ rS rSr\" 5       rS rSrg)ÚCompleterRuleéÁ   c              #   ó„   #   • [        U[        5      (       d%  U R                  R                  XU5       S h  v•N   g g  N7fr   ©Ú
isinstancer   Ú_fundamental_ruleÚapply©r-   r•   r–   r9   s       r#   r¤   ÚCompleterRule.applyÄ   s6   é € Ü˜$¤×)Ñ)Ø×-Ñ-×3Ñ3°EÀDÓI×IÑIð *ÙIùó   ‚5A ·>¸A r   N©rq   rr   rs   rt   r‹   r£   r¤   ru   r   r0   r#   rž   rž   Á   ó   † Ù/Ó1ÐõJr0   rž   c                   ó(   • \ rS rSr\" 5       rS rSrg)ÚScannerRuleéÉ   c              #   ó„   #   • [        U[        5      (       a%  U R                  R                  XU5       S h  v•N   g g  N7fr   r¡   r¥   s       r#   r¤   ÚScannerRule.applyÌ   s6   é € Ü�dœH×%Ñ%Ø×-Ñ-×3Ñ3°EÀDÓI×IÑIð &ÙIùr§   r   Nr¨   r   r0   r#   r«   r«   É   r©   r0   r«   c                   ó   • \ rS rSrSrg)ÚPredictorRuleéÑ   r   N©rq   rr   rs   rt   ru   r   r0   r#   r°   r°   Ñ   ó   † Úr0   r°   c                   ó   • \ rS rSrS rSrg)ÚFilteredCompleteFundamentalRuleéÕ   c              #   óp   #   • UR                  5       (       a  U R                  XU5       S h  v•N   g g  N7fr   )r�   Ú_apply_completer¥   s       r#   r¤   Ú%FilteredCompleteFundamentalRule.applyÖ   s4   é € ð ×Ñ×ÑØ×+Ñ+¨E¸DÓA×AÑAð ÙAùs   ‚+6­4®6r   N)rq   rr   rs   rt   r¤   ru   r   r0   r#   rµ   rµ   Õ   s   † õBr0   rµ   c                   ó   • \ rS rSrS rSrg)ÚFeatureCompleteFundamentalRuleéâ   c              #   óÈ   #   • U R                   nUR                  5       nUR                  XUSUR                  5       S9 H  nUR	                  XX65       S h  v•N   M     g  N	7frŽ   )r£   rH   rK   r’   r¤   )r-   r•   r–   r—   ÚfrrH   r˜   s          r#   rš   Ú0FeatureCompleteFundamentalRule._apply_incompleteã   sa   é € Ø×#Ñ#ˆØ�m‰m‹oˆð  Ÿ,™,Ø¨D°i×6GÑ6GÓ6Ið 'ó 
ˆJð —x‘x °	ÓF×FÒFò
ñ Gùs   ‚AA"ÁA Á
A"r   Nrœ   r   r0   r#   r»   r»   â   s   † õGr0   r»   c                   ó"   • \ rS rSr\" 5       rSrg)ÚFeatureCompleterRuleéî   r   N©rq   rr   rs   rt   r»   r£   ru   r   r0   r#   rÁ   rÁ   î   ó   † Ù6Ó8Ór0   rÁ   c                   ó"   • \ rS rSr\" 5       rSrg)ÚFeatureScannerRuleéò   r   NrÃ   r   r0   r#   rÆ   rÆ   ò   rÄ   r0   rÆ   c                   ó   • \ rS rSrSrg)ÚFeaturePredictorRuleéö   r   Nr²   r   r0   r#   rÉ   rÉ   ö   r³   r0   rÉ   c                   ó4   • \ rS rSrSr\SS\4S jrS	S jrSr	g)
ÚIncrementalChartParseri  aÒ  
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                 ó(  • Xl         X0l        X@l        XPl        / U l        / U l        U Hf  nUR                  S:X  a  U R                  R                  U5        M0  UR                  S:X  a  U R
                  R                  U5        M]  [        S5      e   g)av  
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   rm   z9Incremental inference rules must have NUM_EDGES == 0 or 1N)	Ú_grammarÚ_traceÚ_trace_chart_widthÚ_chart_classÚ_axiomsÚ_inference_rulesÚ	NUM_EDGESr\   rY   )r-   r–   ÚstrategyÚtraceÚtrace_chart_widthÚchart_classÚrules          r#   Ú__init__ÚIncrementalChartParser.__init__/  s�   € ð4  ŒØŒØ"3ÔØ'ÔàˆŒØ "ˆÔÛˆDØ�~‰~ Ó"Ø—‘×#Ñ# DÖ)Ø—‘ 1Ó$Ø×%Ñ%×,Ñ,¨TÖ2ä ØRóð ò r0   Nc           	      óf  • Uc  U R                   nU R                  n[        U5      nU R                  R	                  U5        U R                  U5      nU R                  nU R                  UR                  5       S-   -  nU(       a  [        UR                  U5      5        U R                   H'  n[        UR                  XE5      5      nU" XGX‚U5        M)     U R                  n	[        UR                  5       S-   5       H®  n
US:”  a  [        SU
S5        [        UR                  U
S95      nU(       d  M7  UR                  5       nU	 HX  n[        UR                  XEU5      5      nU" XMX‚U5        U H*  nUR!                  5       U
:X  d  M  UR#                  U5        M,     MZ     U(       a  Mw  M°     U$ )Nrm   z
* Processing queue:Ú
)rH   )rÐ   Ú_trace_new_edgesr2   rÏ   Úcheck_coveragerÒ   rÑ   ro   ÚprintÚpretty_format_leavesrÓ   r¤   rÔ   rn   rK   ÚpoprH   r\   )r-   Útokensr×   Útrace_new_edgesr•   r–   Útrace_edge_widthÚaxiomÚ	new_edgesÚinference_rulesrH   Úagendar9   rÚ   r™   s                  r#   Úchart_parseÚ"IncrementalChartParser.chart_parseZ  sv  € Ø‰=Ø—K‘KˆEØ×/Ñ/ˆä�f“ˆØ�‰×$Ñ$ VÔ,Ø×!Ñ! &Ó)ˆØ—-‘-ˆð  ×2Ñ2°u×7GÑ7GÓ7IÈAÑ7MÑNÐÞÜ�%×,Ñ,Ð-=Ó>Ô?à—\”\ˆEÜ˜UŸ[™[¨Ó8Ó9ˆIÙ˜E¨)Ð<LÖMñ "ð ×/Ñ/ˆÜ˜×)Ñ)Ó+¨aÑ/Ö0ˆCØ�q‹yÜÐ-¨s°DÔ9Ü˜%Ÿ,™,¨3˜,Ð/Ó0ˆFß�&Ø—z‘z“|�Û+�DÜ $ T§Z¡Z°ÀÓ%EÓ F�IÙ# E°ÐCSÔTÛ$-˜Ø#Ÿ<™<›>¨SÕ0Ø"ŸM™M¨(Ö3ó %.ñ ,÷ ’&ñ	 1ð ˆr0   )rÓ   rÒ   rÏ   rÔ   rÐ   rÑ   r   )
rq   rr   rs   rt   Ú__doc__ÚBU_LC_INCREMENTAL_STRATEGYr   rÛ   rë   ru   r   r0   r#   rÌ   rÌ     s    † ñð$ ,ØØØ$ô)÷V!r0   rÌ   c                   ó   • \ rS rSrS rSrg)ÚEarleyChartParseri~  c                 ó<   • [         R                  " X[        40 UD6  g r   )rÌ   rÛ   ÚEARLEY_STRATEGY©r-   r–   Úparser_argss      r#   rÛ   ÚEarleyChartParser.__init__  s   € Ü×'Ò'¨´ÑVÈ+ÓVr0   r   N©rq   rr   rs   rt   rÛ   ru   r   r0   r#   rð   rð   ~  s   † õWr0   rð   c                   ó   • \ rS rSrS rSrg)ÚIncrementalTopDownChartParseriƒ  c                 ó<   • [         R                  " X[        40 UD6  g r   )rÌ   rÛ   ÚTD_INCREMENTAL_STRATEGYró   s      r#   rÛ   Ú&IncrementalTopDownChartParser.__init__„  ó   € Ü×'Ò'ØÔ2ñ	
Ø6Aó	
r0   r   Nrö   r   r0   r#   rø   rø   ƒ  ó   † õ
r0   rø   c                   ó   • \ rS rSrS rSrg)ÚIncrementalBottomUpChartParseriŠ  c                 ó<   • [         R                  " X[        40 UD6  g r   )rÌ   rÛ   ÚBU_INCREMENTAL_STRATEGYró   s      r#   rÛ   Ú'IncrementalBottomUpChartParser.__init__‹  rü   r0   r   Nrö   r   r0   r#   rÿ   rÿ   Š  rý   r0   rÿ   c                   ó   • \ rS rSrS rSrg)Ú(IncrementalBottomUpLeftCornerChartParseri‘  c                 ó<   • [         R                  " X[        40 UD6  g r   )rÌ   rÛ   rî   ró   s      r#   rÛ   Ú1IncrementalBottomUpLeftCornerChartParser.__init__’  s   € Ü×'Ò'ØÔ5ñ	
Ø9Dó	
r0   r   Nrö   r   r0   r#   r  r  ‘  rý   r0   r  c                   ó   • \ rS rSrS rSrg)Ú IncrementalLeftCornerChartParseri˜  c                 ó|   • UR                  5       (       d  [        S5      e[        R                  " X[        40 UD6  g )NzNIncrementalLeftCornerParser only works for grammars without empty productions.)Úis_nonemptyrY   rÌ   rÛ   ÚLC_INCREMENTAL_STRATEGYró   s      r#   rÛ   Ú)IncrementalLeftCornerChartParser.__init__™  sA   € Ø×"Ñ"×$Ñ$Üð-óð ô 	×'Ò'ØÔ2ñ	
Ø6Aó	
r0   r   Nrö   r   r0   r#   r  r  ˜  s   † õ
r0   r  c                   ó$   • \ rS rSr\S\4S jrSrg)ÚFeatureIncrementalChartParseriÃ  é   c                 ó<   • [         R                  " U U4UUUS.UD6  g )N)rÖ   rØ   rÙ   )rÌ   rÛ   )r-   r–   rÖ   rØ   rÙ   rô   s         r#   rÛ   Ú&FeatureIncrementalChartParser.__init__Ä  s2   € ô 	×'Ò'ØØð	
ð Ø/Ø#ñ	
ð ó	
r0   r   N)rq   rr   rs   rt   Ú"BU_LC_INCREMENTAL_FEATURE_STRATEGYrw   rÛ   ru   r   r0   r#   r  r  Ã  s   † ð 4ØØ+÷
r0   r  c                   ó   • \ rS rSrS rSrg)ÚFeatureEarleyChartParseriÖ  c                 ó<   • [         R                  " X[        40 UD6  g r   )r  rÛ   ÚEARLEY_FEATURE_STRATEGYró   s      r#   rÛ   Ú!FeatureEarleyChartParser.__init__×  s   € Ü%×.Ò.ØÔ2ñ	
Ø6Aó	
r0   r   Nrö   r   r0   r#   r  r  Ö  rý   r0   r  c                   ó   • \ rS rSrS rSrg)Ú$FeatureIncrementalTopDownChartParseriÝ  c                 ó<   • [         R                  " X[        40 UD6  g r   )r  rÛ   ÚTD_INCREMENTAL_FEATURE_STRATEGYró   s      r#   rÛ   Ú-FeatureIncrementalTopDownChartParser.__init__Þ  ó   € Ü%×.Ò.ØÔ:ñ	
Ø>Ió	
r0   r   Nrö   r   r0   r#   r  r  Ý  rý   r0   r  c                   ó   • \ rS rSrS rSrg)Ú%FeatureIncrementalBottomUpChartParseriä  c                 ó<   • [         R                  " X[        40 UD6  g r   )r  rÛ   ÚBU_INCREMENTAL_FEATURE_STRATEGYró   s      r#   rÛ   Ú.FeatureIncrementalBottomUpChartParser.__init__å  r  r0   r   Nrö   r   r0   r#   r  r  ä  rý   r0   r  c                   ó   • \ rS rSrS rSrg)Ú/FeatureIncrementalBottomUpLeftCornerChartParserië  c                 ó<   • [         R                  " X[        40 UD6  g r   )r  rÛ   r  ró   s      r#   rÛ   Ú8FeatureIncrementalBottomUpLeftCornerChartParser.__init__ì  s   € Ü%×.Ò.ØÔ=ñ	
ØALó	
r0   r   Nrö   r   r0   r#   r$  r$  ë  rý   r0   r$  c                 óT  • SSK nSSKnSSKJn  U" 5       n	U(       a  [	        S5        [	        U	5        [	        S5        [	        U5        UR                  5       n
[	        U
5        [	        5         [        X“S9n[        5       nUR                  U
5      n[        UR                  U	R                  5       5      5      n[        5       U-
  nU(       a  [        U5      U:X  d   S5       eU(       a  U H  n[	        U5        M     O[	        S[        U5      5        U (       a  [	        S	U5        gg)
z(
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ë   r2   Úparsesr�   Úlen)Úprint_timesÚprint_grammarÚprint_treesr×   ÚsentÚ	numparsesr)  r*  r(  r–   rä   ÚearleyÚtr•   r-  Útrees                   r#   Údemor7  ÷  së   € ó Ûå-ñ ‹n€GÞÜˆkÔÜˆgŒô 
ˆ-ÔÜ	ˆ$„KØ�Z‰Z‹\€FÜ	ˆ&„MÜ	„Gô ˜wÑ4€FÜ‹€AØ×Ñ˜vÓ&€EÜ�%—,‘,˜wŸ}™}›Ó/Ó0€FÜ‹˜Ñ€Aö Ü�6‹{˜iÓ'Ð?Ð)?Ó?Ð'ÞÛˆDÜ�$ŽKò ô 	ˆkœ3˜v›;Ô'ÞÜˆg�qÕð r0   Ú__main__N)TFTé   z$I saw John with a dog with my cookieé   );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   rw   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$  r7  rq   r   r0   r#   Ú<module>r<     s¹  ðñõ  ÷÷ ÷ õ ÷	÷ 	ó 	ô >,�uô >,ôB.9Ð.°ô .9ôl
Ð7ô 
ôJÐ+ô JôJÐ)ô Jô	Ð,ô 	ôBÐ&Gô Bô	GÐ%Eô 	Gô9˜=ô 9ô9˜ô 9ô	Ð4ô 	ñ ƒNÙÓÙƒOÙƒMÙƒOð€ñ ƒNÙÓÙÓÙÓð	Ð ñ ƒNÙÓÙÓÙÓð	Ð ñ ƒNÙÓÙÓ ÙÓð	Ð ñ ƒNÙ&Ó(Ù#Ó%ðÐ ô\˜[ô \ô~WÐ.ô Wô

Ð$:ô 
ô
Ð%;ô 
ô
Ð/Eô 
ô	
Ð'=ô 	
ñ" ƒNÙÓÙÓÙÓÙÓðÐ ñ ƒNÙÓÙÓÙ"Ó$ð	#Ð ñ ƒNÙÓÙÓ Ù"Ó$ð	#Ð ñ ƒNÙÓÙ%Ó'Ù"Ó$ð	&Ð "ô
Ð$:Ð<Nô 
ô&
Ð<ô 
ô
Ð+Hô 
ô
Ð,Iô 
ô
Ð6Sô 
ð ØØØ
Ø	/Øô-ð` ˆzÓÙ…Fð r0   