系统架构为:
1.1预处理
首先对多有的对话对进行文本处理,如繁体转换为简体,过滤特殊字符,英文字符,数字处理等,并对处理好的文本进行分词处理.
1.2建立索引
使用Elasticsearch方法
1.3生成候选query
由Elasticsearch方法得到top10个候选的query,再有得到的query通过Elasticsearch算法得到对应的10个response,
Elasticsearch算法:
对于query p 和c,计算他们的得分为:
score(p,c)=pm(p)∗cd(p,c)∗tf(p)∗idf(c)∗nm(c)
pm(p)=1/∑wi∈set(p)idf2(wi)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
idf(wi)=1+lognumDocsdocFreg+1e
cd(p,c)=|set(p⋂set(c))||set(p)|
|set(p)| 表示 set(p) 中的词的个数.
tf(p)=∑wi∈set(p)f(wi)‾‾‾‾‾‾‾‾‾‾‾‾‾√
nm(c)=1/|set(c)|‾‾‾‾‾‾√
1.4query排序
为了找到与输入对匹配的response,需要对于生成的候选query进行排序.排序算法为random walk:
r^0=\alpha
r^{t+1}=(1-\lambda)\times T\times r^t+\lambda\times\alpha
式中,t没迭代次数,\alpha为初始向量.
计算输入p与candidate c的得分如下:
E(c)=score(p,c)*r(c)
安装E(c)值对所有candidate进行排序.
效果对比