论文
AliMe Chat: A sequence to Sequence and Rerank based Chatbot Engine
讲的是如何做开放领域的聊天机器人
- 这篇文章的主要核心思想是结合IR(信息检索)和 seq2seq(生成模型)去做
- 当用户来了一个问题之后,通过IR系统在QA知识库当中检索出来一个候选答案的集合: < q k b i , r i > i = 1 k ( k = 10 ) <q_{kb_i}, r_i>_{i=1}^k (k=10) <qkbi,ri>i=1k(k=10),其中 q k b i q_{kb_i} qkbi表示knowledge Base当中检索出来的问题, r i r_i ri代表对应问题的答案
- 对原始问题 q q q和候选答案 r i r_i ri组成的问答对计算一个置信度 o ( r i ) = s ( q , r i ) o(r_i) = s(q, r_i) o(ri)=s(q,ri),其中计算置信度的函数 s s s,这是一个seq2seq模型做的rerank model,如下: s M e a n − P r o b = 1 n ∑ i = 1 n p ( y i = w i ∣ θ i ) , 其 中 θ i = { y 1 , y 2 , . . . , y i − 1 , c i } 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\} sMean−Prob=n1i=1∑np(yi=wi∣θi),其中θi={y1,y2,...,yi−1,ci}
- 挑选出最佳答案 r , o ( r ) = m a x ( o ( r i ) ) r, o(r)=max (o(r_i)) r,o(r)=max(o(ri)),如果 o ( r ) > = T o(r) >= T o(r)>=T 直接返回答案,否则返回生成模型生成的答案 r ′ r^\prime r′
IR Model
- 信息检索技术
- 倒排索引
- 检索的时候,去掉停用词,扩充同义词,然后去召回
- 使用BM25计算检索相似性(注:这里我没有去看BM25算法,可以找论文去看看)
Generation based Model
- 使用了常见的seq2seq模型:
p ( y i ∣ θ 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 = ∑ j = 1 m α i j h j 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 p(yi∣θi)=p(yi=wi∣y1,y2,...,yi−1,ci)=f(yi−1,si−1,ci)ci=j=1∑mαijhj - 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 , r i q,r_i q,ri,其中 r i r_i ri可以视为单词的序列 w 1 , w 2 , . . . , w n w_1, w_2,...,w_n w1,w2,...,wn: s M e a n − P r o b = 1 n ∑ i = 1 n p ( y i = w i ∣ θ i ) s^{Mean-Prob} = \frac{1}{n} \sum_{i=1}^n p(y_i = w_i | \theta_i) sMean−Prob=n1i=1∑np(yi=wi∣θi)
- 其本质上就是,计算生成每一个候选答案每个词的概率,进行概率平均,得到一个候选答案的得分,模型也不用再训练,直接使用上面的生成模型
思考
- 其实本质上就是使用seq2seq+attention给IR生成的候选答案打分,同时因为生成模型本身生成的答案已经是概率最大的答案了,相当于打分都是使用seq2seq模型来做的,统一了IR评分和seq2seq的评分
- 可以考虑使用Transformer来做生成模型
- 可以考虑使用faiss做IR检索,或者使用bert做IR的检索
- 目前还不清楚的技术是:
- 如何将知识图谱集成到聊天机器人当中
- 如何将完成任务型
- 如何进行模板匹配,进行问答