人机对话系统分为任务型对话和非任务型对话系统。对于任务型对话系统的评价,一般采用任务完成的程度来进行评估,例如“导购”机器人,主要看用户是否点击“推荐商品”等来评估。非任务型对话系统,一般是闲聊系统,若是多轮对话,一般使用用户与机器之间进行对话的轮数来评估系统优劣。但是若是单轮对话呢,如何评价机器给出回复的好坏?对于给定一句话的回复,不同的人可以给出不同的答案,只要自圆其说即可,如此开放的回复空间,评价回复的好坏实属困难。
而目前并没有什么公认的评价指标可以更好地对对话系统的回复进行评价。很多论文给出的评价都包含一轮“人工评价”。
下面将介绍几种虽然不是很好的指标,但却是用的最多的评价指标。
PPL指的是语言模型中的perplexity,这个值表示的物理含义是“给定一句话,这句话是通顺的概率”。若给定一句话为:(wi表示第i)
perplexity定义为:
其中RNNLM表示RNN神经网络语言模型,输出wi的条件概率。RNNLM需要使用大量语料提前训练好。模型输入为w1,w2,...,wi-1,模型输出为w2,w3,...,wi,即使用上文词语预测下一个词。
PPL值越小,说明机器生成的回复越自然、语句越通顺。通过PPL来评价回复质量,可以避免机器生成的回复有乱序、前后颠倒的情形。
BLEU值是大家听说的比较多的评价指标,主要用于机器翻译任务中,用于评价机器得到的翻译答案与正确答案之间的差距。这里也可以用于评价人机对话回复的评价。BLEU值的计算公式如下:
其中pn表示n-gram的准确度。具体计算公式如下:
C 表示对话生成的回复,R表示已标记的正确回复,ngram in C&R表示,生成回复中的ngram词语也在正确回复R中出现,Count表示这样的ngram的个数; ngram in C表示C中nram的个数。
BLEU值越大越好,越大表示生成的回复离正确的回复越接近。
但是,聊天回复一般是没有正确回复可言的,对于同一句话很多回复都可以认为是正确的。所以单纯的BLEU值会不太靠谱。
Distinct评价指标之所以会出现,原因主要在于seq2seq生成式问答模型,是一个MLE的概率模型,容易产生一些通用的、简短的回复。这些回复没有什么意义。例如机器会一直向用户回复“是啊”、“对啊”这样的回复。为判断机器回复的多样性,Distinct指标判断是否出现大量的通用性、重复性回复。
Distinct的定义如下:
Count(unique ngram)表示回复中不重复的ngram数量,Count(word)表示回复中ngram词语的总数量。
Distinct-n越大表示生成回复的多样性越高。
对于人机对话的回复评价,目前没有公认的、很好的自动化评价指标。毕竟回复的分布空间太广泛。要做到好的回复评价,不仅要考虑回复语义的相关性、回复的多样性,还要考虑回复是否符合语法规则、语义相关等。现在做对话,大家一般使用PPL、BLEU、Distinct做自动化评价,外加一些人工评价。