两份文件清单之间的相似性

时间:2018-11-14 21:45:37

标签: tensorflow nlp similarity spacy sentence-similarity

我需要在Python的两个短文本列表之间找到相似之处。 文字可以是1-4个字长。每个列表的长度可以是10K。 我找不到在spaCy中有效地执行此操作的方法。也许其他软件包可以做到这一点? 我假设单词由向量(300d)表示,但是其他任何选项也都可以。 此任务可以循环执行,但是应该有一种更有效的方法来确保。此任务适合TensorFlow,pyTorch和类似的程序包,但我对这些程序包的细节不熟悉。

1 个答案:

答案 0 :(得分:0)

我认为您的问题是模棱两可的-您可能要针对列表1的平均值与列表2的平均值的相似性生成一个相似性评分。我假设您要为每种商品组合都提供相似性评分从两个列表中。对于每个列表1万个项目,将产生1万个战俘2 = 100M相似度得分。

import spacy
spacyModel = spacy.load('en')

list1 = ["hello, example 1", "right, second example"]
list2 = ["hello, example 1 in the second list", "And now for something completely different"]

list1SpacyDocs = [spacyModel(x) for x in list1]
list2SpacyDocs = [spacyModel(x) for x in list2]

similarityMatrix = [[x.similarity(y) for x in list1SpacyDocs] for y in list2SpacyDocs]

print(similarityMatrix)
[[0.8537950408055295, 0.8852732956832498], [0.5802435148988874, 0.7643245611465626]]