人工智能现在的火热程度大家有目共睹,凯文凯利在《必然》中预测未来时代的人工智能可能会重新定义人类的意义,但时下的人工智能发展水平显然还没有大家想象得那么美好,仍然需要我们不断地探索。目前众多研究人员正深耕其中,作为其中代表的聊天机器人(Chatbot),已然成为科研界研究的热点。

通常来说聊天机器人实现方式有两种:一种是基于生成式,即机器人“自己说话”,一个字一个字创作出回复语句来。另外一种是基于检索式,即机器人“转发”别人的话。从互联网大家的话语中寻找到合适的回答予以转发。

现有的生成结果由于技术所限,或多或少都存在语句不流畅的问题,但能够做到“有问必答”偶尔还能蹦出“彩蛋”。检索的模型一般流畅性方面无须担心,不过随着目前网络资源的日益丰富,语料规模也越来越大,如何从众多语句中选择合适的句子作为回复是检索式聊天机器人的核心问题。

虽然目前市场上的聊天机器人众多,但我们见到的那些貌似都不是那么聪明。最直观的一个体现就是前后不连贯,上下难衔接,因此在进行检索的时候考虑历史信息则显得尤为重要。那么如何让机器人理解对话历史信息从而聪明地进行回复呢?微软亚洲研究院的研究员们提出了一个模型 Sequential Matching Network(SMN)。相关论文的作者吴俣谈到“SMN 模型可以让聊天机器人准确的理解当前和用户的对话历史,并根据历史给出最相关的回复,与用户进行交流,达到人机对话的目的。”

但这在实现的过程中也遇到不少难点,“精准计算聊天历史和候选回复的语义相似度十分困难,主要的挑战有两个方面:(1)由于聊天历史信息繁多,如何将历史中重要的词语、短语以及句子选择出来,并通过这些重要部分刻画聊天历史,是一个亟待解决的问题;(2)如何对聊天历史中的各轮对话进行建模,如何判断对话历史中的跳转,顺承等关系,也是一个棘手的问题。” 那么论文作者提出的 SMN 模型又是如何解决这两个问题的呢,接下来我们将为您解读。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

▲ 图1:SMN网络架构

SMN 模型一共分为三层。第一层为信息匹配层,对之前的历史信息和待回复的句子进行匹配度计算:同时进行词语(embedding 向量)和短语级别(GRU 表示)的相似度计算。然后再把这两个矩阵分别作为卷积神经网络的一个 channel,利用 CNN 的 max-pooling 进行特征抽象,形成一个匹配向量。第二层为匹配积累层,利用一个 GRU 神经网络,将每一句话和回复所计算出的匹配信息进一步融合。第三层为匹配结果预测层,利用融合的匹配信息计算最终的匹配得分,在预测时他们使用三种策略,分别是只利用 GRU2 最后一个隐藏层(SMN_last),静态加权隐藏层(SMN_static),和动态加权隐藏层(SMN_dynamic)。在进行检索的时候,他们将最后一句的信息结合上文历史信息中的 5 个关键词(历史信息中用 tf-idf 进行筛选,选择 Top 5 关键词)在系统中进行检索,然后用上述 SMN 网络对候选结果打分从而选出回复句。

作者分别在 Ubuntu 语料(大型公开计算机相关求助与解答语料)和豆瓣语料(作者从豆瓣小组的公开信息中爬取并在论文中公布)上进行了实验,分别以 Rn@K 和 MAP、MRR、P@1 为评价指标,取得的结果均为目前最好。

作者表示“SMN不同以往的模型,第一步不进行上下文的建模学习,而是让每句话和回复进行匹配度计算,这样可以尽可能多的保留上下文的信息,以避免重要信息在学习上下文的向量表示时丢失。而且 SMN 在对上下文句子关系建模时,考虑了当前回复的影响,使得回复成为一个监督信号,这样可以更准确的对上下文历史进行建模。”并且吴俣向我们透露“据我们所知,我们公布的豆瓣语料是第一个人工标注的中文多轮对话语料。”

在谈及目前的方法还有哪些不足之处时,作者表示“目前我们的检索方式有时找不到正确的候选句,所以第一步的检索方法还有待改善,另外虽然我们的模型可以建模当前回复和历史信息的关系,但还是无法避免一些逻辑上的问题,不过这也是我们未来工作的重点,我们将继续提高候选回复在逻辑上的连贯性”,让我们共同期待他们的未来工作。

来源:paperweekly

原文链接

