如何为句子之间的文本相似性提取和使用句子的BERT编码。 (PyTorch / Tensorflow)

时间:2020-07-22 18:31:52

标签: tensorflow deep-learning nlp pytorch bert-language-model

我想创建一个文本相似性模型,我倾向于将其用于常见问题解答查找以及其他获得最相关文本的方法。我想为这个NLP任务使用高度优化的BERT模型。我倾向于使用cosine_similarity来使用所有句子的编码来获得相似性矩阵并返回结果。

在假设条件下,如果我有两个句子分别为hello worldhello hello world,那么我假设BRT会给我类似[0.2,0.3,0],(填充为0)和{{ 1}},我可以在[0.2,0.2,0.3] sklearn's内部传递这两个。

我应该如何提取嵌入语句以在模型中使用它们?我发现某个地方可以像这样提取它:

cosine_similarity

这是正确的方法吗?因为我在某处读到BERT提供了不同类型的嵌入。

还请建议其他任何方法来查找文本相似性

1 个答案:

答案 0 :(得分:1)

当您想比较句子的嵌入时,使用BERT的推荐方法是使用CLS令牌的值。这对应于输出的第一个标记(在批次维度之后)。

Private Sub cmdNewMLData_Click()

frmMasterListEntry.Show

End Sub

这将给您整个句子的一个嵌入。由于每个句子的嵌入大小相同,因此可以轻松计算出余弦相似度。

如果使用CLS令牌无法获得令人满意的结果,您还可以尝试对句子中每个单词的输出嵌入求平均值。