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值。如果需要以字為單位也得每個字加個空格。