“小会话,大学问” - 如何让聊天机器人读懂对话历史?| 论文访谈间 #03相关推荐

  1. “小会话,大学问”:如何让聊天机器人读懂对话历史?

    作者 | 吴俣,武威,星辰,李舟军,周明(北航&微软研究院) 特约记者 | 曹东岩(哈尔滨工业大学) 人工智能现在的火热程度大家有目共睹,凯文凯利在<必然>中预测未来时代的人工智能 ...

  2. 微信小程序开发—项目实战之聊天机器人

    项目功能介绍 人工智能虚拟机器人"微软小冰"大家玩过吧,很酷的一个应用.发送文字.语音和图片都能得到智能的回复. 那现在我们就用小程序做一个模拟的应用,智能聊天机器人.发送文字它可 ...

  3. 让聊天机器人同你聊得更带劲 - 对话策略学习 | 论文访谈间 #21

    「论文访谈间」是由 PaperWeekly 和中国中文信息学会青工委联合发起的论文报道栏目,旨在让国内优质论文得到更多关注和认可. 这是第 21 期「论文访谈间」 论文作者 | 宋皓宇,张伟男,刘挺 ...

  4. 乐鑫Esp32学习之旅 18 入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  5. 理解聊天机器人是如何对话的

    两种聊天机器人系统 闲聊型机器人 闲聊机器人又叫开放域对话系统,通常用户的对话并无明确目标,闲聊.解闷.生活问题求助等待.一般以用户的问题开始对话,机器人回答结束.所以对话的好坏以用户体验为主.机器人 ...

  6. 品质标签分几种颜色_小标签大学问,如何给实验室仪器贴标签?

    点击上方蓝字,关注食品论坛 一 仪器标签(小标签) 1.仪器标签贴在仪器下方,看上去要整齐.美观,同时不能影响仪器使用,同种仪器贴在同一位置,仪器要分学科使用不同的仪器标贴. 2.同类需经常洗涤使用的 ...

  7. unef螺纹_小螺纹大学问,11种螺纹类型,你都使用过吗,了解它的使用方法吗

    1 国际公制标准螺纹 我国国家标准 CNS 采用之螺纹.牙顶为平面,易于车削,牙底则为圆弧形,以增加螺纹强度.螺纹角为60度,规格以M表示.公制螺纹可分粗牙及细牙二种.表示法如 M8x1.25.(M: ...

  8. 小马儿随笔(三)——小标签 大学问

    目前在综合布线工程的甲乙双方和工程监理所关心的主要是工程的质量,如线缆敷设是否符合标准.能否通过测试验收.工程造价是否超预算等等,但是对与用户关系最密切的网络文档和标签标识往往被忽略.经常发生的情况就 ...

  9. [贝聊科技]小动画大学问

    对于移动端的Web单页应用来说,为了达到媲美原生应用的效果,页面过渡动画是必不可少的.常用的页面过渡动画包括: 位移--当前页向左侧或右侧水平移出可视区,下一页由反方向移入可视区. 不透明度变化--当 ...

最新文章

  1. 由于远程桌面服务当前正忙|VDI无法连接
  2. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理...
  3. class h5 点击后样式变化_【php】JQuery怎么实现页面刷新后保留鼠标点击addclass的样式?...
  4. 如何正确使用广告素材、优化Facebook广告
  5. 大三学生独自破解逆天AI模型:我只是把撩妹的时间,都用来研究机器学习了...
  6. springcloud eureka集群_SpringCloud入门学习之Eureka
  7. 网易云服务器上传文件,网易云音乐怎么把音乐上传到云盘 网易云音乐把音乐上传到云盘的步骤方法...
  8. 记,当找不到图片时,显示默认图片
  9. 邻接矩阵的COO格式
  10. oracle normal索引类型,Oracle中有多少种索引类型?
  11. mybatis缓存的一些问题
  12. 黑客学习路线(送给那些在学习路上迷茫的人)
  13. Any CPU X86 X64区别
  14. Android 支付宝sdk接入问题:不能唤起支付宝客户端,或者偶然唤起支付客户端
  15. java雷霆战机源代码_java spring雷霆战机(小游戏源码)
  16. 【Unity开发小技巧】Unity随机概率扩展(概率可调控)
  17. Java Web完整学习记录
  18. TensorFlow实现自定义Op
  19. MHD-UH40RK4K高清视频会议摄像头
  20. 如何在MySQL中导入数据

热门文章

  1. boost::describe模块宏BOOST_DESCRIBE_PP_PARSE的测试程序
  2. Boost:can_require_concepr的使用测试程序
  3. Boost:assume aligned假设对齐的测试程序
  4. ITK:创建另一个图像实例
  5. DCMTK:Telnet发起程序(ti)主程序
  6. VTK:可视化之Visualize2DPoints
  7. OpenCV imgproc分割(segmentation)的实例(附完整代码)
  8. 适用于macOS的Qt
  9. Qt Linguist 翻译
  10. Qt Creator使用Git