专栏首页Pytorch实践RUBER:一种无监督对话系统回复质量的评价方法

RUBER:一种无监督对话系统回复质量的评价方法

对于对话系统的回复质量评价,一直没有很好的方法。之前的文章写过一些评价指标,例如BLEU、PPL、Distinct、ROUGE等。这些指标给出的评估结果与人工评价得出的结果相差很大,并且也不相关。本文介绍一种无监督(不需要标记语料)的回复质量评价方法。


回复的好坏有几个维度:

(1)与问题或对话的话题相关;

(2)与该问题的已有回复相似、不能有太大偏差;

(3)不能有太多的通用性回复,例如“好的”、“是的”。


RUBER,很好地解决了上述三个问题。RUBER,全称“Referenced metric and Unreferenced metric Blended Evaluation Routine”。是一种有参考和无参考的相结合的度量。

  • 有参考的度量

有参考的度量,是参考了问题已有的人工回复答案,使用人工回复作为参考对机器回复的质量进行判断。主要用于度量上述(2)中的问题,就是判断与已有答案的相似性。相似性怎么衡量,数学中最简单的方法就是余弦距离。得到机器回复句子的向量表达和人工回复的句子的向量表达,算余弦距离即可,余弦值越大距离越近,两个句子越相似。

  1. 获取句子的向量表示

假设句子S中有N个词,分别表示为w1,w2,...,wN。每个词语通过对话模型的embedding层有一个向量表示,可以理解为word2vec的向量表示。设向量维度为d。因此句子S可以表示为d*N的矩阵,第i列表示句子中第i个词语对应的词向量。对每行分别取max-pooling和min-pooling,得到两组d维的向量Xmax, Xmin。二者拼接得到2d维度的向量即为该句子S的向量表示。

  1. 余弦距离计算

分别按照1中方法计算得到机器回复和人工回复的向量表示Vr/Vr'.余弦距离的计算公式可以表示为:

有参考的度量即表示为SR

  • 无参考的度量

无参考的度量,是不需要人工回复的答案,判断回复内容与问题本身是否相关。这里是建立人工神经网络模型进行的。模型结构如下图所示。从对话模型训练语料做为该度量模型的训练语料。Query与对应的Reply作为一个Pair,分别使用双向GRU进行建模得到句子表达。然后随机采样得到负例,负例就是当前Query对应抽取的其它Query的Reply结果。正例的模型输出为1,负例的模型输出为0,类似于训练word2vec时使用的negative sampling方法。

需要说明的是图中句子建模后得到的特征中不仅仅是Query和Reply的向量拼接,而是增加了一个新的特征:xMy这样的双向性变化,用于度量Query和Reply共有的信息。再将组合特征输入到全连接层和Sigmoid函数的激活层输出Query与Reply的相关概率大小。模型输出SU即为无参考度量值。

  • 结合的度量

特征组合,首先分别将SR和SU度量值进行归一化,然后再将归一化的特征进行结合。

  1. 归一化

归一化是经常使用的方法,用于将不同度量空间的数值进行归一化后可以统一整理。具体如下:

  1. 度量组合

将归一化后的度量值,可以取平均、取最大值、取最小值、算术平均、几何平均等。根据实际任务选择。


RUBER将回复相关性、与正确答案的相似性进行了整合考虑。但是依然没能解决好回复多样性的判断问题。如果大量回复中出现通用性质的回复,还是不能很好地度量当前问答系统的好坏。但至少给定的方法能够起到一定的作用,比较综合,相比较其它指标值算overlap的要好很多。


参考文献

[1] Tao C, Mou L, Zhao D, et al. RUBER: An Unsupervised Method for Automatic Evaluation of Open-Domain Dialog Systems[J]. 2017.

本文分享自微信公众号 - CodeInHand(CodeInHand),作者:小左

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 人机对话系统回复质量的自动化评估

    CodeInHand
  • 迁移学习在自然语言处理领域的应用

    迁移学习近年来在图形领域中得到了快速的发展,主要在于某些特定的领域不具备足够的数据,不能让深度模型学习的很好,需要从其它领域训练好的模型迁移过来,...

    CodeInHand
  • 【NLP】三分钟带你看懂如何做网页搜索

    01 — 搜索基本过程 对于网页搜索,传统的过程可以理解为:用户提交POST,搜索引擎返回RESPONSE。最开始的搜索过程,用户基本上是提供关键词,然...

    CodeInHand
  • Spark Core快速入门系列(4) | <Action> 行动算子转换算子

      返回一个由RDD的前n个元素组成的数组   take 的数据也会拉到 driver 端, 应该只对小数据集使用

    不温卜火
  • 怎么使用canva创建精美的pin图?

    Canva是一款在线设计海报,banner,名片等的应用,可以帮助你轻松完成你想要的设计图案,庆幸的是,这个应用有中文版本

    小刘谷歌seo博客wyseoblog.com
  • 同步容器与并发容器

    Vector、HashTable -- JDK提供的同步容器类 Collections.synchronizedXXX 本质是对相应的容器进行包装

    Dream城堡
  • Openshift高阶探索实验

    一、HA方式部署Openshift 一个典型的OCP高可用架构是:master至少应为三个,且为奇数个(上面有etcd); ? 基础架构节点不少于两个,上面运行...

    魏新宇
  • CMU出品,计算机图形学秋季课程已上线,B站同步字幕视频

    计算机图形学(Computer Graphics)是研究计算机在硬件和软件帮助下创建计算机图形的学科,近年来受到了学界和业界的广泛关注。该领域的研究者也越来越多...

    3D视觉工坊
  • 反爬虫之检测PhantomJS访客(翻译文)

    翻译前言:作为数据采集工程师经常和反爬虫技术做斗争,其中我使用的爬虫结构是:分布式+多机器+adsl | tor+phantomjs无界面浏览器+机器学习验证码...

    十四君
  • 联想千万买Oracle SaaS,SaaS不再是低端低价代名词

    编者:T 客汇 张宇婷 、人称T客 关键词:SaaS、联想、Oracle 网站:www.tikehui.com 9月1日,T客汇接到爆料,Lenovo MBG(...

    人称T客

扫码关注云+社区

领取腾讯云代金券