如何用知识库做问答系统?
0 885
0

基于知识库的问答系统是怎么回事? 怎么做的?

收藏
2021-06-04 21:10 更新 酒量大的路灯 •  29
共 1 个回答
高赞 时间
0

基于知识库的问答系统,也叫做基于检索的问答系统: 从知识库里找一个最相似的问题,拿到它的答案返回给用户.

当知识库很小时,也可以建模为一个分类问题: 把用户输入的问题分类为知识库里的一个标准问题(每个知识库里的问题是一个类别).

如果建模为检索问题,那就按检索的方法做就好了,区别是只返回 top 1 而不是 top N. 怎么做呢?

用一些跟搜索引擎相似的技术,分为两个阶段:第一个阶段是侯选集召回,第二个阶段是重排序。

首先是侯选集,侯选集召回有很多种方式,和搜索引擎相比,相对简单,原因是搜索引擎要召回的量特别的大,但是知识库,因为是人工导入的,它的召回的就没有那么复杂。首先对用户的输入问题做处理,如分词、抽取关键词、同义词扩展、计算句子向量等;然后基于处理结果在知识库中做检索匹配,例如利用BM25、TF-IDF或者向量相似度等匹配出一个问题集合,这类似推荐系统中的召回过程.

第二是重排序,其实我们可以用文本相似度、检索相关度,如果有足够数据的话,还可以用神经网络的语义相似度等,来做重排序工作。这些工作也可以用多模型融合的方式来做,将多个模型的结果综合考虑得到最终结果。这些都跟搜索引擎的技术没有特别本质的区别,也会有些微小的差别,这是知识库这块的工作。

如果建模为分类问题,那就进行文本编码(tf-idf, word2vec, cnn, rnn, lstm, bert等等),然后用各种分类算法做就好了(线性回归,svm,神经网络等等).

收藏
2021-06-04 21:21 更新 怪瘦的钱包 •  30