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

article/2025/9/20 2:42:39

640?wx_fmt=gif



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


简介与相关技术调研

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

640


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

640

 

设计一个聊天机器人

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


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

640


1、语义理解

建立语言模型

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

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

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

640


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

640


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

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

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

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

 

语言模型在系统中的应用

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


1) 话题模型(Topic模型)

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


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

A.   Act-Slot模型

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

640

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

640

    

B.    Value模型

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

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

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

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

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

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

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

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

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

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


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


3) 情感模型

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

 

2、应答引擎

定义业务描述语言

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

640

   

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

640

 

业务流程控制引擎

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


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


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


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

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

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

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

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

 

640

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


一个业务流程例子

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

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

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

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

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

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

640

 

TP小天

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


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

640

 

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


640?wx_fmt=gif



http://chatgpt.dhexx.cn/article/I7iKO0rO.shtml

相关文章

聊天机器人概述

目录 <span style"color:#333333"><span style"background-color:#f5f5f5">1.前言 2.机器人 3.聊天机器人 4.分类 5.好的聊天机器人应该具备的特点 6.基于模板的聊天机器人 7.检索式聊天机器人 8.生成式聊天机器人 9.参考文献 </span>&l…

手把手教你用python几行代码打造人工智能对话机器人,还说说话!

介绍 这里介绍一个简单的交互式人工智能机器人对话。之前大家可能看过我的文章&#xff0c;是一款qq机器人&#xff08;可点击传送机器人专栏&#xff09;项目介绍&#xff0c;那个也许做起来稍微麻烦&#xff0c;我也有用b站一行一行代码教过。那么难的可能大家接受比较难&…

对话机器人-检索与生成模型

综述 从应用的角度来说&#xff0c;对话机器人可以分为三个类别&#xff0c;分别是闲聊机器人&#xff0c;qa机器人以及任务型机器人。本系列主要介绍闲聊机器人。由于本文的内容主要是对对话机器人做一个简单的介绍&#xff0c;所以都是一些简单的介绍&#xff0c;详细的内容…

NLP中的对话机器人——问答机器人的应用场景

引言 本文是七月在线《NLP中的对话机器人》的视频笔记&#xff0c;主要介绍FAQ问答型聊天机器人的实现。 FAQ问答机器人 FAQ就是一些常见问题与回答&#xff0c;比如https://letsencrypt.org/docs/faq/。 但是我们要做的不是一问一答形式的&#xff0c;而是类似stackoverfl…

机器人是如何实现对话的?

对话机器人作为近年来愈发普遍的产品&#xff0c;以各种各样的形态出现我们的生活中&#xff1a;电话客服、文本客服、超市里的导购机器人等&#xff1b;那这些机器人如何实现和我们人类的智能对话的呢&#xff1f;本文将用显浅易懂的文字讲述机器人的对话原理与产品设计要点。…

Python3从零开始搭建一个语音对话机器人

从零开始搭建一个语音对话机器人 目录 01-初心缘由 02-准备工作 03-语音机器人的搭建思路 04-语音生成音频文件 05-音频文件转文字STT 06-与图灵机器人对话 07-文字转语音 08-语音对话机器人的完整代码 09-结束语 10-有问必答 01-初心缘由 最近在研究语音识别方向&a…

对话机器人

【居然审核不通过……内容低俗&#xff0c;这么高大上的内容&#xff0c;哪里低俗了……】 前面写了一系列的 微信机器人&#xff0c;但还没涉及到自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;。今天把这坑填上。本文将基于 Seq2Seq 模型和Little Y…

关于对话机器人,你需要了解这些技术

对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。图1给出了对话系统开发中涉及到的主要技术。 对话系统技能进阶之路 图1给出的诸多对话系统相关技术,从哪些渠道可以…

对话机器人(一)——对话机器人基础知识

对话机器人基础 一、对话机器人分类 1. 知识领域 a. 面向限定领域 只能聊设定好的固定主题。若用户用无关领域挑战机器人&#xff0c;机器人用安全话术回复或结束对话。 b. 面向开放领域 用户不需要有明确的目的或意图。 c. 面向常用问题集 通过检索知识库来回答问题&a…

