写点什么

多轮对话机器人打造(上篇):着手设计

  • 2019-11-05
  • 本文字数:2769 字

    阅读完需:约 9 分钟

多轮对话机器人打造(上篇):着手设计

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

简介与相关技术调研

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



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


设计一个聊天机器人

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


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


语义理解

1. 建立语言模型

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


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


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



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



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


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


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


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

2. 语言模型在系统中的应用

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


1) 话题模型(Topic 模型)


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


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


  • Act-Slot 模型


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



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



  • Value 模型


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


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

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

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

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

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

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

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

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

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


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


3) 情感模型


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

应答引擎

1. 定义业务描述语言

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



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


2. 业务流程控制引擎

如下图所示,有 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 流程,新流程走完后再回到切换话题的断点处,继续原流程一直走完。

3. 一个业务流程例子

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


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

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

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

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


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


TP 小天

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


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



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


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/36MbN7E1_8A7ODfMrZpPAA


2019-11-05 17:072420

评论

发布
暂无评论
发现更多内容

GitHub 爆火的「算法刷题宝典」,电子版终于出来了

Java 数据结构 算法 LeetCode

二层交换机和三层交换机到底有啥区别?如何从二层切换到三层模式,结合思科、华为、瞻博三厂商!

wljslmz

6 月 优质更文活动

行业DBA走进华为,共建数据库生态

YG科技

从BeyondCampus最佳实践,洞察高校零信任发展趋势

权说安全

面渣逆袭必看!Java中高级面试指南,Github标星4.3k+!

Java java面试 Java八股文 Java面试题 Java面试八股文

大语言模型的创意能力到底几何?探索从GPT-2到GPT-4的演进

Baihai IDP

人工智能 自然语言处理 大模型 白海科技 企业号 6 月 PK 榜

火山引擎DataLeap的Catalog系统搜索实践(三):Learning to rank与后续工作

字节跳动数据平台

数据湖 数据化 数据平台 大数据分析 DataLeap

踩坑:以为是Redis缓存没想到却是Spring事务!

Java redis spring 缓存 事务

宝兰德应用服务器软件与华为云GaussDB完成兼容互认证

YG科技

华为云GaussDB以技术创新引领金融行业分布式转型

YG科技

[EuroSys2023 Best Poster] 面向动态图的极低时延GNN推理采样服务

阿里云大数据AI技术

人工智能 机器学习 推理 企业号 6 月 PK 榜 DGS

自动化回归测试平台 AREX 前端架构演变史 —— Tabs 动态组件设计

AREX 中文社区

Vue 前端 软件测试

【ChatGPT应用篇】助力Beauty代码的初体验 | 京东云技术团队

京东科技开发者

人工智能 ChatGPT 企业号 6 月 PK 榜

入职阿里?最少啃完这本500页Java并发多线程源码笔记

程序知音

Java 并发编程 多线程 高并发 后端技术

GitHub标星137k+,超全面Java知识点总结!从10K到40K全有了

Java

深度解析Seata AT 模式中性能优化与隔离保障的平衡之道

Java你猿哥

Java 数据 ssm 脏读

5年Java经验字节社招:15天3次面试,成功拿下Offer

程序知音

Java java面试 大厂面试 后端技术 Java面试八股文

阿里、字节大佬共创的Netty核心原理手册,必须是全网No.1

程序知音

Java Netty java架构 Java进阶 后端技术

记一次618军演压测TPS上不去排查及优化 | 京东云技术团队

京东科技开发者

JVM 压测 调优 压测分析 企业号 6 月 PK 榜

软件测试/测试开发丨接口自动化测试学习笔记分享

测试人

程序员 软件测试 自动化测试 接口测试 测试开发

如何开发视频上传和播放功能时,既省钱又体验好?

北桥苏

php ffmpeg OSS HLS m3u8

文盘Rust -- tokio绑定cpu实践 | 京东云技术团队

京东科技开发者

rust cpu tokio 企业号 6 月 PK 榜

从入门到精通,阿里内部手抄微服务架构笔记,看完感觉我又行了!

Java 架构 微服务 Spring Cloud spring cloud alibaba

你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案!

Java你猿哥

Java ssm map

开源赋能 普惠未来|元遨/CARSMOS诚邀您参与2023开放原子全球开源峰会

开放原子开源基金会

开源 CARSMOS 元遨

Csdn上20W+阅读,这份“Java核心万字宝典”霸榜9天,太香了

Java

轻量灵动: 革新轻量级服务开发 | 京东云技术团队

京东科技开发者

jdk8 GraalVM jdk17 企业号 6 月 PK 榜

国产自研数据库是更新换代首选

YG科技

🔥笔下生花,与时舒卷,InfoQ写作社区6月优质更文活动来啦!

InfoQ写作社区官方

热门活动 6 月 优质更文活动

多轮对话机器人打造(上篇):着手设计_文化 & 方法_selinux_InfoQ精选文章