最近读了几篇关于收集对话语料的paper,都是围绕着一个思想:Wizard of Oz。灵感自然是来自《绿野仙踪/奥兹国的奇妙术士》这本小说,也就是说有一个人类藏在还不完善的对话系统后,控制着对话系统的行为,以此(1)收集数据,(2)完善系统。在这篇文章中,我将沿着对话系统如何构建的思路,大概介绍一下相关的几篇论文。


(1)对话系统简介

构建一个对话系统目前有几种方法,就单轮对话来说,一个最直观的方法是模式匹配,也就是说如果问句满足了某种模式(pattern),那么就返回指定的回答。第二种是召回(retrieval-based method)。也就是说所有的答案都是预先写好在数据库中的,对于新的用户输入,我们可以用相似度匹配,找到数据库中最相近的对话,返回该对话的回答。还可以用基于神经网络的(seq2seq)的方法,直接训练一个神经网络,一端提供输入,另一端给出输出。

当涉及到多轮对话的时候,上面几种方法就显得不那么好用了,因为涉及到上下文的联系。一般我们会采取模块化的系统(modular-based method)来解决这个问题。对话系统可以大致地分为以下一个模块:

. Natural Language Understanding(NLU)自然语言理解。也就是从用户的输入中提取有效信息(意图、相关实体(entity))。

2. Dialog Management and Dialog Policy(DM/DP)对话管理/对话策略。根据本轮提取的信息和之前的信息决定下一步做什么。一般这两个模块会被分开讲,上次导师也特地考我知不知道他们两个的区别,对这个问题我一直以来的答案都是无可奉告。确实最近没有时间看,也不是本文重点,不讲了。

3. Natural Language Generation (NLG) 自然语言生成,根据前面的指示,生成一句输出,返回给用户。

当然,如果仍旧用s2s的方法,简单粗暴地把前几轮的对话作为输入,求个输出,是不用考虑上面所说的模块的。这个方法我认为离真正应用还有一段距离,用一个网络去代替整个系统还是要求比较高的。


(2) Wizard of Oz

收集对话数据的目标一是用来完善自己的对话系统,二是用来做数据集。我们以电商客服为例,收集对话数据最简单的方法就是记录人类客服和用户之间的对话记录。在有这样大量数据积累的情况下,我们可以做两方面的工作,一方面是分析所有的对话,构建这个领域的知识系统,当然这个工作也可以完全不依赖数据,由领域专家来做。另一方面就是用这些对话直接去训练基于深度学习的模型,可以是自然语言理解(NLU)模块,也可以是头铁的端到端的生成网络。

WOZ方法就是初步构建一个比较粗糙的对话系统,迅速地投入应用,用人工智能(AI)和人类智能(HI)结合的方式,去完善这个对话系统并收集一定的数据。HI在这个系统中可以做三件事,一是纠正AI的错误,二是帮助AI做决定,三是这个过程中的所有行为都可以作为标注数据,提供给AI做进一步的训练。

第一篇文章MDWOZ[1]的系统由三个主要模块组成:

1. Database,一个包含了该领域信息的数据库,比如某一区域餐厅的信息。Wizard可以通过一个GUI来与数据库进行交互。这篇论文使用的是基于Xform的DBinput和DBask(这套GUI已经年久失修,停止更新维护了)。DBinput是用来输入新的数据或者修改原有数据,DBask则用来查询数据。

2. Finite State Model,一个有限状态图,记录了对话的所有可能状态,用一个将图可视化的工具将其转换成GUI。Wizard要负责根据用户输入选择相应的状态跳转。

3. Output Generation Model, 根据Wizard选出的状态,返回写定的回复,Wizard可以通过查询数据库来补充完善信息。

整个系统的流程如图:

在进行多次测试后,Wizard与人类的对话数据会被收集,同时数据库也被完善,FSM也更多节点,更加完善。

这篇文章比较古老了,方法也都比较直观,需要人工参与的地方也过于多。

第二种常用的方法是在AIML(Artificial Intelligence Mark-up Language) 的基础上改进的。有关AIML的介绍可以查看这篇文档[2],这是由最早提出AIML的聊天机器人ALICE发展而来的。其实也就是模式匹配,如下图所示:匹配到pattern,返回输出,还有一个that可以指示历史对话。Wizard的工作就是查看整个流程是否合理、完善。

基于模块化的对话系统和WOZ还有很多种结合的可能,例如用神经网络去搭建NLU、DM模块,Wizard可以判断模型的结果是否正确,从而产生更多的标注数据,进一步训练模型。基于端到端的生成模型也可以提供多个可能的回答给wizard做决定从而产生更多数据。

