开启聊天机器人模式
时间:2022-05-07
本文章向大家介绍开启聊天机器人模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
聊天机器人系统框架图
今天看到了一篇关于聊天机器人的一个不错的资源汇总: https://www.52ml.net/20510.html
进去看看先大概了解了一下都有哪些主要的概念:
理想的 chatbot 什么样 现在的 bot 什么样
|处理任务 |聊天-搞笑
[涉及到下面三个主要问题 & 解决方案 ]
1、response generation(selection)--对话生成是最后一个步骤,是输出的部分
四种solutions
solution 1 直接根据context来生成对话
|seq2seq+attention
solution 2 一个next utterance selection的问题
solution 3 rule-based或者说template-based,response的最终形式其实是填充了一个模板而成的
solution 4 query-based或者说example-based,response是来自于一个叫做知识库的数据库
2、dialog state tracking(DST)--是bot的核心,它的作用在于理解或者捕捉user intention或者goal
会给定一个state的范围,通过context来predict用户属于哪个state
3、user modeling--更重要的是用户的history conversations
[模型训练环节]
语料
一般都是来自社交网站
模型
细分的方向非常的多
seq2seq+attention
user modeling模型
将user identity(比如背景信息、用户画像,年龄等信息)考虑到model中,构建出一个个性化的seq2seq模型,为不同的user,以及同一个user对不同的请将中生成不同风格的response
reinforcement learning模型
deepmind公司将增强学习重新带回了舞台上面,结合着深度学习来解决一些更难的问题
task-oriented seq2seq模型
是尝试在bot的个别部件上采用深度学习的技术来做,并且给出了切实可行的方案
Knowledge Sources based模型
针对具体的任务,在seq2seq的基础上增加一个相关的knowledge sources会让效果好很多
将bot任务定义为next utterance classification,有一点像question answering任务
knowledge graph
rnn encoder
context sensitive模型
history information的建模
思考
1、要不要做bot?
虽然不容易,但却非常有意义
2、open domain还是task-oriented?
task-oriented更加具体,更加实用
3、task-oriented bot为什么难,该朝哪个方向来发力?
将end-to-end应用在局部,而非整体上,配合上Information Extraction和Knowledge Graph等技术,实现一个高可用的框架体系,这个应该是task-oriented bot的发展方向
4、response的生成应该与哪些因素有关呢?
(1)user query,用户的提问
(2)user modeling,对用户进行建模
(3)knowledge,外部知识源
原文:聊天机器人技术的研究进展
聊天机器人在各种场景下的功能和产品
系统框架
自然语言理解
聊天机器人系统中的自然语言理解功能包括用户意图识别、用户情感识别、指代消解、省略恢复、回复确认及拒识判断等技术。
对话管理
对话管理功能中涉及到的关键技术主要有对话行为识别、对话状态识别、对话策略学习及对话奖励等
自然语言生成
在聊天机器人系统上的对话生成主要涉及检索式和生成式两类技术
挑战
1)对话上下文建模
2)对话过程中的知识表示
3)对话策略学习
4)聊天机器人智能程度的评价
展望
1)端到端
2)从特定域到开放域
3)更加关注“情商”
来源:http://www.shareditor.com/ 原文:自己动手做聊天机器人教程
觉得这个教程还是比较系统化的,打算先跟着入门一下。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- git 常用命令介绍
- PAT (Basic Level) Practice (中文)1043 输出PATest (20 分)
- PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)
- Vue中computed分析
- 半小时搞懂 HTTP、HTTPS和HTTP2
- RestPack Java实现Html转PDF文件
- 六、垃圾回收_判断对象是否存活算法_引用计数法详解
- webpack + express 实现文件精确缓存
- python提取视频中的音频
- Vue3 响应式原理
- vue-mergeable-table 动态生成的可合并行列的表格
- 【GOFLY】基于GO语言gin框架和websocket实现的全开源WEB客服即时通讯管理系统
- edgeXFoundry中modbus通信部署和测试(待续)
- C++面向对象学习之运算符重载(1)
- PAT (Basic Level) Practice (中文)1045 快速排序 (25 分)