聊天机器人简要理解

news2024/9/24 4:09:36

聊天机器人

身边的同事或多或少都在聊ChatGPT,这又使得学生时代训练模型的恐惧感开始支配我。说起聊天机器人,我们先熟悉一下不同对话系统的概念。

一、对话系统分类

1、单轮对话

单轮与传统的问答系统相类似,是智能对话系统的初级应用。一般表现为一问一答的形式,用户提出问题或前发出请求,系统识别用户意图,做出回答或执行特定操作。单轮对话也强调自然语言理解,但一般不涉及上下文、指代、省略或隐藏信息,相对来说实现难度更低,产品的应用也更加成熟可靠。

2、多轮对话

多轮对话一般是任务驱动的多轮对话,用户是带着明确的目的的,如订餐,订票,叫车,寻找音乐、电影或某种商品等比较复杂的需求来,而这中间有很多限制条件,用户并不能一次将任务所需的关键信息一次性说完,说清楚,因此就要分多轮进行QA问答一方面,用户在对话过程中,可以不断修正和完善自己的需求;另一方面,当用户在陈述需求不够具体和明确时,机器人可以通过询问,澄清和确认来帮助用户寻找满意的结果,并且在任务的驱动下与用户完成日常的交互,以此不断完善对于用户需求的满足。因此,任务驱动的多轮对话不是一个简单的自然语言理解加信息检索的过程,而是一个决策过程,需要机器在对话过程中不断根据当前的状态决策下一步应该采取的最优动作(如:提供结果,询问特定限制条件,澄清或确认需求,等等)从而最有效的辅助用户完成信息或服务获取的任务。

3、模块化的对话系统

模块化对话系统
分模块串行处理对话任务,每一个模块负责特定的任务,并将结果传递给下一个模块,通常由NLU(Natural Language Understanding,自然语言理解)、DST(Dialogue State Tracking,对话状态追踪)、DPL(Dialogue Policy Learning,对话策略学习)、NLG(Natural Language Generation,自然语言生成)4个部分构成。在具体的实现上,可以针对任一模块采用基于规则的人工设计方式,或者基于数据驱动的模型方式。
NLU:将用户输入的自然语言语句映射为机器可读的结构化语义表述,这种结构化语义一般由两部分构成,分别是用户意图(user intention)和槽值(slot-value)。
DST:这一模块的目标是追踪用户需求并判断当前的对话状态。该模块以多轮对话历史、当前的用户动作为输入,通过总结和推理理解在上下文的环境下用户当前输入自然语言的具体含义。对于对话系统来说,这一模块有着重大意义,很多时候需要综合考虑用户的多轮输入才能让对话系统理解用户的真正需求。
DPL:也被称为对话策略优化(optimization),根据当前的对话状态,对话策略决定下一步执行什么系统动作。系统行动与用户意图类似,也由意图和槽位构成。
NLG:负责把对话策略模块选择的系统动作转化为自然语言,最终反馈给用户。

4、端到端的对话系统

考虑采用由输入直接到输出的端到端对话系统,忽略中间过程,采用数据驱动的模型实现。
目前,主流的任务对话系统实现为模块化方式,由于现有训练数据规模的限制,端到端的方式仍处于探索阶段。
对话流程如下图所示:
1)、首先接受用户消息,并将该消息送到Interpreter,可以理解为一个解析器,它会把用户的输入内容转变为一个字典,其中包括原始信息,意图,实体等等,其实就是Rasa的NLU模块所做的事情。
2)、接下来会把字典送给Tracker,这个是用来记录对话状态并跟踪对话进度的。
3)、Policy会接收到Tracker当前的状态,并根据这个状态选择一个合适的Action
4)、Action一方面会把信息发送给Tracker,让它记录下当前的状态,另一方面还会给用户发送信息。聊天机器人对话流程
这里简要聊一下NLU模块。
对于面向任务的对话系统来说,NLU的主要作用是对用户输入的句子或者语音识别的结果进行分析,提取用户的对话意图以及用户想要传递的真实意图。涉及的主要技术是意图识别和槽位填充,这两种技术分别对应用户动作的两项结构化参数,即意图和槽位。

二、意图识别

当用户输入“明天天气如何?、明天是晴天还是雨天?明天需要抹防晒霜吗?”聊天机器人只需要理解用户是想查询天气;当用户输入“如何包龙虾馅的饺子时”,聊天机器人要正确理解为“包饺子”而不是“包龙虾”才行…所以正确的识别用户意图是一个聊天机器人有无价值的重要基础。

意图识别的方法

1、规则模板方法

通过专家手工编写规则模板来识别意图。比如:
     买 .* 《地名》 .* 《地名》.* 机票 =》 买机票
