【论文笔记】AliMe: seq2seq && IR

人走茶凉 提交于 2019-12-25 20:28:04

论文

AliMe Chat: A sequence to Sequence and Rerank based Chatbot Engine
讲的是如何做开放领域的聊天机器人

  • 这篇文章的主要核心思想是结合IR(信息检索)和 seq2seq(生成模型)去做

在这里插入图片描述

  • 当用户来了一个问题之后,通过IR系统在QA知识库当中检索出来一个候选答案的集合:<qkbi,ri>i=1k(k=10) <q_{kb_i}, r_i>_{i=1}^k (k=10) ,其中qkbiq_{kb_i}表示knowledge Base当中检索出来的问题,rir_i代表对应问题的答案
  • 对原始问题qq和候选答案rir_i组成的问答对计算一个置信度o(ri)=s(q,ri)o(r_i) = s(q, r_i),其中计算置信度的函数ss,这是一个seq2seq模型做的rerank model,如下:sMeanProb=1ni=1np(yi=wiθi),θi={y1,y2,...,yi1,ci}s^{Mean-Prob} = \frac{1}{n} \sum_{i=1}^n p(y_i=w_i| \theta_i) , 其中\theta_i=\{y_1,y_2,...,y_{i-1}, c_i\}
  • 挑选出最佳答案r,o(r)=max(o(ri))r, o(r)=max (o(r_i)),如果o(r)>=To(r) >= T 直接返回答案,否则返回生成模型生成的答案rr^\prime

IR Model

  • 信息检索技术
  • 倒排索引
  • 检索的时候,去掉停用词,扩充同义词,然后去召回
  • 使用BM25计算检索相似性(注:这里我没有去看BM25算法,可以找论文去看看)

Generation based Model

  • 使用了常见的seq2seq模型:
    p(yiθi)=p(yi=wiy1,y2,...,yi1,ci)=f(yi1,si1,ci)ci=j=1mαijhj p(y_i | \theta_i) = p(y_i=w_i | y_1, y_2,...,y_{i-1}, c_i) = f(y_{i-1}, s_{i-1}, c_i) \\ c_i = \sum_{j=1}^m \alpha_{ij}h_j
  • 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生成的候选集打分,对用户输入的问题q,riq,r_i,其中rir_i可以视为单词的序列w1,w2,...,wnw_1, w_2,...,w_nsMeanProb=1ni=1np(yi=wiθi) s^{Mean-Prob} = \frac{1}{n} \sum_{i=1}^n p(y_i = w_i | \theta_i)
  • 其本质上就是,计算生成每一个候选答案每个词的概率,进行概率平均,得到一个候选答案的得分,模型也不用再训练,直接使用上面的生成模型

思考

  • 其实本质上就是使用seq2seq+attention给IR生成的候选答案打分,同时因为生成模型本身生成的答案已经是概率最大的答案了,相当于打分都是使用seq2seq模型来做的,统一了IR评分和seq2seq的评分
  • 可以考虑使用Transformer来做生成模型
  • 可以考虑使用faiss做IR检索,或者使用bert做IR的检索
  • 目前还不清楚的技术是:
    • 如何将知识图谱集成到聊天机器人当中
    • 如何将完成任务型
    • 如何进行模板匹配,进行问答
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!