导语:多轮对话聊天机器人,作为人工智能的典型应用场景,也是一项极具挑战的任务,不仅涉及多方面异构知识的表示、抽取、推理和应用,还涉及包括自然语言理解在内的其他人工智能核心技术的综合利用

简介与相关技术调研

目前,多轮对话聊天机器人已经产生了很多应用,有萌妹子小冰,有佛法大师贤二,也有应用在各行各业的智能客服。多轮对话聊天机器人,作为人工智能的典型应用场景,也是一项极具挑战的任务,不仅涉及多方面异构知识的表示、抽取、推理和应用(如语言知识、领域知识、常识知识等),还涉及包括自然语言理解在内的其他人工智能核心技术(如用户画像、对话管理等)的综合利用。

实现对话机器人常见的方法,可以从最简单的“关键字匹配”,到最前沿的深度学习“端到端生成”应答。分别应用到不同的场景:闲聊、任务(垂直领域)、问答(QA)。

设计一个聊天机器人

要想机器能与人产生对话,那么第一步,就必须先“理解”人说话的内容,对于机器来说,“理解”就是把自然语言转成具有结构化的表达。机器解析结构化表达的内容,根据知识库(可能是QA对、可能是if-then规则、可能是业务流程等)获取相应的回答。

如下图,一次对话,就是一个会话的接入,语义理解就是理解人说话的内容,应答引擎就是根据理解的内容做出的应答。

1、语义理解

建立语言模型

因为人类语言的本质是为了传递人与人之间的信息(意思)。那么,我们可以定义出N种意思分类(意思的种类越多,机器人的理解能力越强)。所以,一个语言模型就是一个多标签的数学模型,把自然语言转成具有结构化的表达。有以下三个步骤:

1)文本预处理:切词、词向量、词义消解等(这里内容很大,不详细介绍)。

2)样本准备:抽取一些经典的发言,在我们的myModel平台进行标注。

3)序列模型:多标签模型,如下图就是一种CNN与LSTM组合的神经网络方法。

尽管已经在一个垂直的领域,而且看似简单的三步,但是要做一个好的语义理解模型,是非常难的,例如一个小改动导致预测结果差异,可分两种:

1)一种是句中的词语位置变了、辅助词变了,如:“这就是给我的回复?”与“你们就这么回复我?”。

2)一种是增加一些无关核心内容的词,如:“但是我后面没开挂都被制裁”与“但是我后面没开挂都被制裁我就想不通了”。

备注:增加更多有标注的样本量、基于大规模数据训练的模型(如BERT等)二次训练、神经网络增加attention、结合知识库等,都是一些优化的手段。

语言模型在系统中的应用

理解用户说话的意思,我们分为了三层:第一层,是理解当前聊天处于哪一个话题,有没有切换话题;第二层,是理解具体的内容,含有意图与实体;第三层,是理解当前发言的情感,跟踪用户的情绪变化。

1) 话题模型(Topic模型)

在我们系统中,它是一个分类模型,与后面的应答引擎是有对应的关系,根据不同的话题,进入不同的业务流程,所以模型的标签的业务的分类。

2) 意图理解(Act-Slot模型、Value模型)

A.   Act-Slot模型

在我们系统中,它是一个多标签模型,相同一句话,不同的角度,有不同的理解。所以,模型的标签是意图与实体类型,如下图的“inform,QQ”。

例如,在具体的项目中,我们定义了:

B.    Value模型

在我们系统中,获取到用户发言的Act-Slot之后,根据Act-Slot的意图,得到其相对应的实体值。总共设计了三种方法以获取不同类型的Value,方法如下:

  • 正则表达式:如抽取时间、等级等有一定格式的实体。

  • 词库对比:如安图恩等游戏专有词汇。

  • LSTM模型:当句式中不明显表达实体时,将通过模型分到6类中:

    • ENV:涉及到电脑环境相关信息。

    • MAPID:涉及到地图相关信息。

    • ROLE:涉及到角色相关信息。

    • TEAM:涉及到组队相关信息。

    • LOGIN:涉及到登录相关信息。

    • EQUIP:涉及到装备相关信息。

