【聊天机器人】深度学习构建检索式聊天机器人原理

一、检索式与生成式聊天机器人对比

1、基于检索的chatterbot

在这里插入图片描述

2、基于生成的chatterbot

在这里插入图片描述

3、聊天机器人的一些思考:

(1)基于检索的chatterbot

  • 根据input和context,结合知识库的算法得到合适回复。
  • 从一个固定的数据集中找到合适的内容作为回复
  • 检索和匹配的方式有很多种(可以基于机器学习判断属于那种类型的匹配,利用关键字+word2vec进行文本相似度匹配)
  • 数据和匹配方法对质量有很大影响

(2)基于生成模型的chatterbot

  • 典型的是用seq2seq方法
  • 生成的结果需要考虑通畅度和准确度
  • 深度学习是学习数据的特征。对于认为很重要的特征,可以最后在全连接层时进行矩阵拼接加入,而不参与特征之间的学习,以免造成影响。

以前者为主,后者为辅;检索方法过程中当模型需要算法是,可以考虑加入深度学习。

4、chatterbot的问题

(1)应答模式的匹配方法太粗暴

  • 编辑距离无法捕获深层语义信息
  • 核心词+word2vec无法捕获整句话语义(对于我 爱 你和你 爱 我,词向量表示是一样的)
  • LSTM等RNN模型能捕获序列信息
  • 用深度学习来提高匹配阶段准确率

(2)特定领域+检索+合适的知识库能做到还不错。但开放域比较难

5、转化为机器学习或深度学习能够解决的问题,应该怎么做

(1)匹配本身是一个模糊的场景
转成排序问题
(2)排序问题怎么处理?
转成能输出概率的01分类
(3)数据构建?
需要正样本(正确的答案)和负样本(不对的答案)
(4)Loss function
分类问题采用对数损失(二元的交叉熵损失)
在这里插入图片描述)

二、使用深度学习完成问答:

1、论文

IMPLEMENTING A RETRIEVAL-BASED MODEL IN TENSORFLOW,WILDML BLOG,2016

2、论文框架图

在这里插入图片描述

三、深度学习问答数据

1、中文:

Microsoftz做法是,从其他不同的场景里,以相同的概率抽取答案,成为负样本。当前场景的问答作为正样本。

2、Ubuntu对话语料库:

(1)训练集:

  • Ubuntu对话数据集,来自Ubuntu的IRC网络上的对话日志
  • 训练集1000000条实例,一半是正例(label为1),一半是负例(label为0,负例为随机生成)
  • 样本包括上下文信息(context,即Query)和一段可能的回复内容,即Response;Label为1表示Response和Query的匹配,Label为0表示不匹配
  • query的平均长度为86个word,而response的平均长度为17个word。

(2)验证集/测试集:

  • 每个样本有一个正样本和9个负样本(也称为干扰样本)
  • 建模的目标是给正例的得分尽可能高(排序越靠前),而负例的得分尽可能低(有点类似分类问题)
  • 语料做过分词、stemmed、lemmatized等文本预处理
  • 用NER(命名实体识别)将文本中的实体,如姓名、地点、组织、URL等替换成特殊字符。

(3)评估准则:

  • recall@k(在前k个位置,能够找回标准答案的概率有多高)
  • 经模型对候选的response排序后,前k个候选中存在正例数据(正确的那个)的占比
  • k值越高,指标值越高,对模型性能的要求越松。

四、基线模型代码实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值