当前位置:   article > 正文

python-Rouge_N-评估模型的实现_python 计算rouge值 有多个参考值

python 计算rouge值 有多个参考值

引用:Rouge(Recall-Oriented Understudy for Gisting Evaluation),是评估自动文摘以及机器翻译的一组指标。它通过将自动生成的摘要或翻译与一组参考摘要(通常是人工生成的)进行比较计算,得出相应的分值,以衡量自动生成的摘要或翻译与参考摘要之间的“相似度”。

ROUGE准则由一系列的评价方法组成,包括ROUGE-N(N=1、2、3、4,分别代表基于1元词到4元词的模型),ROUGE-L,ROUGE-S, ROUGE-W,ROUGE-SU等。在自动文摘相关研究中,一般根据自己的具体研究内容选择合适的ROUGE方法。

不难看出,ROUGE公式是由召回率的计算公式演变而来的,分子可以看作系统生成摘要与标准摘要相匹配的N-gram个数,分母可以看作标准摘要中所有的N-gram个数。

  1. import jieba
  2. #使用jieba进行分词
  3. def Rouge_1(model, reference):#terms_reference为参考摘要,terms_model为候选摘要 ***one-gram*** 一元模型
  4. terms_reference= jieba.cut(reference)#默认精准模式
  5. terms_model= jieba.cut(model)
  6. grams_reference = list(terms_reference)
  7. grams_model = list(terms_model)
  8. temp = 0
  9. ngram_all = len(grams_reference)
  10. for x in grams_reference:
  11. if x in grams_model: temp=temp+1
  12. rouge_1=temp/ngram_all
  13. return rouge_1
  14. def Rouge_2(model, reference):#terms_reference为参考摘要,terms_model为候选摘要 ***Bi-gram*** 2元模型
  15. terms_reference = jieba.cut(reference)
  16. terms_model = jieba.cut(model)
  17. grams_reference = list(terms_reference)
  18. grams_model = list(terms_model)
  19. gram_2_model=[]
  20. gram_2_reference=[]
  21. temp = 0
  22. ngram_all = len(grams_reference)-1
  23. for x in range(len(grams_model)-1):
  24. gram_2_model.append(grams_model[x] + grams_model[x+1])
  25. for x in range(len(grams_reference)-1):
  26. gram_2_reference.append(grams_reference[x] + grams_reference[x + 1])
  27. for x in gram_2_model:
  28. if x in gram_2_reference:temp=temp+1
  29. rouge_2=temp/ngram_all
  30. return rouge_2
  31. def Rouge(model, reference):
  32. print("rouge_1="+str(Rouge_1(model, reference)))
  33. print("rouge_2="+str(Rouge_2(model, reference)))
  34. #Rouge("我的世界是光明的","光明给我的世界以力量")

以上。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/701689
推荐阅读
相关标签
  

闽ICP备14008679号