+
    ÖÇÜhó  ã                   ó"   € ^ RI t  ! R R4      tR# )é    Nc                   ó6   a € ] tR t^t o RtR tR tR tRtV t	R# )ÚDependencyEvaluatorae  
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                ó   € Wn         W n        R# )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   a€ 0 RmoRP                  V3R lV 4       4      # )z‰
Function to remove punctuation from Unicode string.
:param input: the input string
:return: Unicode string after remove all punctuation
Ú c              3   ób   <"  € T F$  p\         P                  ! V4      S9  g   K   Vx € K&  	  R # 5i)N)ÚunicodedataÚcategory)Ú.0ÚxÚpunc_cats   & €r   Ú	<genexpr>Ú4DependencyEvaluator._remove_punct.<locals>.<genexpr>V   s%   øé € ÐS¡%˜Q¬;×+?Ò+?ÀÓ+BÈ(Ñ+R—q’q£%ùs   ƒ/¥
/>   ÚPcÚPdÚPeÚPfÚPiÚPoÚPs)Újoin)r   ÚinStrr   s   &&@r   Ú_remove_punctÚ!DependencyEvaluator._remove_punctO   s   ø€ ò >ˆØ�w‰wÔS¡%ÓSÓSÐSr   c                ó  € \        V P                  4      \        V P                  4      8w  d   \        R4      h^ p^ p^ p\	        \        V P                  4      4       EF  pV P                  V,          P
                  pV P                  V,          P
                  p\        V4      \        V4      8w  d   \        R4      hVP                  4        F¢  w  rxWg,          p	VR,          f   K  VR,          V	R,          8w  d   \        R4      hV P                  VR,          4      R8X  d   KY  V^,          pVR,          V	R,          8X  g   Ky  V^,          pVR,          V	R,          8X  g   K™  V^,          pK¤  	  EK  	  W#,          W,          3# )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.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"   r6   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s    ø‡ € ñ8òt&òT÷)+ð )+r   r   )r   r   © r   r   Ú<module>rA      s   ðó ÷u+ó u+r   