当前位置:   article > 正文

文本生成评价指标-A Survey_evaluation of text generation: a survey

evaluation of text generation: a survey

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

图片

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

论文标题:

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]:

  1. import nltk
  2. hypothesis = ['It''is''a''cat''at''room']
  3. reference = ['It''is''a''cat''inside''the''room']
  4. #there may be several references
  5. BLEUscore = nltk.translate.bleu_score.sentence_bleu([reference], hypothesis)
  6. 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的问题在于它不适用于长文本生成,因为它并不能很好的提供语法等方面的信息。

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

输出:

  1. [{'rouge-1': {'f'0.14285714040816327'p'0.08333333333333333'r'0.5},
  2.   'rouge-2': {'f'0.07692307488165685,
  3.    'p'0.043478260869565216,
  4.    'r'0.3333333333333333},
  5.   '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的变体版本可以扩展该类别中的大多数指标不包括的精确词匹配,例如词干和同义词匹配。这些变体解决了参考翻译可变性的问题,允许将词形态变体和同义词识别为有效的翻译。使用工具计算的样例代码:

  1. import nltk
  2. hypothesis = ' '.join(['It''is''a''cat''at''room'])
  3. reference = ' '.join(['It''is''a''cat''inside''the''room'])
  4. #there may be several references
  5. merteor_score = nltk.translate.meteor_score.single_meteor_score(reference, hypothesis)
  6. 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等不常用的评测方法可参见原文给出的链接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/986276
推荐阅读
相关标签