ó
    ´OÂfó  ã                   ó    • S SK r  " S S5      rg)é    Nc                   ó*   • \ rS rSrSrS rS rS rSrg)ÚDependencyEvaluatoré   ae  
Class for measuring labelled and unlabelled attachment score for
dependency parsing. Note that the evaluation ignores punctuation.

>>> from nltk.parse import DependencyGraph, DependencyEvaluator

>>> gold_sent = DependencyGraph("""
... Pierre  NNP     2       NMOD
... Vinken  NNP     8       SUB
... ,       ,       2       P
... 61      CD      5       NMOD
... years   NNS     6       AMOD
... old     JJ      2       NMOD
... ,       ,       2       P
... will    MD      0       ROOT
... join    VB      8       VC
... the     DT      11      NMOD
... board   NN      9       OBJ
... as      IN      9       VMOD
... a       DT      15      NMOD
... nonexecutive    JJ      15      NMOD
... director        NN      12      PMOD
... Nov.    NNP     9       VMOD
... 29      CD      16      NMOD
... .       .       9       VMOD
... """)

>>> parsed_sent = DependencyGraph("""
... Pierre  NNP     8       NMOD
... Vinken  NNP     1       SUB
... ,       ,       3       P
... 61      CD      6       NMOD
... years   NNS     6       AMOD
... old     JJ      2       NMOD
... ,       ,       3       AMOD
... will    MD      0       ROOT
... join    VB      8       VC
... the     DT      11      AMOD
... board   NN      9       OBJECT
... as      IN      9       NMOD
... a       DT      15      NMOD
... nonexecutive    JJ      15      NMOD
... director        NN      12      PMOD
... Nov.    NNP     9       VMOD
... 29      CD      16      NMOD
... .       .       9       VMOD
... """)

>>> de = DependencyEvaluator([parsed_sent],[gold_sent])
>>> las, uas = de.eval()
>>> las
0.6
>>> uas
0.8
>>> abs(uas - 0.8) < 0.00001
True
c                 ó   • Xl         X l        g)zq
:param parsed_sents: the list of parsed_sents as the output of parser
:type parsed_sents: list(DependencyGraph)
N)Ú_parsed_sentsÚ_gold_sents)ÚselfÚparsed_sentsÚ
gold_sentss      Ú5/usr/lib/python3/dist-packages/nltk/parse/evaluate.pyÚ__init__ÚDependencyEvaluator.__init__G   s   € ð
 *ÔØ%Õó    c                 óB   ^• 1 SkmSR                  U4S jU 5       5      $ )z‰
Function to remove punctuation from Unicode string.
:param input: the input string
:return: Unicode string after remove all punctuation
>   ÚPcÚPdÚPeÚPfÚPiÚPoÚPsÚ c              3   ó`   >#   • U  H#  n[         R                  " U5      T;  d  M  Uv •  M%     g 7f)N)ÚunicodedataÚcategory)Ú.0ÚxÚpunc_cats     €r   Ú	<genexpr>Ú4DependencyEvaluator._remove_punct.<locals>.<genexpr>V   s%   øé € ÐS¢%˜Q¬;×+?Ò+?ÀÓ+BÈ(Ñ+R—q‘q¢%ùs   ƒ.¥	.)Újoin)r	   ÚinStrr   s     @r   Ú_remove_punctÚ!DependencyEvaluator._remove_punctO   s   ø€ ò >ˆØ�w‰wÔS¡%ÓSÓSÐSr   c                 ó‚  • [        U R                  5      [        U R                  5      :w  a  [        S5      eSnSnSn[	        [        U R                  5      5       HÙ  nU R                  U   R
                  nU R                  U   R
                  n[        U5      [        U5      :w  a  [        S5      eUR                  5        Hm  u  pxXg   n	US   c  M  US   U	S   :w  a  [        S5      eU R                  US   5      S:X  a  MB  US-  nUS   U	S   :X  d  MU  US-  nUS	   U	S	   :X  d  Mh  US-  nMo     MÛ     X#-  X-  4$ )
zn
Return the Labeled Attachment Score (LAS) and Unlabeled Attachment Score (UAS)

:return : tuple(float,float)
zE Number of parsed sentence is different with number of gold sentence.r   z!Sentences must have equal length.Úwordz!Sentence sequence is not matched.r   é   ÚheadÚrel)Úlenr   r   Ú
ValueErrorÚrangeÚnodesÚitemsr#   )
r	   ÚcorrÚcorrLÚtotalÚiÚparsed_sent_nodesÚgold_sent_nodesÚparsed_node_addressÚparsed_nodeÚ	gold_nodes
             r   ÚevalÚDependencyEvaluator.evalX   sb  € ô ˆt×!Ñ!Ó"¤c¨$×*:Ñ*:Ó&;Ó;ÜØWóð ð ˆØˆØˆä”s˜4×-Ñ-Ó.Ö/ˆAØ $× 2Ñ 2°1Ñ 5× ;Ñ ;ÐØ"×.Ñ.¨qÑ1×7Ñ7ˆOäÐ$Ó%¬¨_Ó)=Ó=Ü Ð!DÓEÐEà4E×4KÑ4KÖ4MÑ0Ð#Ø+Ñ@�	à˜vÑ&Ñ.ÙØ˜vÑ&¨)°FÑ*;Ó;Ü$Ð%HÓIÐIð ×%Ñ% k°&Ñ&9Ó:¸bÓ@Ùà˜‘
�Ø˜vÑ&¨)°FÑ*;Õ;Ø˜A‘I�DØ" 5Ñ)¨Y°uÑ-=Õ=Ø ™
šó# 5Nñ 0ð4 ‰}˜d™lÐ*Ð*r   )r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r#   r8   Ú__static_attributes__© r   r   r   r      s   † ñ8òt&òTõ)+r   r   )r   r   r@   r   r   Ú<module>rA      s   ðó ÷u+ò u+r   