python-Rouge_N-评估模型的实现

版权声明: 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("我的世界是光明的","光明给我的世界以力量")

以上。

猜你喜欢

转载自blog.csdn.net/bensonrachel/article/details/83832155