以上就是全部啦,感谢阅读,欢迎指正,鞠躬。

Reference:

[1] Munteanu, Cosmin , and M. Boldea . "M.: MDWOZ: A Wizard of Oz environment for dialog systems development." Lrec 2000.
[2]Pandorabots Documentation

转载于:https://www.cnblogs.com/para10969/p/10979947.html

奥兹国的奇妙术士-对话系统收集数据的方法相关推荐

  1. python如何收集数据的方法有哪些_class类在python中获取金融数据的实例方法

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就cla ...

  2. 《Java8实战》-第六章读书笔记(用流收集数据-01)

    用流收集数据 我们在前一章中学到,流可以用类似于数据库的操作帮助你处理集合.你可以把Java 8的流看作花哨又懒惰的数据集迭代器.它们支持两种类型的操作:中间操作(如 filter 或 map )和终 ...

  3. java8学习:用流收集数据

    内容来自< java8实战 >,本篇文章内容均为非盈利,旨为方便自己查询.总结备份.开源分享.如有侵权请告知,马上删除. 书籍购买地址:java8实战 下面我们将采用这样一个实体类 @Da ...

  4. 【实用】用QuickViewer收集数据

    用QuickViewer收集数据 从SAP获取数据有一个非常简单的方法,就是利用ABAP列表是生成QuickViewer.该功能允许用户查看一个表的字段或者查看联合表的字段集合. 本例通过采购申请到采 ...

  5. 用流收集数据Collectors的用法介绍分组groupingBy、分区partitioningBy(一)

    文章目录 一.收集器简介 二.归约和汇总 1.查找流中最大值和最小值Collectors.maxBy和,Collectors.minBy 2.汇总 3.连接字符串 4.广义归约汇总 三.分组 1.多级 ...

  6. 在.NET Core 中收集数据的几种方式

    APM是一种应用性能监控工具,可以帮助理解系统行为, 用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理 ...

  7. 《Java8实战》笔记(06):用流收集数据

    文章目录 收集器简介 收集器用作高级归约 预定义收集器 归约和汇总 查找流中的最大值和最小值 汇总 连接字符串 广义的归约汇总 Stream接口的collect和reduce有何不同 收集框架的灵活性 ...

  8. 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...

    大数据给每个科研领域的研究方式带来了前所未有的变化.每个领域中,研究人员可使用的工具皆有显著性,大数据现在逐渐成为横跨各学科领域的共同工具.大数据集的可取得性以及可存储并共享大量的数据的能力为研究人员 ...

  9. Java 8 (5) Stream 流 - 收集数据

    在前面已经使用过collect终端操作了,主要是用来把Stream中的所有元素结合成一个List,在本章中,你会发现collect是一个归约操作,就像reduce一样可以接受各种做法作为参数,将流中的 ...

最新文章

  1. 还在被人脸识别准确率指标欺骗吗?
  2. 90.前端 :执行方法前提示功能
  3. 源码安装vlc播放器
  4. 初学者学用Github
  5. 如何使用Notepad++格式化XML文件
  6. [linux]CentOS安装pre-built Nginx
  7. mysql新手常见问题_MySQL数据库入门-新手常见问题答疑
  8. 5 月数据库排行:PgSQL 慢增长,MySQL冲击第一!
  9. 初识阿里云环境搭建:无法远程连接,入过的坑:服务器ping不通,FTP搭建,服务器搭建数据库,远程连接服务器数据库
  10. 计算机网络信息安全等级保护(等保)
  11. Java实现 LeetCode 313 超级丑数
  12. NCBI数据上传(一):扩增子测序数据
  13. labview—XY图的使用
  14. 解决现行m8u3格式的视频下载问题
  15. 1D/1D动态规划学习总结
  16. C++在linux环境下获取毫秒、微妙级别时间
  17. time(),date(),microtime()…
  18. SQL Server 开发指南
  19. 【智能制造】智能生产:智能制造的主线
  20. Openstack_Nova部署(t版)

热门文章

  1. Illustrator软件中eps和ai格式的区别
  2. 饥荒专用服务器搭建(Linux)
  3. 不锈钢筛板广泛应用于酿酒行业
  4. 排序篇(7)--快速排序
  5. Widnows本地搭建WebDav服务,并内网穿透公网可访问
  6. 抽象与接口的区别(个人理解)
  7. 新生活的开始。。。。
  8. 小小魔兽服务器维护,《小小魔兽》重要事情说三遍 高星英雄很有用
  9. 密码显示与隐藏效果 html+css+js
  10. “达飞侠”来袭,达飞吉祥物形象正式发布