赞
踩
文本生成是自然语言处理最基础的任务之一,应用广泛,包括闲聊、写诗、作曲、讲故事等等,如图是清华大学“九歌”机器人生成的五言绝句。
本文聚焦于文本生成的评价方式,通过综述论文解读,介绍文本生成多种评价方式及优缺点。
论文标题:
Evaluation of Text Generation: A Survey
链接:
https://arxiv.org/abs/2006.14799
文本生成的评价指标是一个很棘手的问题,因为语言表达具有多样性,比如在使用CVAE生成商品的描述时,同一种文本条件,能够生成多条含义接近的语句。当前文本评价最好的方法当属人工评价,即组织评价人员直接根据文本的特征如语义,流畅性等进行打分。
尽管通过人工评价的方式能很好的判定模型生成文本的质量,但该方法的缺点在于1)成本巨大,耗时长,不利于生成领域中研究的迭代;2)不同人工评价结果可能差异很大,质量不能完全保证;3)人工评价的实验结果通常难以复现。
想着每次需要找人评价不太正常的文本,他痛苦,自己更痛苦更难受。
文本生成的发展经历了规则的方式、数据驱动的表示学习以及DNN的无监督方式,常用于对话,问答,摘要生成,机器翻译,image captioning等领域。当前主要的评价方式有如下三种:
人工评价方式。比如通过turing test(图灵测试)判定文本是否为机器生成的。
自动评价方式。这些方法是基于文本的中字符串/内容的重叠,词汇的多样性,词之间的距离等方式判定整个文本的生成质量。
Machine-Learned Metrics。使用机器学习的模型通过数值判断两个文本之间的相似性。
人工评价方法分为Intrinsic Evaluation,extrinsic evaluation,the evaluator和Inter-evaluator Agreement等4类,下面将简要介绍不同方法。
比较生成的文本和目标文本的属性例如流畅性,内部关联性,正确性等。
评价生成的文本在下游子任务上的表现判断其效果。但是实施的难度和成本都比intrinsic evaluation要高,故没有后者常用。该方法相当于通过文本在具体场景中的应用情况,判定文本质量。extrinsic human evaluatoin 通常在对话当中使用,通过对话的持续长度或者是用户对系统的体验排序进行评估。
通过雇佣特定的人群进行文本的评估。研究人员能够和评估人员进行直接的交流,方便掌控研究进度,实时调整。但存在耗时长,成本高等问题,同时评估人员可能会根据研究人员的喜好做出不那么客观的评价。
不同评估人员之间的分歧,能够作为一个有用的方式用以判定文本生成的效果。评估人员高度统一的结果意味着任务被很好地定义。下面介绍几种常用的表征评估一致性方法。
用以判定所有人一致同意的程度。使用X表示待评估的文本,|X|表示文本的数量,ai表示每所有评估人员对xi的评估结果,当所有评估人员评估一致时,ai=1,否则等于0.
该指标能够捕捉评估一致的随机性。除了上文的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
该值权衡了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(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」(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(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(Consensus-based Image Description Evaluation)是基于共识的图像描述评估方法。它可以基于文本生成模型的“人类相似性”进行比较,而无需创建对内容、语法、显着性等相互权衡的任意调用。cider展示了生成文本应该具备的属性:
在生成文本中出现n-grams应该出现在原始的参考文本中;
在原始参考文本中未出现的n-grams不应该出现在生成的文本中;
出现在数据集中所有image-caption pairs的 n-grams应该分配较低的权重,因为它们可能提供的信息较少。
其他像nist,gtm,hlepor,ribes,dice和masi等不常用的评测方法可参见原文给出的链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。