版权声明: https://blog.csdn.net/bensonrachel/article/details/83832155
引用: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个数。
import jieba
#使用jieba进行分词
def Rouge_1(model, reference):#terms_reference为参考摘要,terms_model为候选摘要 ***one-gram*** 一元模型
terms_reference= jieba.cut(reference)#默认精准模式
terms_model= jieba.cut(model)
grams_reference = list(terms_reference)
grams_model = list(terms_model)
temp = 0
ngram_all = len(grams_reference)
for x in grams_reference:
if x in grams_model: temp=temp+1
rouge_1=temp/ngram_all
return rouge_1
def Rouge_2(model, reference):#terms_reference为参考摘要,terms_model为候选摘要 ***Bi-gram*** 2元模型
terms_reference = jieba.cut(reference)
terms_model = jieba.cut(model)
grams_reference = list(terms_reference)
grams_model = list(terms_model)
gram_2_model=[]
gram_2_reference=[]
temp = 0
ngram_all = len(grams_reference)-1
for x in range(len(grams_model)-1):
gram_2_model.append(grams_model[x] + grams_model[x+1])
for x in range(len(grams_reference)-1):
gram_2_reference.append(grams_reference[x] + grams_reference[x + 1])
for x in gram_2_model:
if x in gram_2_reference:temp=temp+1
rouge_2=temp/ngram_all
return rouge_2
def Rouge(model, reference):
print("rouge_1="+str(Rouge_1(model, reference)))
print("rouge_2="+str(Rouge_2(model, reference)))
#Rouge("我的世界是光明的","光明给我的世界以力量")
以上。