最全面的文本生成评价指标大盘点

点击下面卡片关注我呀,每天给你送来AI技术干货!

来自:NLP情报局

文本生成是自然语言处理最基础的任务之一,应用广泛,包括闲聊、写诗、作曲、讲故事等等,如图是清华大学“九歌”机器人生成的五言绝句。

本文聚焦于文本生成的评价方式,通过综述论文解读,介绍文本生成多种评价方式及优缺点。

论文标题:

Evaluation of Text Generation: A Survey

链接:

https://arxiv.org/abs/2006.14799

文本生成的评价指标是一个很棘手的问题,因为语言表达具有多样性,比如在使用CVAE生成商品的描述时,同一种文本条件,能够生成多条含义接近的语句。当前文本评价最好的方法当属人工评价,即组织评价人员直接根据文本的特征如语义,流畅性等进行打分。

尽管通过人工评价的方式能很好的判定模型生成文本的质量,但该方法的缺点在于1)成本巨大,耗时长,不利于生成领域中研究的迭代;2)不同人工评价结果可能差异很大,质量不能完全保证;3)人工评价的实验结果通常难以复现。

想着每次需要找人评价不太正常的文本,他痛苦,自己更痛苦更难受。

文本生成的发展经历了规则的方式、数据驱动的表示学习以及DNN的无监督方式,常用于对话,问答,摘要生成,机器翻译,image captioning等领域。当前主要的评价方式有如下三种:

  1. 人工评价方式。比如通过turing test(图灵测试)判定文本是否为机器生成的。

  2. 自动评价方式。这些方法是基于文本的中字符串/内容的重叠,词汇的多样性,词之间的距离等方式判定整个文本的生成质量。

  3. Machine-Learned Metrics。使用机器学习的模型通过数值判断两个文本之间的相似性。

人工评价方法

人工评价方法分为Intrinsic Evaluation,extrinsic evaluation,the evaluator和Inter-evaluator Agreement等4类,下面将简要介绍不同方法。

Intrinsic Evaluation

比较生成的文本和目标文本的属性例如流畅性,内部关联性,正确性等。

Extrinsic Evaluation

评价生成的文本在下游子任务上的表现判断其效果。但是实施的难度和成本都比intrinsic evaluation要高,故没有后者常用。该方法相当于通过文本在具体场景中的应用情况,判定文本质量。extrinsic human evaluatoin 通常在对话当中使用,通过对话的持续长度或者是用户对系统的体验排序进行评估。

The Evaluator

通过雇佣特定的人群进行文本的评估。研究人员能够和评估人员进行直接的交流,方便掌控研究进度,实时调整。但存在耗时长,成本高等问题,同时评估人员可能会根据研究人员的喜好做出不那么客观的评价。

Inter-evaluator Agreement

不同评估人员之间的分歧,能够作为一个有用的方式用以判定文本生成的效果。评估人员高度统一的结果意味着任务被很好地定义。下面介绍几种常用的表征评估一致性方法

Percent  agreement

用以判定所有人一致同意的程度。使用X表示待评估的文本,|X|表示文本的数量,ai表示每所有评估人员对xi的评估结果,当所有评估人员评估一致时,ai=1,否则等于0.

Cohen’s k

该指标能够捕捉评估一致的随机性。除了上文的Pa外,引入新的指标Pc。对于两个评估人员e1、e2,对文本集X的评估分数是集合S,那么可得到Pc:P(s|ei)使用每个评估人员给出分数s的频率估计。最后能够得到和评估一致随机性相关的结果Cohen's k:

除此之外,Fleiss’ k指标用于超过2个评估人员的场景,Krippendorff’s alpha用于判定评测人员之间的不一致性。

由于人工评价文本耗时耗力,成本很高,同时具有不可重复性,因此自动评价方式的意义在于能够快速比较出不同模型的性能差异,并能根据该指标的反馈进行新模型的构建。

本文将自动评价方式分为两类:一类是不需要通过训练的自动方法,另一类是基于模型训练的方法

非训练自动评价方法

该方法用于测量模型生成的文本的有效性。常用于machine translation, image captioning, question generation 等领域,能够快速且有效地比较生成文本和目标文本的相似性。具体可以分为如下5类:

  • n-gram overlap metrics

  • distance-based metrics

  • diversity metrics

  • content overlap metrics

  • grammatical feature based metrics

n-gram overlap metrics

f-score

