论文
AliMe Chat: A sequence to Sequence and Rerank based Chatbot Engine
讲的是如何做开放领域的聊天机器人
- 这篇文章的主要核心思想是结合IR(信息检索)和 seq2seq(生成模型)去做
- 当用户来了一个问题之后,通过IR系统在QA知识库当中检索出来一个候选答案的集合:,其中表示knowledge Base当中检索出来的问题,代表对应问题的答案
- 对原始问题和候选答案组成的问答对计算一个置信度,其中计算置信度的函数,这是一个seq2seq模型做的rerank model,如下:
- 挑选出最佳答案,如果 直接返回答案,否则返回生成模型生成的答案
IR Model
- 信息检索技术
- 倒排索引
- 检索的时候,去掉停用词,扩充同义词,然后去召回
- 使用BM25计算检索相似性(注:这里我没有去看BM25算法,可以找论文去看看)
Generation based Model
- 使用了常见的seq2seq模型:
- backeting and padding:对问题和长度进行了bucket,使用了五个bucket: (5,5), (5,10),(10,15),(20,30),(45,60),第一个数字代表问题的长度,第二个数字代表答案的长度
- softmax over sampled words: 使用了负采样的技术,512个随机的词作为负样本 + 一个正样本
- beam search decoder:使用了beam search的技术
Attentive Seq2Seq Rerank Model
- 使用上面的生成模型,去给IR生成的候选集打分,对用户输入的问题,其中可以视为单词的序列:
- 其本质上就是,计算生成每一个候选答案每个词的概率,进行概率平均,得到一个候选答案的得分,模型也不用再训练,直接使用上面的生成模型
思考
- 其实本质上就是使用seq2seq+attention给IR生成的候选答案打分,同时因为生成模型本身生成的答案已经是概率最大的答案了,相当于打分都是使用seq2seq模型来做的,统一了IR评分和seq2seq的评分
- 可以考虑使用Transformer来做生成模型
- 可以考虑使用faiss做IR检索,或者使用bert做IR的检索
- 目前还不清楚的技术是:
- 如何将知识图谱集成到聊天机器人当中
- 如何将完成任务型
- 如何进行模板匹配,进行问答
来源:CSDN
作者:GodsLeft
链接:https://blog.csdn.net/GodsLeft/article/details/103704094