模板构成: 字符串、词性、正则表达式。
通过匹配上述模板,即可识别出对应的意图。
缺点:
1)、人工编写工作量大,易冲突
2)、规则模板覆盖面较小,使用通配符可以解决一部分问题,但带来了匹配优先级的问题
3)、适用于垂直领域,在通用领域则无法推广
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

2、基于统计的方法

使用意图词典做词频统计,取词频最大的就是对应的意图
缺点:覆盖面比规则模板广,但容易误识别

3、基于语法的方法

先对句子做语法分析,找到中心动词及名词,再根据意图词典即可识别出意图来。如:
     我要买从深圳到上海的机票
1)、语法分析的结果
在这里插入图片描述
2)、再根据意图词典即可识别出“买机票”意图
在这里插入图片描述
缺点:使用语法分析使得准确度更高了,但增加了语法识别的难度。

4、基于机器学习的方法

1).数据标注
2).数据预处理
3).训练集拆分
4).特征提取
5).特征向量化
6).使用模型训练

5、基于深度学习方法

核心思想:把意图识别看成是文本分类任务。
1).语料标注
2).分词
3).搭建模型

三、槽位填充

槽位,即意图所带的参数。一个意图可能对应若干个槽位,例如询问公交车路线时,需要给出出发地、目的地、时间等必要参数。
槽的属性:
1)、可默认填写/不可默认填写;
2)、澄清话术(当槽不可默认填写且又没有填写的时候,就要进行澄清);
3)、平级槽或依赖槽(根据槽和槽之间是否独立,后续的槽是否依赖于前面的槽决定);
4)、多轮记忆状态(槽位没有填满则反复询问,直到填充完毕)。

要使一个面向任务的对话系统能正常工作,首先要设计意图和槽位。意图和槽位能够让系统知道该执行哪项特定任务,并且给出执行该任务时需要的参数类型。对于一个单一的任务,上述定义便可解决任务需求。其实在真实的业务环境下,一个面向任务的对话系统往往需要能够同时处理若干个任务。对于同一系统处理多种任务的复杂情况,一种优化的策略是定义更上层的领域,可以简单地将领域理解为意图的集合。定义领域并先进行领域识别的优点是可以约束领域知识范围,减少后续意图识别和槽位填充的搜索空间。此外,对于每一个领域进行更深入的理解,利用好任务及领域相关的特定知识和特征,往往能够显著地提升NLU模块的效果。

槽位填充的方法

1)、把槽位填充任务转变成关系抽取任务,用传统的信息抽取方法是实现槽值填充,按照具体实现方法不同,信息抽取方法又可以分为模式匹配的方法和基于分类器的方法;
2)、以问答系统为基础,通过槽值填充任务中定义的每一个等价问题集合的方式来完成槽值填充;
3)、基于规则的方法,直接依靠人工的方法为每一个槽位构建对应的模式库或者规则库,然后以这些模式或规则为标准从测试语料中检索出符合标准的实例来完成槽值填充任务。

意图识别实际上是一个分类任务,槽位填充实际是一种序列标注的问题。
为了更好地融合意图识别与槽位填充,提出了很多很好的模型来完成这项任务。
1)、利用双向的GRU+CRF作为意图与槽位的联合模型;
2)、利用语义分析树构造路径特征实现槽位填充与意图识别联合的模型;
3)、基于CNN+Tri-CRF的模型;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时代变迁的缩影:从天涯BBS的沦落,到媲美EXCEL的WPS后辈的腾达

昔日王者,今朝黯然 “无法访问此网站” 陪伴我们青春的天涯论坛就此真的与我们相忘于天涯。 江湖路远,不知何日才能重逢? 这是第几个了? 那个人人自由创造的时代是否真的已经逝去? 近年来网易、凤凰等论坛相继关闭。…

Docker Harbor

目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…

大江南北十三省,蓬门今始为君开,数字政府建设“实在”必行

引言: 推动数字中国建设是实现中国式数字化进程、抢占未来发展制高点的关键。为全面推动数字化转型在政府领域的纵深发展,各地领导不断进行数字化探索。其中,数字员工凭借流动的数据、流畅的体验,百姓少跑腿、数据多跑路特点&…

零基础也能轻松搭建Python环境和pycharm

目录:导读 引言 python环境安装 pycharm安装 设置 字体的大小: 关闭警告: 代码风格: 代码层级: ide与版本控制的整合: 插件安装:(3个) 介绍: 控制台&…

HJTB-9222跳闸闭锁继电器导轨安装 约瑟JOSEF

名称:跳闸闭锁继电器品牌:JOSEF约瑟型号:HJTB-9222额定电压:110、220V触点容量:250V/5A动作时间:≤10mS HJTB系列跳闸闭锁继电器 系列型号 HJTB-9222跳闸闭锁继电器 概述和应用 HJTB系列跳闸闭锁继电器…

NLP模型(四)——seq2seq模型与Attention机制介绍