Typora无法在applist里找到

添加一个desktop文件即可&#xff0c;记得加上%U才能在应用列表里看见

php安装失败,phpcms安装失败怎么办

phpcms安装失败怎么办&#xff1f; 最新版的phpcmsV9安装报错解决 具体报错信息如下&#xff1a;Web-server: Apache PHP版本: PHP/5.2.14 Mysql版本: MySQL 客户端版本: 5.0.90 适用版本: v9 更新日期: phpcms_v9.2.2_UTF8 编码版本: UTF-8 浏览器: maxthon 复现步骤: 正在准备…

android应用程序列表,List列表应用程序-小知识 #103

文章摘要&#xff1a; 1、从设计模式的角度浅谈List列表应用程序开发。 2、列表应用程序开发三要素。控件、数据、适配器。 一、综述&#xff1a; 1、Android中&#xff0c;使用ListView配合Adapter来展示数据列表的例子随处可见。但在实际应用场景中&#xff0c;数据源类型、V…

推荐系统中的Embedding应用

文章目录 1. Word2Vec1.1 Skip-gram 2. Airbnb中的Embedding2.1 用在相似推荐中的List Embedding2.1.1 优化一&#xff1a;Booked Listing as Global Context2.1.2 优化二&#xff1a;Adapting Training for Congregated Search2.1.3 冷启动问题2.1.4 效果评估 2.2 用在搜索推荐…

APP设备数据的特征衍生与模型应用

在信贷风控领域众多维度的数据源中&#xff0c;APP设备数据对于策略规则的开发、模型变量的筛选有着重要的贡献&#xff0c;理由是在当今电子信息化时代&#xff0c;APP数据可以较全面地反映出用户的个人习惯、日常行为等综合信息。因此&#xff0c;金融机构在开展个人信贷产品…

风控建模十二:数据淘金——如何从APP数据中挖掘出有效变量

风控建模十二&#xff1a;数据淘金——如何从APP数据中挖掘出有效变量 1、常识知识2、个例分析3、分布排查 智能手机的诞生改变了人类的生活方式&#xff0c;智能手机所承载的功能日臻完善、强大&#xff0c;人们在衣、食、住、行、工作、生活中面临的方方面面问题&#xff0c;…

2021-03-07 大数据课程笔记 day46

R星校长 机器学习06【机器学习】 主要内容 理解推荐系统处理数据流程。python 文件预处理 Hive 数据。dubbo 服务使用。 学习目标 第一节 推荐系统-数据处理流程 推荐系统数据处理首先是将 Hive 中的用户 app 历史下载表与 app 浏览信息表按照设备 id 进行关联&#xff0c…

java手机应用安装目录_如何获得Android手机的软件安装列表

Android的PackageManager类用于检索目前安装在设备上的应用软件包的信息。你可以通过调用getpackagemanager()得到PackageManager类的一个实例。对查询和操作安装包和相关的权限提供了方法&#xff0c;在下面这个Android的例子中&#xff0c;我们得到了在Android安装的应用程序…

这些信贷数据埋点中不得不知的埋点知识

国庆七天假&#xff0c;就这样飞快结束&#xff0c;似乎感觉还没休息够&#xff0c;再来一个七天都不觉得多多。 经过多年来移动互联网的普及&#xff0c;众多APP已采集到亿级乃至数十亿级别用户在设备端、通话、短信、地址等强变量的数据&#xff0c;伴随着近年来信贷行业高速…

新浪微博开发(五)AppList界面

这是客户端开发部分很重要的一个类&#xff0c;但是在开发之前需要用到有关GridView的知识。 若要临时充充电&#xff0c;请移步&#xff1a;GridView(九宫图)的使用介绍。 下面是AppList类的代码&#xff1a; /* * 用来显示、管理自己的微博账号&#xff0c;包括新浪微博账号…

使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用

先看效果图 github地址 github仓库 在线访问 初始化项目 #创建项目 create-react-app applist #如果没有安装create-react-app的话&#xff0c;先安装 npm install -g create-react-app 目录结构改造 |--config |--node_modules |--public |--scripts |--src|-----api //…