基于检索的聊天机器人

检索模型所使用的回复数据通常是预先存储且事先定义的数据,而不像生成式模型那样可以创造出未知的回复内容。准确来说,检索式模型的输入是一段上下文内容,和一个可能作为回复的候选答案,模型的输出是对这个候选答案的打分。寻找最合适的回复内容的过程是:先对一堆候选答案进行打分及排序,最后选出分值最高的那个作为最终回复。

直觉来说,一对问答对如果query和response中语义上相近的词越多,那query和response越可能是一对正确的问答对。这样的假设确实有一定的道理,但事实上query和response并不一定是语义上的相近,有时候query和response在语义向量上并没有什么相似性。

流程:
query和response都是讲过分词的,分词后将每个词映射成词向量的形式,之后词向量会被微调

分词和向量化后的query和response经过相同的RNN(Word by word)一个词一个词的输入,query和response按照批处理的那种形式输入到RNN中,比如普通的RNN在批处理时按照每一批处理处理数据,加假如批处理大小是2,原本应该是输入两个样本,在这里RNN把第二个样本换成query的回复response,这样构成一个完整样本的输入,RNN最终生成一个向量表示,捕捉了query和response之间的语义联系。

将向量c与一个矩阵M相乘,来预测一个可能的回复r’。如果c为一个256维的向量,M维256*256的矩阵,两者相乘的结果为另一个256维的向量,我们可以将其解释为[一个生成式的回复向量]。矩阵M是需要训练的参数。

(4) 通过点乘的方式来预测生成的回复r’和候选的回复r之间的相似程度, r=cTM r ′ = c T ∗ M ,点乘结果越大表示候选回复作为回复的可信度越高;之后通过sigmoid函数归一化,转成概率形式。图中把第(3)步和第(4)步结合在一起了。
这里写图片描述
首先要将给定数据处理成TensorFlow的tfrecord可以接受的格式,原始数据就是从Excel文件存储的地址中下载的对话对,通过这些对话对制作字典,处理后的数据的每个样本的格式如下:
每个实例包括如下几个字段:

Query:表示为一串词标号的序列,如[231, 2190, 737, 0, 912];
Query的长度;
Response:同样是一串词标号的序列;
Response的长度;
Label;
Distractor_[N]:表示负例干扰数据,仅在验证集和测试集中有,N的取值为0-8;
Distractor_[N]的长度;

检索式聊天机器人

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值