备注:并非所有聊天机器人都这么设计,有些系统会把意图作为一个模型,实体与value作为一个模型。

3) 情感模型

在我们系统中,它是一个分类模型,把用户的发言分为了以下几种不同级别的情绪(标签):脏话、生气、平和、赞扬。

2、应答引擎

定义业务描述语言

为了能快速接入各种服务,基于XML描述语言,定义了一套业务流程的描述语言。总共分为三层,最底层是基础流程控制单元,如分支if、循环while、顺序sequence、并行parallel;第二层,是每个话题都需要的通用组件,如询问QQ号、游戏名、情绪安抚等;最顶层是具体的业务应用服务,如装备找回流程、被盗处理流程等。

例子:获取QQ号与大区号流程。

业务流程控制引擎

如下图所示,有Task1到Task5,共5个业务流程(业务应用),这些业务流程可以使用上述描述语言刻画出来。而下图中涉及到的为上述语言的解析过程。

话题切换监听器:作为旁路分类模型,用于跟踪聊天话题的切换。以用户发言为输入,输出1、2、3、4、5,分别代表Task1,Task2 …. Task5。(用户每次输入,都会有一次判断,反映话题是否有变化与切换到哪一个Task)

会话信息:表示在对话当抽取出来的上下文信息,局部信息表示在本Task可见,全局信息表示所有Task可见。

状态:表示Task运行状态。而流程中断的位置,并非所有位置都可以中断,如下图标记红点的是可被中断(当运行到有标记红的地方,就会请求“话题切换监听器”,当前是否有话题变化)。

  • 挂起:表示当前流程暂停(如下图,P2表示Task1中的第二个点挂起)

  • 未激活:“-”表示该Task没有启动过。

  • 激活:Running表示正处于该Task的流程中。

  • 结束:Close表示该Task已结束。

备注:每一个红点的地方,都可能由于用户发言导致切换到另一个Task流程中。会话开始时,会根据“起始问题识别”,得到需要走哪一个Task,作为起始Task。在起始Task流程中,如果遇到红点的地方,并且话题切换监听到需要转到另外的Task,刚切换到新的Task流程,新流程走完后再回到切换话题的断点处,继续原流程一直走完。

一个业务流程例子

例子:假设有四个业务流程Task,每个流程都根据流程控制单元画出相应的流程图。

  • Task1为“处罚查询”流程。

  • Task2为“处罚申诉”流程。

  • Task3为“修改密码”流程。

  • Task4为“实名验证”流程。

备注:每个Task都可以单独由“起始问题识别”触发,也可以如下例子嵌套对话。

TP小天

对话是一种比网页或APP更自由的表达形式,用户有了主动表达诉求的空间,可以实现有别于网页或APP的一些特殊功能:用户安全教育、舆论监控、信息收集。

根据上述的机器人设计方法,我们设计了TP小天,用户可以通过游戏安全中心公众号,咨询游戏安全相关的信息。如下图所示,已经接入了处罚查询、申诉、举报、帐号冻结等游戏安全功能与话题。

在实战中,一个可运营的聊天机器人,还会涉及到很多其它的内容,如何提升语义理解的丰富性、大样本推荐标注、FAQ应答、快速可配置修正、对话生成多样性、闲聊等等。

