faq知识库中文本相似度模型训练方法

对于faq问答中的形式为一个标准问题对应多个相似问题的知识库,直接使用学术界的方法句子pair的方法(句子1,句子2, 是否相似)不能很好构造训练数据集,其中的原因有

  1. 公开数据集中的对于snetence1, sentence2给出一个明确的相似或者不相似的标签;但在工业faq中的相似度是其实不是计算sentence1, shentence2是否相似,而是sentence1 和{sentence2, sentece3...sentence_n}中的哪个更相似,虽然可以根据相似度的概率值来进行排序,然后选择概率最大的那个。但这两个任务从很根本上来讲还是有些区别。
  2. 从faq中标准问题-->相似问题的知识库中,很难构造出(sentence1, sentence2, 是否相似)这样的数据,其中主要是负样本数据难以构建,正样本数据还是很好构建的。
    我尝试过正样本(同一个标准问题下的相似问题两两互为正样本),
    负样本(sentece1, sentece2「方法a:随机抽取10个其他标准问题下的相似问题 方法b: 使用bert模型句向量跑出在其他标准问题下的相似问题中,与sentence1句向量距离最小的)

使用bert的相似度计算模型,其结果不收敛


image.png

在Reimers, N., & Gurevych, I. (2019, August 27). 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》的启发下,使用孪生网络来训练,保留最终的Bert 句向量模型,计算cosin相似度,其结果是收敛和有效的。

在一次偶然的机会,我尝试用了把标准问题作为一个类别,其对应的相似问题作为该类别下的语料,使用bert模型直接训练一个分类模型,最终保留bert句向量模型,计算cosin相似度。最终发现该方法比上述孪生网络的方法收敛速度更快,且相似度计算的准确率更高。

你可能感兴趣的:(faq知识库中文本相似度模型训练方法)