我想创建一个文本相似性模型,我倾向于将其用于常见问题解答查找以及其他获得最相关文本的方法。我想为这个NLP任务使用高度优化的BERT
模型。我倾向于使用cosine_similarity
来使用所有句子的编码来获得相似性矩阵并返回结果。
在假设条件下,如果我有两个句子分别为hello world
和hello hello world
,那么我假设BRT会给我类似[0.2,0.3,0]
,(填充为0)和{{ 1}},我可以在[0.2,0.2,0.3]
sklearn's
内部传递这两个。
我应该如何提取嵌入语句以在模型中使用它们?我发现某个地方可以像这样提取它:
cosine_similarity
这是正确的方法吗?因为我在某处读到BERT提供了不同类型的嵌入。
还请建议其他任何方法来查找文本相似性
答案 0 :(得分:1)
当您想比较句子的嵌入时,使用BERT的推荐方法是使用CLS令牌的值。这对应于输出的第一个标记(在批次维度之后)。
Private Sub cmdNewMLData_Click()
frmMasterListEntry.Show
End Sub
这将给您整个句子的一个嵌入。由于每个句子的嵌入大小相同,因此可以轻松计算出余弦相似度。
如果使用CLS令牌无法获得令人满意的结果,您还可以尝试对句子中每个单词的输出嵌入求平均值。