文本生成:自动摘要评价指标 Rouge
本文結(jié)構(gòu)概覽
- 不同的摘要任務(wù)下,選擇合適的Rouge指標(biāo)
- Rouge-N的理解與示例
- Rouge-L的理解與示例
- 代碼示例(char粒度 計(jì)算摘要的Rouge值)
- 代碼示例(word粒度 計(jì)算摘要的Rouge值)
- 個(gè)人思考
- Reference
Rouge的全名是Recall-Oriented Understudy for Gisting Evaluation,單看名字就會(huì)發(fā)現(xiàn)Rouge是由召回率演變而來(lái)的指標(biāo),用于衡量模型生成摘要文本的質(zhì)量。我們常說(shuō)的Rouge其實(shí)是一組評(píng)價(jià)指標(biāo)的統(tǒng)稱,包含Rouge-N, Rouge-L, Rouge-W, Rouge-S四個(gè)指標(biāo),它們的計(jì)算方式和適用場(chǎng)景有所不同。本文首先介紹了它們各自的適用場(chǎng)景和計(jì)算方式,并給出了簡(jiǎn)潔可用的代碼示例,最后寫(xiě)下了一點(diǎn)個(gè)人思考。
不同的摘要任務(wù)下,選擇合適的Rouge指標(biāo)
- 單文檔摘要任務(wù)中,ROUGE-2, ROUGE-L, ROUGE-W, 以及ROUGE-S表現(xiàn)很好
- 在短摘要/標(biāo)題式摘要任務(wù)中,ROUGE-1, ROUGE-L, ROUGE-W,
ROUGE-SU4, 以及ROUGE-SU9表現(xiàn)很棒 - 在多文檔摘要任務(wù)中,當(dāng)停用詞被排除在匹配之外時(shí),ROUGE-1, ROUGE-2, ROUGE-S4, ROUGE-S9, ROUGE-SU4, 以及ROUGE-SU9表現(xiàn)不錯(cuò)
- 排除停用詞通常能改善相關(guān)性評(píng)估
- 使用多個(gè)reference(ideal 摘要)可以改善相關(guān)性評(píng)估。
Rouge-N的理解與示例
n-gram召回率,Co-Occurrence Statistics
rouge-n=pred與ideal的n-gram重疊數(shù)量ideal的n-gram數(shù)量\text{rouge-n}=\frac{\text{pred與ideal的n-gram重疊數(shù)量}}{\text{ideal的n-gram數(shù)量}}rouge-n=ideal的n-gram數(shù)量pred與ideal的n-gram重疊數(shù)量?
分母是ideal字符串的n-gram個(gè)數(shù),因?yàn)镽ouge更關(guān)心recall值。(而B(niǎo)LEU更關(guān)心precision值)
簡(jiǎn)單地說(shuō),Rouge-n統(tǒng)計(jì)了pred和ideal兩個(gè)字符串的n-gram重疊單元的數(shù)量,并計(jì)算了重疊單元在ideal字符串中的占比,作為召回率。
以短摘要/title摘要任務(wù)為例:
ideal摘要:“武漢長(zhǎng)江大橋”
pred摘要:“武漢市長(zhǎng)江大橋”
| 1-gram | 武 / 漢 / 長(zhǎng) / 江 / 大/ 橋 武 / 漢 / 市 / 長(zhǎng) / 江 / 大/ 橋 | ideal:6 重疊:6 | Rouge-1=66=1\text{Rouge-1}=\frac{6}{6}=1Rouge-1=66?=1 |
| 2-gram | 武漢 / 漢長(zhǎng) / 長(zhǎng)江 / 江大 / 大橋 武漢 / 漢市 / 市長(zhǎng) / 長(zhǎng)江 / 江大 / 大橋 | ideal:5 重疊:4 | Rouge-2=45=0.8\text{Rouge-2}=\frac{4}{5}=0.8Rouge-2=54?=0.8 |
注:如有多個(gè)ideal摘要,怎么計(jì)算?
分別計(jì)算每個(gè)ideal摘要和pred摘要的Rouge值,并取其中最大值,作為當(dāng)前pred摘要的Rouge值。
rouge-nmulti=argmaxi{rouge-n(ideali,pred)}\text{rouge-n}_{multi} = argmax_i \text{\{rouge-n}(ideal_i, pred)\} rouge-nmulti?=argmaxi?{rouge-n(ideali?,pred)}
Rouge-L的理解與示例
最長(zhǎng)公共子序列,Longest Common Subsequence(LCS)
- LCS和最長(zhǎng)公共子串不同,不要求連續(xù),保序即可
- Rouge-N 只關(guān)注匹配單元的數(shù)量,像詞袋一樣,不關(guān)注詞序
- Rouge-L 關(guān)注詞序
Rlcs=lcs長(zhǎng)度ideal字符串長(zhǎng)度,Plcs=lcs長(zhǎng)度pred字符串長(zhǎng)度,Flcs=(1+β2)RlcsPlcsRlcs+β2PlcsR_{lcs} = \frac{lcs長(zhǎng)度}{ideal字符串長(zhǎng)度}, P_{lcs}=\frac{lcs長(zhǎng)度}{pred字符串長(zhǎng)度}, F_{lcs}=\frac{(1+\beta^2)R_{lcs}P_{lcs}}{R_{lcs}+\beta^2P_{lcs}}Rlcs?=ideal字符串長(zhǎng)度lcs長(zhǎng)度?,Plcs?=pred字符串長(zhǎng)度lcs長(zhǎng)度?,Flcs?=Rlcs?+β2Plcs?(1+β2)Rlcs?Plcs??
注:lcs經(jīng)過(guò)了去重
以文檔摘要任務(wù)為例:
ideal摘要:“礦泉水和純凈水的所含物質(zhì)不同”
pred摘要:“礦泉水含有豐富的礦物質(zhì)元素,純凈水不含礦物質(zhì)”
| 句子1 | ideal:礦泉水和純凈水的所含物質(zhì)不同 pred:礦泉水含有豐富的礦物質(zhì)元素 | 礦 泉 水 的 物 質(zhì) | |
| 句子2 | ideal:礦泉水和純凈水的所含物質(zhì)不同 pred:純凈水不含礦物質(zhì) | 純 凈 水 含 物 質(zhì) | |
| 合并去重 | ideal長(zhǎng)度: 14 pred長(zhǎng)度: 21 | 礦 泉 水 純 凈 水 的 含 物 質(zhì) lcs長(zhǎng)度:10 | Rlcs=1014=0.714R_{lcs}=\frac{10}{14}=0.714Rlcs?=1410?=0.714 Plcs=1021=0.476P_{lcs}=\frac{10}{21}=0.476Plcs?=2110?=0.476 |
代碼示例(char粒度 計(jì)算摘要的Rouge值)
from rouge import Rougepred = '武漢市長(zhǎng)江大橋' ideal = '武漢長(zhǎng)江大橋'# Rouge()按空格分隔gram,所以要在中文的字和字之間加上空格 pred, ideal = ' '.join(pred), ' '.join(ideal)# 計(jì)算字粒度的rouge-1、rouge-2、rouge-L rouge = Rouge() rouge_scores = rouge.get_scores(hyps=pred, refs=ideal)結(jié)果如下
>>> pred '武 漢 市 長(zhǎng) 江 大 橋' >>> ideal '武 漢 長(zhǎng) 江 大 橋' >>> rouge_scores [{'rouge-1': {'r': 1.0, 'p': 0.8571428571428571, 'f': 0.9230769181065088}, 'rouge-2': {'r': 0.8, 'p': 0.6666666666666666, 'f': 0.7272727223140496}, 'rouge-l': {'r': 1.0, 'p': 0.8571428571428571, 'f': 0.9230769181065088}}]代碼示例(word粒度 計(jì)算摘要的Rouge值)
from rouge import Rouge import jiebapred = '武漢市長(zhǎng)江大橋' ideal = '武漢長(zhǎng)江大橋'# 采用jieba分詞 pred = ' '.join(jieba.cut(pred, HMM=False)) ideal = ' '.join(jieba.cut(ideal, HMM=False))# 計(jì)算詞粒度的rouge-1、rouge-2、rouge-L rouge = Rouge() rouge_scores = rouge.get_scores(hyps=pred, refs=ideal)結(jié)果如下,
>>> pred '武漢市 長(zhǎng)江大橋' >>> ideal '武漢長(zhǎng)江大橋' >>> rouge_scores [{'rouge-1': {'r': 0.0, 'p': 0.0, 'f': 0.0}, 'rouge-2': {'r': 0.0, 'p': 0.0, 'f': 0.0}, 'rouge-l': {'r': 0.0, 'p': 0.0, 'f': 0.0}}]個(gè)人思考
word粒度的Rouge計(jì)算有兩個(gè)缺點(diǎn):
- 受jieba分詞的影響,分詞錯(cuò)誤就會(huì)評(píng)估錯(cuò)誤。
- 降低了長(zhǎng)詞的重要性,這樣一來(lái),模型更傾向于擬合容易預(yù)測(cè)的短詞。
word粒度的Rouge也有明顯的優(yōu)點(diǎn):
- 更好地評(píng)估模型對(duì)專有名詞的擬合程度。
在蘇神的文章中,看到了一個(gè)結(jié)合了字粒度Rouge和詞粒度Rouge各自優(yōu)點(diǎn)的方法,簡(jiǎn)單來(lái)說(shuō),還是以詞為匹配單位,把詞的長(zhǎng)度作為權(quán)重,為Rouge做一個(gè)加權(quán)即可。比如上文的“武漢長(zhǎng)江大橋”,如果匹配對(duì)了,就給6分,而不是1分。這個(gè)方法需要自己實(shí)現(xiàn)Rouge計(jì)算函數(shù)。
Reference
- ROUGE: A Package for Automatic Evaluation of Summaries
- 科學(xué)空間 - SPACES:“抽取-生成”式長(zhǎng)文本摘要(法研杯總結(jié))
總結(jié)
以上是生活随笔為你收集整理的文本生成:自动摘要评价指标 Rouge的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 带你认识Proxy
- 下一篇: ML binning