pyrouge和rouge,文本摘要评测方法库

rouge是自动文本摘要算法的评估指标:
https://blog.csdn.net/qq_25222361/article/details/78694617

Rouge-1、Rouge-2、Rouge-L分别是:生成的摘要的1gram-2gram在真实摘要的1gram-2gram的准确率召回率和f1值,还有最长公共子序列在预测摘要中所占比例是准确率,在真实摘要中所占比例是召回率,然后可以计算出f1值。


pyrouge是现成的计算库,https://github.com/andersjo/pyrouge,安装方法 https://blog.csdn.net/qq_32458499/article/details/80282049(安装过程简直吐血,依赖perl语言的包,首先安装perl再安装各种依赖包,依赖包安装过程又发现要安装其他依赖包,一直安,各种错,最后依旧没安装成功)网上关于这个的介绍很多
关键点是:安装好perl,以及perl安装包的CPAN
能计算rouge 1/2/3/4/5/L


rouge这个库同样可以计算评价指标但只能计算rouge1/2/L,且十分方便 https://github.com/pltrdy/rouge https://pypi.org/project/rouge/0.2.1/

只需要pip install rouge, 然后代码里这样调用就行了

from rouge import Rouge

a = ["i am a student from xx school"]  # 预测摘要 (可以是列表也可以是句子)
b = ["i am a student from school on china"] #真实摘要

rouge = Rouge()
rouge_score = rouge.get_scores(a, b)
print(rouge_score[0]["rouge-1"])
print(rouge_score[0]["rouge-2"])
print(rouge_score[0]["rouge-l"])

结果
{'f': 0.7999999950222222, 'p': 0.8571428571428571, 'r': 0.75}
{'f': 0.6153846104142012, 'p': 0.6666666666666666, 'r': 0.5714285714285714}
{'f': 0.7929824561399953, 'p': 0.8571428571428571, 'r': 0.75}

tips: 对于英文,直接把句子输入即可,中文的话, 没有空格无法识别词,所以得分词之后再计算rouge值。如果需要以字为单位也得每个字加个空格。

你可能感兴趣的:(pyrouge和rouge,文本摘要评测方法库)