JL i ddlZGddZy)Nc"eZdZdZdZdZdZy)DependencyEvaluatora5 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 ||_||_y)z :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 Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/nltk/parse/evaluate.py__init__zDependencyEvaluator.__init__Gs *%c@hddjfd|DS)z Function to remove punctuation from Unicode string. :param input: the input string :return: Unicode string after remove all punctuation >PcPdPePfPiPoPsc3RK|]}tj|vs| yw)N) unicodedatacategory).0xpunc_cats r z4DependencyEvaluator._remove_punct..Vs#SQ;+?+?+B(+RqSs'')join)rinStrrs @r _remove_punctz!DependencyEvaluator._remove_punctOs >wwS%SSSr clt|jt|jk7r tdd}d}d}t t|jD]}|j|j }|j|j }t|t|k7r td|j D]e\}}||} |d|d| dk7r td|j|ddk(r?|dz }|d| dk(sP|dz }|d | d k(sa|dz }g||z ||z fS) z 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.rz!Sentences must have equal length.wordz!Sentence sequence is not matched.rheadrel)lenrr ValueErrorrangenodesitemsr ) rcorrcorrLtotaliparsed_sent_nodesgold_sent_nodesparsed_node_address parsed_node gold_nodes r evalzDependencyEvaluator.evalXst t!! "c$*:*:&; ;W s4--./ #A $ 2 21 5 ; ; "..q177O$%_)== !DEE4E4K4K4M #0#[+,?@ v&.v&)F*;;$%HII%%k&&9:b@ v&)F*;;AID"5)Yu-== # # #4u}dUl**r N)__name__ __module__ __qualname____doc__r r r4r r rr s8t&T)+r r)rrr9r r r:su+u+r