0
基于知识库的问答系统,也叫做基于检索的问答系统: 从知识库里找一个最相似的问题,拿到它的答案返回给用户.
当知识库很小时,也可以建模为一个分类问题: 把用户输入的问题分类为知识库里的一个标准问题(每个知识库里的问题是一个类别).
如果建模为检索问题,那就按检索的方法做就好了,区别是只返回 top 1 而不是 top N. 怎么做呢?
用一些跟搜索引擎相似的技术,分为两个阶段:第一个阶段是侯选集召回,第二个阶段是重排序。
首先是侯选集,侯选集召回有很多种方式,和搜索引擎相比,相对简单,原因是搜索引擎要召回的量特别的大,但是知识库,因为是人工导入的,它的召回的就没有那么复杂。首先对用户的输入问题做处理,如分词、抽取关键词、同义词扩展、计算句子向量等;然后基于处理结果在知识库中做检索匹配,例如利用BM25、TF-IDF或者向量相似度等匹配出一个问题集合,这类似推荐系统中的召回过程.
第二是重排序,其实我们可以用文本相似度、检索相关度,如果有足够数据的话,还可以用神经网络的语义相似度等,来做重排序工作。这些工作也可以用多模型融合的方式来做,将多个模型的结果综合考虑得到最终结果。这些都跟搜索引擎的技术没有特别本质的区别,也会有些微小的差别,这是知识库这块的工作。
如果建模为分类问题,那就进行文本编码(tf-idf, word2vec, cnn, rnn, lstm, bert等等),然后用各种分类算法做就好了(线性回归,svm,神经网络等等).
收藏