rouge與pyrouge使用事項

1.rouge介紹

ROUGE評價方法與pyramid惕橙,BLUE方法一起作為評價自動摘要質(zhì)量的內(nèi)部評價方法的三大中流砥柱。

  • ROUGE:recall-oriented understand for gisting evalution
  • 2004年谓形,Chin-Yew Lin 提出
  • 基本思想
    由多個專家分別生成人工摘要灶伊,構(gòu)成標準摘要集,將系統(tǒng)生成的自動摘要與人工生成的標準摘要相比較寒跳,通過統(tǒng)計二者之間重疊的基本單元(n元語法聘萨,詞序列和詞對)的數(shù)目,來評價摘要的質(zhì)量童太。通過多專家人工摘要的對比米辐,提高評價系統(tǒng)的穩(wěn)定性和健壯性碾牌。
    這個方法已經(jīng)成為評價摘要技術(shù)的通用標準之一。

2.評價標準

  • ROUGE-N
  • ROUGE-L
  • ROUGE-S
  • ROUGE-W
  • ROUGE-SU

3. ROUGE-N(N-gram Co-Occurrence Statistics)

  • N-gram模型


    n-gram模型.png

句子S由詞序列[圖片上傳失敗...(image-a49417-1542860196809)]組成儡循,計算句子S出現(xiàn)的概率 [圖片上傳失敗...(image-31d2bd-1542860196809)])最簡單舶吗,最直接的方法是計數(shù)后做除法,也就是最大似然估計(MLE)择膝,但是這樣做會面臨數(shù)據(jù)稀疏嚴重和參數(shù)空間巨大的問題誓琼,導致無法實用。于是一般采用n-gram模型肴捉,n-gram模型基于馬爾科夫假設(shè)腹侣,他認為,一個詞的出現(xiàn)僅僅依賴于他前面出現(xiàn)的有限的一個或者幾個詞齿穗。


rouge-n介紹.png

其中分母是n-gram的個數(shù)傲隶,分子是參考摘要和自動摘要共有的n-gram的個數(shù)窃页。舉例說明一下:

自動摘要Y(一般是自動生成的):
the cat was found under the bed
參考摘要跺株,X1 (gold standard ,人工生成的):
the cat was under the bed
summary的1-gram脖卖、2-gram如下乒省,N-gram以此類推:



rouge_1(X1,Y)= 6/6=1.0,分子是待評測摘要和參考摘要都出現(xiàn)的1-gram的個數(shù)畦木,分子是參考摘要的1-gram個數(shù)袖扛。(其實分母也可以是待評測摘要的,但是在精確率和召回率之間十籍,我們更關(guān)心的是召回率Recall蛆封,同時這也和上面ROUGN-N的公式相同)
同樣,Rouge_2(X1,Y)=4/5=0.8

4. ROUGE-L




image.png


5.ROUGE-W

ROUGE-W是ROUGW-L的改進版勾栗,例如下面這種情況



圖中惨篱,X 是參考文摘,Y1械姻,Y2是兩個待評測文摘妒蛇,明顯Y1 要優(yōu)于Y2 ,因為Y1 可以和參考摘要X 連續(xù)匹配楷拳,但是Rouge_L(X,Y1)=Rouge_L(X,Y2) ,針對這個問題論文作者提出了改進的方案—加權(quán)最長公共子序列(Weighted Longest Common Subsequence)吏奸。



6.ROUGE-S

即使用了skip-grams欢揖,在參考摘要和待評測摘要進行匹配時,不要求gram之間必須是連續(xù)的奋蔚,可以“跳過”幾個單詞她混,比如skip-bigram烈钞,在產(chǎn)生grams時,允許最多跳過兩個詞坤按。比如“cat in the hat”的 skip-bigrams 就是 “cat in, cat the, cat hat, in the, in hat, the hat”.

7.總結(jié)

8.rouge與pyrouge的安裝

使用pyrouge前毯欣,需要安裝好rouge.
下面兩個鏈接有相應(yīng)的安裝工具和教程

https://blog.csdn.net/qq_32458499/article/details/78994388

https://blog.csdn.net/Hay54/article/details/78744912

注意:Github上的ROUGE已經(jīng)不可以用了。

9.使用

