对话机器人(一)——对话机器人基础知识
对话机器人基础
一、对话机器人分类
1. 知识领域
a. 面向限定领域
只能聊设定好的固定主题。若用户用无关领域挑战机器人,机器人用安全话术回复或结束对话。
b. 面向开放领域
用户不需要有明确的目的或意图。
c. 面向常用问题集
通过检索知识库来回答问题,仅取决知识库的内容。
2. 答案来源
a. 基于结构化
KBQA系统。问答的来源是一个知识库,知识库可能是图数据库、RDF三元组、Mysql等。问题的答案是通过知识库推理得来的。
b. 基于文档
阅读理解任务。根据用户问题,从文档中自动检索答案返回。
c. 基于问答对
语料库中保存大量的问题和答案组,用户的问题在给定的问答集中,将答案返回。
3. 答案反馈机制
a. 基于检索式
答案的来源是人工编写的模板,根据用户的问题,通过一系列算法找到对应的答案模板,返回给用户。
b. 基于生成式
通过NLG技术(自然语言生成模板)生成。专业程度不高,适合自动生成。
4. 任务类型
a. 问答机器人
一问一答,多轮对话之间没有特定关系。
b. 任务机器人
多轮交互式,以最终完成某个任务为对话结束,每轮交互与上文有关系,整个问答流程类似一个软件流程图。
c. 闲聊机器人
聊天多为兴趣爱好等闲聊。
二、实现技术
- 意图识别层:识别语言的真实意图,将意图分类,进行意图属性抽取。
- 问答匹配层:对问题进行匹配识别及生成答案的过程。
1. end-to-end模式
从用户输入到系统输入作为一个整体去训练,希望训练一个从用户端自然语言输入到机器端自然语言输出的整体映射关系。
- 优点:灵活性强,可扩展性高,减少设计过程中的人工成本,打破传统模块之间的隔离,不存在偏置误差。
- 缺点:中间模型过于庞大,端到端模型对数据的数量和质量要求高,训练困难,对填槽、API调用等过程的建模不够明确,修改任何一个功能,都需要重新训练整个模型。
2. pipeline模式
输入——自言语言理解(NLU)——对话状态追踪(DST)——对话策略学习(DPL)——自然语言生成(NLG)——输出。
- 优点:灵活性强、可解释性强、易于落地,每个模块都能替换。
- 各个模块之间相对独立,难以联合调优,模块之间的误差会层层积累。
三、 预测会话与答案生成
1. 信息检索
利用搜索来预测
通过问题——答案的匹配算法对候选答案进行打分及排序,选出分值最高的回答作为最终回复。
2. 句型模板匹配标准问题
将用户问题与问答库中的句板模板进行匹配。若匹配成功,则根据句型模板提取用户问句中的语义信息,生成相应的答案
3. 知识图谱推理
类型:用户提问的事实性问题。
基于知识图谱的具体问答流程:
(1) 句型判断
判断用户提问时闲聊还是问答。
如:北京的面积是多少?——判断是问答。
(2) 句子实体抽取
将用户提问的实体抽取出来。
如:实体是北京
(3) 实体匹配
确认提取实体的具体语义、类别
北京是地名
(4) 相似度匹配
使用词向量、模糊匹配对用户提问的属性进行匹配
“是多少”对应的是“面积”
(5) 查询图谱
得到用户提问的答案,即:北京的面积
(6) 进行回答
将查询图谱得到的答案用事先准备的回答模板处理后,返回给用户。
三、多轮对话
初步获取用户意图后,需要更多轮次的对话获取必要的信息以最终得到明确的用户指令的方式。
1. 任务型多轮对话
定义:是一个决策过程,需要机器在对话过程中不断根据当前的状态决策下一步应该采取的最优动作(如:提供结果、询问特定限制条件、澄清或确认需求等),从而能够最有效地辅助用户完成信息或服务获取的任务。
核心模块:自然语言理解模块(NLU)、对话管理模块(DM)、自然语言生成模块(NLG)。
a. 自然语言理解
- 领域识别:识别该语句是属于什么类型(闲聊、问答、任务)。进入任务型机器人之前做判断与分发。
- 意图识别:识别用户意图,细分具体场景。本质是分类问题。
- 槽位提取:从语句充提取槽位信息,对设定好的槽位进行槽位填充,是序列标注任务。
- Bi-LSTM-CRF
❃ 槽:多轮对话过程中,将初步用户意图转化为明确用户指令所需要补全的信息对话管理模块。
❃ 【一个槽】对应【一件事情的处理中所需要获取的一种信息】
- 词槽:利用用户话中关键词来填写的槽。
- 接口槽:利用用户画像及其他场景信息填写的槽。
❃ 澄清话术:希望获取某种信息时所使用的问句。如买衣服,需要知道东西的价格、颜色等属性。
❃当接收到用户问句后,对未填充完成的必填槽组依次进行澄清。
b. 对话管理
对话管理DM:控制人机对话的进程,通过对NLU输出的处理来进行和用户的交互和反应。
通过该过程,带有明确意图的用户不断完善/修正自己的需求,且需求不够具体时明确/澄清用户需求。
对话状态追踪DST:持续对话的各种信息。根据上一时刻状态、用户状态、系统状态更新当前的对话状态。
对话策略学习DPL:对该场景下缺失槽位的反问策略。根据当前时刻的对话状态和系统状态,决定下一步的系统行为。
c. 自然语言生成
基于模板、基于语法、模型等。
2. 多主题多轮对话
话题切换:从一个多轮过程切换至另一个多轮过程,一个任务型多轮对话有多个不同的场景。
- 主动切换:用户主动改变自己的意图。
- 被动切换:无法从用户的问句中抽取信息以继续当前的多轮对话,只好将其作为一条全新的文具重新解析及话题识别。(利用槽记忆进行信息的继承)
四、对话机器人的工程架构
1. 对话系统分层架构
数据层:提供数据存储访问服务。如数据库、缓存、文件、搜索引擎。
- DB(MySQL、Mongo DB、HBase),Neo4j,Solr,ElasticSearch
算法层:意图识别、对话生成、排序。
- NLU技术
- 分词(HanLP、Jieba、ICTCLAS、NLPIR、Standford CoreNLP)
- 词性标注(HanLP、Jieba、ICTCLAS、NLPIR、Standford CoreNLP)
- NER(HanLP、Standford CoreNLP)
- 同义词
- 文本特征化(TF-IDF、Text Rank、Word2vec)
- 文本分类(Fast Text、SVM、NB)
- 文本聚类(K-Means、DBSCAN)
- NLG技术:
- 对话生成
- NLU技术
服务层:为应用层提供服务支持,如对话流程管理、用户权限管理、对话内容管理
- MVC->RPC->SOA->微服务
应用层:负责具体的对话业务视图展示,如对话内容显示等。
- 对话管理、Task Engine、词典管理、权限管理
2. 运维相关
a. 问题超出意图范围
- 用户意图本身很模糊:推荐近似的问题,询问用户是否想问这些近似问题。
- 推荐按照语义相似度,列出abcd4个选项,若都没有被用户选择,则bot回复一个低分,表示不在处理范围。
- Bot的算法模块还无法识别意图:尝试让不同类型的机器人解决。
b. 回复/推荐内容错误
标准文案更新但没有及时更新机器人回复话术。产品上线时回复话术A,但是过一段时间,修改回复话术为B,没有同步修改机器人。
修改方法:对系统标准文案进入后台管理系统进行管理,回复不当的文案有一个反馈机制。
c. 写日志遇到的故障
- 注意Log的级别,不要将Log输出全局配置为Debug。若产生大量的日志会占满硬盘。
- 聊天系统可能集成很多功能模块,每个功能模块可以被打包成微服务形式,但是每一个微服务对外输出的日志只有一个。
d. 高并发访问数据库可能引发故障
注意不要高并发访问数据库
e. 缓存引发故障
需要考虑系统的性能。
f. 滥用生产环境
生产环境不可被当测试环境使用。
参考文献:
刘宇, 崔燕红, 郭师光等.聊天机器人:入门 进阶与实战[M].机械工业出版社,2019:212.
对话机器人概述:https://zhuanlan.zhihu.com/p/331791105
对话机器人(一)——对话机器人基础知识相关推荐
- python 四足机器人运动学_【基础知识】四足机器人的站立姿态控制原理
理解本文所需要掌握的基础知识为:姿态的欧拉角表示方法 变换矩阵的含义与使用 概述 四足机器人运动过程中,身体部分的姿态会不断地发生变化.假如机器人的足端一直保持与地面接触且相对位置不发生变化,此时的身 ...
- 【实操篇】如何通过吾来平台提升机器人的对话体验?
文 | 吾来设计团队 整理 | 吾来君 前言 如今,对话机器人越来越多地出现在人们的日常工作和生活中,应用在销售.营销.教育等多种场景,但我们也经常会感受到不顺畅.不智能的对话体验.因此,只有深入了解 ...
- 聊天机器人在对话中的知识提取
聊天机器人在对话中的知识提取 目 录 1.引言 1 2.相关工作 2 3.知识提取过程 3 1.1研究方法 3 1.2答案聚类 5 4.构建一个神经会话代理 7 4.1模型 7 4.2数据集 7 4. ...
- 【对话机器人】开源机器人项目介绍
目录 1. 闲聊机器人介绍 2. 青云客平台 3. 思知项目 1. 闲聊机器人介绍 闲聊机器人是一种基于人工智能和自然语言处理技术的智能对话系统,旨在模拟人类的语言交流能力,与用户进行自然.连贯的对话 ...
- 机器学习笔记 - 深度学习、对话机器人、微软机器人框架
一.对话机器人概述 1.相关技术路线 (1)基于模板的对话机器人 基于模板的对话机器人是通过人工设定对话场景,并对每个应用场景编写一些有针对性的对话模板.基于模板的优点是准确度高,缺点是需要大量的人工 ...
- 基于生成式对话的实时聊天机器人:实现实时聊天机器人与智能交互
作者:禅与计算机程序设计艺术 基于生成式对话的实时聊天机器人:实现实时聊天机器人与智能交互 "基于生成式对话的实时聊天机器人:实现实时聊天机器人与智能交互" 引言 1.1. 背景介 ...
- 大作业-点灯机器人-记录心得(1)-----基础铺垫-文件基础知识
我在此次大作业的任务中负责的是绘制模块,任务是根据玩家输入的参数绘制生成对应的地图,以及每走一步生成一张新的状态图保存下来. 由于我的二位队友很早就写完了他们的部分,而我由于各方面繁多事务与学业压力迟 ...
- 示教器重定位下机器人动作_ABB基础知识8:手动操作ABB机器人
华仔:致力于为学习ABB机器人与机器视觉的同道中人提供个人的经验,所写文章多为学习与兴趣所致,若有不足之处,还请读者多多包涵. 学习内容: 1.手动操作界面 2.单轴运动 3.线性运动 4.重定位运动 ...
- 学机器人编程要学什么知识
学机器人编程要学什么知识?孩子的学习一直以来都是让家长们非常关心和重视的一件事情.家长在培养孩子的学习方面也可以说相当的耐心的,他们会给孩子选择一些能够有利于孩子成长的课程,就拿现在很多的家长想要孩子 ...
- 机器人行业需要什么计算机知识,进入机器人行业需要掌握哪些?盘点机器人工程师五大必备技能...
原标题:进入机器人行业需要掌握哪些?盘点机器人工程师五大必备技能 工业机器人的应用是一项复杂的系统工程,需要对其进行编程,在生产前,将机器人本体与控制软件.应用软件.外围设备等相结合,形成一条完整的生 ...
最新文章
- 频率分布直方图组距如何确定_QC七大手法之直方图法,快快转发、收藏!
- f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10)) //该句搭框架,确定输出1行x2列的图象,图片尺寸为20x10英寸
- Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性
- 2020全国高中清华北大录取人数榜,各位学生快看!
- java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...
- 百度时间显示_文章的发布时间对百度优化网站重要吗
- RuntimeError: DataLoader worker (pid(s) 13512, 280, 21040) exited unexpectedly
- Mongoose之 SchemaTypes 数据类型
- JS学习--Math对象
- 《无线通信与网络》第二章 信号传输基础
- 【软件工程】 详细设计
- 记仇表情包在线生成源码
- Mysql 8.0.27 免安装配置教程(windows)
- 179	Largest Number
- linux常用命令:iconv 命令(用于文件的编码转换),还可以用UE另存
- ai不同形状的拼版插件_Illustrator自动拼版脚本插件-AI自动拼版脚本下载-西西软件下载...
- uboot什么意思(uboot fastboot)
- 论文笔记(七):ROS Reality: A Virtual Reality Framework Using Consumer-Grade Hardware for ROS-Enabled Robot
- 完整回顾刘强东明尼苏达事件,他的这一夜让京东市值蒸发600亿
- 全志JAVA_全志a13开发总结