上篇 | 如何设计一个多轮对话机器人相关推荐

  1. 【NLP】自己搭一个多轮对话聊天机器人(附实现源码)

    [NLP]自己搭一个多轮对话聊天机器人(附实现源码) 01 项目框架 02 模型 2.1 粗排 2.1.1BM25 2.1.1 Bool检索 2.2 精排 意图识别 03 API交互 04 微信前端 ...

  2. rasa开发多轮对话机器人进阶

    使用rasa开发多轮对话机器的时候,发现配置很麻烦,且配置很容易出错,配置之间还存在关联关系,即便是使用界面也很繁琐.本文有一个新的思路,即通过一个引导生成对话机器人的机器人来创建对话机器人.这里以工 ...

  3. 智能多轮对话机器人案例剖析(附源码)-张子良-专题视频课程

    智能多轮对话机器人案例剖析(附源码)-269人已学习 课程介绍         智能多轮对话机器人案例剖析(附源码) 三个完整案例,体验式教学: 一套开源框架,所学即所用: 课程收益     掌握任务 ...

  4. 如何判断一个对话机器人有多智能?

    有些对话机器人总让人崩溃,也许是智能级别不够高.本文,就来一起看看如何判断一个机器人的智能程度. 随着智能对话技术的发展,对话机器人越来越多地出现在人们的日常工作和生活中. 从企业的角度,在合适的业务 ...

  5. 打造一个window桌面应用:在线聊天对话机器人

    大家好,我是辰哥~~~ 本文目标:打造一个window桌面应用:在线聊天对话机器人. 今天辰哥教大家做一个在线聊天对话机器人桌面应用,已经打包成exe可执行文件,读者可以直接拿来使用, 先上演示图 聊 ...

  6. 对话机器人在瓜子的实践

    本文根据车好多NLP方向负责人王文斌老师在DataFun"AI+"Talk-- "Application of AI In Second Hand Market" ...

  7. 回顾·智能导购对话机器人实践

    本文根据智能一点联合创始人&CTO莫瑜老师在DataFunTalk人工智能技术沙龙"自然语言处理技术应用实践"中分享的<开源节流的智能导购对话机器人实践>编辑整 ...

  8. mxm智能教育机器人无法智能对话_零代码使用腾讯TBP打造智能对话机器人

    点击观看大咖分享 心疼你独自一人承担生活的苦难,寂寞夜里陪伴你的只剩无人倾诉的压抑和无处安放的焦虑.养个宠物,它却不能get到你的"宠言宠语".找个伴侣,还要浪费吵架的时间和精力. ...

  9. 对话机器人---智能客服

    https://blog.csdn.net/qq_40027052/article/details/78723576 详细的介绍了对话机器人涉及到的所有知识和技术. 整个对话机器人涉及到的知识点,本人 ...

最新文章

  1. Android 中 include的使用
  2. 深度学习100例 -卷积神经网络(ResNet-50)鸟类识别 | 第8天
  3. BigData之Hive beeline:beeline的简介、使用方法之详细攻略
  4. 利用cross join 构造大量测试数据
  5. 计算机组成的ir是指,2002.10计算机组成原理§1控制器的基本概念⑵指令寄存器IR指令.ppt...
  6. turtle生成二叉树
  7. esx4克隆后的处理工作
  8. Go基础学习记录 - 编写Web应用程 - 完善Blog Model
  9. python executemany_Python MySQLdb executemany
  10. 2018牛客网暑假ACM多校训练赛(第六场)I Team Rocket 线段树
  11. JD_Source Code for problem 1581
  12. android textview api,Android API中文文档TextView
  13. JDK11使用HSDB
  14. windows powershell快捷键
  15. 学Dapr Actors 看这篇就够了
  16. socket.io实现多人聊天
  17. 【AGC031E】Snuke the Phantom Thief(费用流)
  18. [ipsec][crypto] 什么是AEAD加密算法中的AAD 及aad length
  19. PHP软件工程近三年的文献,软件工程论文参考文献
  20. 微信公众号关于百度地图和腾讯地图本地定位api的调用(js)

热门文章

  1. cocos2d-x 调色
  2. Math.abs为Integer.Min_VALUE返回错误的值
  3. iptables tcp wrappers
  4. Linux之物理页面的分配
  5. 上海理工大学第二届“联想杯”全国程序设计邀请赛 - Dahno Dahno(SW)
  6. 牛客 - 第k小数(线性寻找第 k 小数)
  7. js一键批量打印_js批量打印文件夹
  8. Python实战-获取鼠标键盘事件
  9. 高二计算机水平测试题,高二计算机学业水平测试 模拟试题(附答案)
  10. vuedraggable自由拖拽html,vue中draggable拖拽列表的使用