该值权衡了precision和recall,最常用的版本是F1-score,常用于机器翻译,摘要生成,阅读理解。在“TensorFlow 2.0 Question Answering”比赛中(https://www.kaggle.com/c/tensorflow2-question-answering/overview/evaluation),使用了F1-score作为评价指标,但TP,FP,FN的计算方式与常见的不同:

bleu

BLEU(The Bilingual Evaluation Understudy)最开始在机器翻译领域中使用,用于比较翻译文本和参考文本的相似性。BLUE是由带权重n-gram的precision值得到。

在机器翻译领域,BLEU的分值和人工评价的关联度很好,表明了其在该领域的适用性。BLEU还用在其他文本生成领域,如image captioning和human-machine conversation。研究表明 BLEU 适用于评估短文本生成任务,而不适用于长文本场景(story generation)中。原因在于它不能很好的评价上下文理解上的关联。

BLEU的计算方法[https://stackoverflow.com/questions/32395880/calculate-bleu-score-in-python/39062009]:

import nltk

hypothesis = ['It', 'is', 'a', 'cat', 'at', 'room']
reference = ['It', 'is', 'a', 'cat', 'inside', 'the', 'room']
#there may be several references
BLEUscore = nltk.translate.bleu_score.sentence_bleu([reference], hypothesis)
print(BLEUscore)

rouge

「ROUGE」(Recall-Oriented Understudy for Gisting Evaluation)表示的是一系列的方法集合,常用于对有多个句子或者段落构成的长文本进行摘要生成

rouge也用于机器翻译,image captioning,问题生成等短文本生成领域。根据计算grams的基本单元分为多种,如:rouge-{1/2/3/4},rouge-l。rouge和BLEU比较类似,都是基于n-grams的方式计算文本的相似性,但前者关注于recall而不是precision,同时比BLEU更有可解释性。

除此之外,rouge的问题在于它不适用于长文本生成,因为它并不能很好的提供语法等方面的信息。

from rouge import Rouge
def get_score(pre_text,org_text): 
    rouge = Rouge()
    return rouge.get_scores(pre_text, org_text)
    
pre_text=' '.join(list("出口专用柔丝雪粒绒中空透气纤维,具有良好的透气性"))
org_text=' '.join(list("被子透气"))
get_score(pre_text,org_text)

输出:

[{'rouge-1': {'f': 0.14285714040816327, 'p': 0.08333333333333333, 'r': 0.5},
  'rouge-2': {'f': 0.07692307488165685,
   'p': 0.043478260869565216,
   'r': 0.3333333333333333},
  'rouge-l': {'f': 0.1538461512426036, 'p': 0.09090909090909091, 'r': 0.5}}]

meteor

meteor(The Metric for Evaluation of Translation with Explicit ORdering)的提出是为了解决BLEU的不足,与只测量精度的BLEU相比,meteor是基于unigram精度和召回率的调和平均值,可以看作是BLEU的升级版

meteor 广泛应用于机器翻译中,也适用于image captioning,question generation和summarization等领域。同时metor的变体版本可以扩展该类别中的大多数指标不包括的精确词匹配,例如词干和同义词匹配。这些变体解决了参考翻译可变性的问题,允许将词形态变体和同义词识别为有效的翻译。使用工具计算的样例代码:

import nltk

hypothesis = ' '.join(['It', 'is', 'a', 'cat', 'at', 'room'])
reference = ' '.join(['It', 'is', 'a', 'cat', 'inside', 'the', 'room'])
#there may be several references
merteor_score = nltk.translate.meteor_score.single_meteor_score(reference, hypothesis)
print(merteor_score)

cider

cider(Consensus-based Image Description Evaluation)是基于共识的图像描述评估方法。它可以基于文本生成模型的“人类相似性”进行比较,而无需创建对内容、语法、显着性等相互权衡的任意调用。cider展示了生成文本应该具备的属性:

  1. 在生成文本中出现n-grams应该出现在原始的参考文本中;

  2. 在原始参考文本中未出现的n-grams不应该出现在生成的文本中;

  3. 出现在数据集中所有image-caption pairs的 n-grams应该分配较低的权重,因为它们可能提供的信息较少。

其他像nist,gtm,hlepor,ribes,dice和masi等不常用的评测方法可参见原文给出的链接????供详细阅读。

Distance-Based Evaluation Metrics for Content Selection

这种方法使用“距离“计算词或者句子之间的相似性。距离越小其相似性越高,此外这些方法中使用的embedding都是预训练好的,并没有在特定数据集上“微调”。

Edit Distance-Based Metrics

编辑距离指的是要使得文本A变成B,所需要的最少的操作次数。基于编辑距离评估方法通过操作次数的多少来评价相似的程度,操作次数越多,距离越大,越不相似。

wer

wer(Word error rate)常用于语音识别和机器翻译领域,通过插入,删除,替换等操作计算翻译得到的文本获取原始参考文本改变的文本比例。但是wer有一些限制。虽然它的值下限为零,表明假设和参考文本之间完美匹配,但它的值没有上限,因此很难以绝对方式评估,同时wer和人类的评估一致性较弱。

ter

ter(Translation edit rate)也是使用编辑距离判断文本的相似性,和wer不同的是它和人类评估的一致性较好。但是它只能捕获狭义上的相似性,因为它只使用单个参考翻译,并且只考虑假设和参考之间的精确单词匹配。

Vector Similarity-Based Evaluation Metrics

这类方法是基于embedding表示计算的,例如word 或 n-gram的embedding,它允许具有相似含义的标记具有相似的表示。

meant 2.0

基于向量的相似性度量meant使用词嵌入和浅语义解析来计算词汇和结构相似性。meant 2.0通过测量人工参考和机器翻译之间的语义框架及其角色填充物的相似性来评估翻译的充分性。

yisi

受到meant的启发,yisi 被提出来评估机器翻译模型输出的准确性。它基于加权分布的词汇语义相似度,以及浅层语义结构。具体来说,它从假设和参考翻译中提取最长的公共字符子串来衡量词汇相似度。

Word Mover’s Distance (WMD)

Earth mover’s distance (EMD)是对两个概率分布之间距离的度量。Word mover 的距离是 EMD 的离散版本,它计算两个序列(句子、段落等)之间的距离,每个序列都用相对词频表示。它将文本的词袋(BOW) 直方图表示上的stem(如cosine, Jaccard, Euclidean等)相似性与embedding相似性相结合。因此,WMD具有如下的优点:

  • 它无超参数且易于使用

  • 由于可以分解两个文档之间的距离,因此具有高度可解释性,并解释为几个单词之间的稀疏距离

  • 它使用词嵌入空间内编码的知识,这导致高检索准确性

WMD在许多NLG的任务中应用广泛,能很好的评估文本的相似性,但不适用于长文本;因为随着文本长度的增加,计算成本呈指数上升,不能很好的体现长文档之间的相关性。

Sentence Mover’s Distance (smd)

SMD是基于WMD的评估方法,使用句子向量表征进行相似性的度量。句子向量的表征是通过token级别向量的均值计算得到的。SMD使用句子或者句子和词的组合来表示文档,通过权重累积两个文档之间不同句子向量的距离,评估文档之间的相似性。SMD相对于rouge和人类的评估具有更好的一致性。

最新版本的SMD则是利用transformer结构的预训练模型得到的embedding进行相似性计算。

WMD和SMD的示意图:

基于n-grams的多样性评估

词汇的多样性分数能够测量文本中词使用的广度和丰富性。在许多NLG任务当中,如 对话,故事生成,问题生成等领域都对多样性有着较高的需求。然而,基于多样性的指标很少单独使用,因为文本多样性可能以牺牲文本质量为代价。下面介绍2种这方面的评测指标。

ttr

Type-Token Ratio(ttr) 该方法是用于评价作家或者是演讲者使用词汇丰富程度的一种多样性度量法。它通过使用单个词的类型数量除以整个词的数量计算,相当于计算每种类型覆盖多少词。ttr使用简单,但是由于文本越长一个词是新类型的可能性就更低,因此它对文本的长度很敏感。后续有研究者提出了HD-D的方法去解决这个问题.

self-bleu

作为一种多样性的评价指标,self-bleu以bleu socre为基准,通过计算生成句子两两之间的bleu score值得到的。最终一个句子的多样性来自于以其他句子为参考文本时计算得到的bleu score平均值。self-bleu的分数越低,说明生成的文本多样性越好。尽管self-bleu能够很好的表现文本的多样性,但在GAN的生成方式中,存在缺陷。

Explicit Semantic Content Match Metrics

语义内容匹配度量通过从 n-gram 之外的文本中提取显式语义信息单元来定义人工编写的文本和模型生成的文本之间的相似性。这些指标在语义和概念层面上运作,并被证明与人类判断密切相关。下面介绍一些常用的评价指标。

pyramid

该方法是用于评估文档摘要模型性能的半自动化的评估方法。pyramid通过比较人类生成的参考摘要文档和模型生成的摘要识别出summarization content units(SCUs)。为了创建pyramid,标注人员选择出摘要中能够表达相同含义的文本片段构成集合,每个 SCU 根据表达 SCU 含义的摘要数量进行加权。

spice

SPICE(Semantic propositional image caption evaluation)是在image cpation中用于测量生成的文本和一系列人工撰写的参考文本S={s1,s2,...,sm}之间的相似性。SPICE并不是使用类似上文的方法直接比较文本,而是先从所有的参考文本S中构造出一个抽象的场景图,该图中包含对象,属性和关系等特征。后续计算生成的文本和这个参考场景图的F-SCORE,用以表示相似性。SPICE被证明和人类的评估有着强相关性,但是它的主要问题在于忽视了文本的流畅性。

Syntactic Similarity-Based Metrics

句法相似性测量用于评估生成的文本和参考文本之间语法和结构的相似程度。在语料库语言学中,词性 (POS) 标记的任务是判定句子中每个词的属性,同时也在机器翻译领域中被用来评价生成文本的质量。除此之外,使用依存分析(dependecy parser)能够抽取句子当中表示语法结构的依存树。

总结

文本评价的方法多种多样,其中人工评估的质量最高,但由于使用成本太高,不利于生成领域研究的迭代,而且不同的人工评价结果可能有着很大的差异,质量不能完全保证。

无需训练的自动评价方式由于评价方式的便捷性和质量保证,被广泛应用,但每种方法都有其适用范围和优缺点,没有一种方式能够覆盖所有的应用面。

因此,我们在不同领域关注不同目标时,应该考虑不同评价指标的侧重点,选取最合适的方法进行评估。

本文目前只包含上文提到的前两种评价方式(人工评价的方式和无需训练的自动评价方式),其他内容后续将陆续补充。

????????撒花????????

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

点击上面卡片,关注我呀,每天推送AI技术干货~

整理不易,还望给个在看!
  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值