- unsupervised_method:提供了两种无监督式的相似度计算方法来实现FAQ,tfidf和编辑距离。
- dnn_dssm:基于tf-idf + dnn的dssm模型。
- lstm_dssm:基于词向量 + lstm的dssm模型。
- lstm_siamese:基于词向量 + lstm的siamese模型。
-
对于问答对比较少的情况时,比如只有几十个问答对的情况下,使用tf-idf或者编辑距离等无监督的算法也能取得很好的效果。 因为此时数据量少,问答对之间独立性较强,通过字面的判断就可以很好的计算相似度。
-
对于问答对比较多的情况下,且每个问题都会有大量的相似问,此时可以使用语义相似度模型,建议使用dssm或者siamese,复杂的 语义相似度模型在实际中的效果很多时候都不太好。通常的整个系统的做法是先用tf-idf或者编辑距离从问答对中选择一些候选的问答 对出来,比如从几万个问答对中选择32个,这个值可以你自己根据实际的效果去定,然后基于语义相似度模型来对这32个候选集排序。
-
通常情况下在FAQ中建议使用推荐回复的形式来回答,比如你可以通过一个阈值来控制80%的问题会给出具体的回答,而另外20%的问题 可以给出几个你认为可能能回答用户问题的回答。实践中显示这种方法能极大的提高正确回答的命中率。
-
以上的方法都需要预先将问答对加载到内存中,这样在预测时速度才会比较快,但是当数据量非常大时,比如 几百万的问答对的情况下,我们需要借助ES检索来得到候选集,再进入到语义相似度模型。总之,具体的设计 ,或者说用什么模型,都要根据自己的数据来定。