文章目录 1. seq2seq模型介绍2. 模型计算2.1 LSTM结构单元2.2 seq2seq计算流程 3. Attention机制3.1 引入Attention3.2 计算全局对齐权重 4. seq2seq加入Attention机制5. 模型理解6. 模型细节6.1 解码器结构6.2 加入信息方式 参考文章 1. seq2seq模型介绍 传统的RNN只能处理 1…

诺派克ROPEX热封控制器维修RES-407/RES-406

德国ROPEX热封控制器维修型号包括:RES-401,RES-402,RES-403,RES-406,RES-407,RES-408,RES-409,RES-420,RES-440,MSW-2,PEX-W3,PEX-W4&…

Android 源码浅析:Leakcanary 内存泄漏检测的好帮手

我们一起来分析一下大名鼎鼎的 Leakcanary, 想必作为 Android 开发都多多少少接触过,新版本的 Leakcanary 也用 Kotlin 重写了一遍,最近详细查看了下源码,分享一下。 tips:本来是只想分析下内存泄漏检测部分&#xff…

c语言Have Fun with Numbers

题目 Have Fun with Numbers Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers …

2016年iOS公开可利用漏洞总结

0x00 序 iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开并且可被利用的漏洞,本报告总结了2016年比较严重的iOS漏洞(可用于远程代码执行或越狱),希望能够对大家移动安全方面的工…

【LeetCode】139. 单词拆分

139. 单词拆分(中等) 思路 首先将大问题分解成小问题: 前 i 个字符的子串,能否分解成单词;剩余子串,是否为单个单词; 动态规划的四个步骤: 确定 dp 数组以及下标的含义 dp[i] 表示 s…

Zero-ETL、大模型和数据工程的未来

编者按:本文探讨了数据工程领域的未来趋势和挑战,以及其不断变化、甚至经常出现“重塑”的特点。在数据工程领域,大数据的性能、容量提升总是有一定的上限,每一次进步都会带来一定的技术提升,从而提高上限。但是很快我…

解锁采购系统数字升级?来看看云时通SRM!

疫情影响下,全球经济一体化使得企业在供应商的管理上面临着巨大挑战,传统采购方法已经不足以支持企业管理和竞争,企业采购管理急需数字化转型。 相较于传统采购方法,目前成功的供应商系统管理,还需要具有更多的市场要…

IT圈最近比较火热的技术都是哪些?

前言 如果现在要问什么行业最火,毋庸置疑,会有很多人第一反应回答是IT行业。众所周知,近些年互联网行业的高速发展,IT技术不断推陈出新,各种技术更新迭代周期越来越快,涌入IT技术开发的人员也是成倍增长&am…

QT基础铺垫

1.qt定位 qt在整个课程体系中起到以下作用 1.c理论的实践课 2.图形用户界面GUI开发 3.一个独立的就业方向 3.qt特性 qt经常被当作是一个基于c语言的gui开发框架,但是这并不是qt的全部,除了开发界面外,qt还包含了很多其他功能&#xff1…

C++最后一个数组元素后加不加逗号,的问题(C++11 及以上的标准中,最后一个元素后面可以加逗号,也可以不加)

这代码看得我有点疑惑,最后一个元素后咋有个逗号呢?也没报错? 原因: 在 C11 及以上的标准中,最后一个元素后面可以加逗号,也可以不加。因此,上述代码可以写成以下两种形式: std::v…

零基础学SQL(十三、事务)

目录 前置建表 ​编辑 一、什么是事务 二、事务特性ACID 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 三、事务控制 1、ROLLBACK 2、COMMIT 使用 set autocommit0;命令修改默认提交方式为FALSE 前置建表 CREATE TABLE…

无距离障碍:远程桌面Ubuntu实现全球办公

目录 前言 视频教程 1. ubuntu安装XRDP 2.局域网测试连接 3. Ubuntu安装cpolar内网穿透 4.cpolar公网地址测试访问 5.固定域名公网地址 [TOC] 转载自远程穿透文章:Windows通过RDP异地远程桌面Ubuntu【内网穿透】 前言 XRDP是一种开源工具,它允许…

Android开发中的前五个代码异味:Jetpack Compose UI和MVVM

Android开发中的前五个代码异味:Jetpack Compose UI和MVVM 代码异味是指软件代码中潜在问题的指标,可能并不一定是错误,但可能会导致问题,如增加维护复杂性、降低性能或降低可读性。我们将探讨Android开发中的前五个代码异味&…

【C++】布隆过滤器

文章目录 布隆过滤器提出布隆过滤器概念布隆过滤器应用场景设计思路:布隆过滤器的插入布隆过滤器的查找布隆过滤器删除BloomFilter.h布隆过滤器优点布隆过滤器缺陷 布隆过滤器提出 我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经…