def rouge(ref, hyp, log_path):
    assert len(ref) == len(hyp)
    ref_dir = log_path + 'reference/'
    cand_dir = log_path + 'candidate/'
    if not os.path.exists(ref_dir):
        os.mkdir(ref_dir)
    if not os.path.exists(cand_dir):
        os.mkdir(cand_dir)
    for i in range(len(ref)):
        with codecs.open(ref_dir+"%06d_reference.txt" % i, 'w', 'utf-8') as f:
            f.write(" ".join(ref[i]).replace(' ', '') + '\n')
        with codecs.open(cand_dir+"%06d_candidate.txt" % i, 'w', 'utf-8') as f:
            f.write(" ".join(hyp[i]).replace(' ', '').replace('<unk>', 'UNK') + '\n')

    r = pyrouge.Rouge155()
    r.model_filename_pattern = '#ID#_reference.txt'
    r.system_filename_pattern = '(\d+)_candidate.txt'
    r.model_dir = ref_dir
    r.system_dir = cand_dir
    logging.getLogger('global').setLevel(logging.WARNING)
    rouge_results = r.convert_and_evaluate()
    scores = r.output_to_dict(rouge_results)
    recall = [round(scores["rouge_1_recall"] * 100, 2),
              round(scores["rouge_2_recall"] * 100, 2),
              round(scores["rouge_l_recall"] * 100, 2)]
    precision = [round(scores["rouge_1_precision"] * 100, 2),
                 round(scores["rouge_2_precision"] * 100, 2),
                 round(scores["rouge_l_precision"] * 100, 2)]
    f_score = [round(scores["rouge_1_f_score"] * 100, 2),
               round(scores["rouge_2_f_score"] * 100, 2),
               round(scores["rouge_l_f_score"] * 100, 2)]
    print("F_measure: %s Recall: %s Precision: %s\n"
              % (str(f_score), str(recall), str(precision)))
    
    with codecs.open(ref_dir+"rougeScore", 'w+', 'utf-8') as f:
        f.write("F_measure: %s Recall: %s Precision: %s\n"
              % (str(f_score), str(recall), str(precision)))
    return f_score[:], recall[:], precision[:]

首先記得:import pyrouge
這里的ref是生成的摘要臭脓,hyp是系統(tǒng)參考摘要
regerence文件夾下酗钞,文件名為reference00.txt, 00代表數(shù)字編號

一定要記住
文件中都是一行一個句子!来累。
TXT文件中好像不允許出現(xiàn)'<'符號砚作,例如'<unk>',如果有可能會報錯嘹锁!

參考

https://blog.csdn.net/lime1991/article/details/42521029
https://blog.csdn.net/qq_25222361/article/details/78694617

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末葫录,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子领猾,更是在濱河造成了極大的恐慌米同,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摔竿,死亡現(xiàn)場離奇詭異窍霞,居然都是意外死亡,警方通過查閱死者的電腦和手機拯坟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門但金,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郁季,你說我怎么就攤上這事冷溃。” “怎么了梦裂?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵似枕,是天一觀的道長。 經(jīng)常有香客問我年柠,道長凿歼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任冗恨,我火速辦了婚禮答憔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掀抹。我一直安慰自己虐拓,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布傲武。 她就那樣靜靜地躺著蓉驹,像睡著了一般城榛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上态兴,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天狠持,我揣著相機與錄音,去河邊找鬼瞻润。 笑死喘垂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的敢订。 我是一名探鬼主播王污,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼楚午!你這毒婦竟也來了昭齐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤矾柜,失蹤者是張志新(化名)和其女友劉穎阱驾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怪蔑,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡里覆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缆瓣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喧枷。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弓坞,靈堂內(nèi)的尸體忽然破棺而出隧甚,到底是詐尸還是另有隱情,我是刑警寧澤渡冻,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布戚扳,位于F島的核電站,受9級特大地震影響族吻,放射性物質(zhì)發(fā)生泄漏帽借。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一超歌、第九天 我趴在偏房一處隱蔽的房頂上張望砍艾。 院中可真熱鬧,春花似錦握础、人聲如沸辐董。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽简烘。三九已至,卻和暖如春定枷,著一層夾襖步出監(jiān)牢的瞬間孤澎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工欠窒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留覆旭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親根欧。 傳聞我的和親對象是個殘疾皇子脚猾,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自http://www.cnblogs.com/Determined22/ 兩周以前讀了些文檔自動摘要的論文,...
    nightwish夜愿閱讀 10,600評論 0 6
  • 分手時 沒什么情景锯厢。 只是我這么多年一直在想,一個人想分手,另一個人說不同意腕铸。 說我不同意到底有什么用呢。
    木卯丁閱讀 172評論 3 1
  • 美娜美閱讀 86評論 0 1