对于我的应用程序,我正在比较一个文档与所有其他文档的相似性,因为我想找到最相似的其他文档。在Gensim中,这可以使用MatrixSimilarity method有效地完成。
在Spacy的documentation中,他们有比较多个文档的示例,但是对于许多文档而言,循环不是一种有效的实现:
import spacy
nlp = spacy.load('en_core_web_lg')
doc1 = nlp(u"The labrador barked.")
doc2 = nlp(u"The labrador swam.")
doc3 = nlp(u"the labrador people live in canada.")
for doc in [doc1, doc2, doc3]:
labrador = doc[1]
dog = nlp(u"dog")
print(labrador.similarity(dog))
如果有人能够建议一种有效的方式将一个文档与Spacy中的所有其他文档进行比较,我们将不胜感激。
我认为可能涉及使用pipeline,但我不确定如何使用它们。
我会注意到文档中的上述示例似乎有一个issue,因此欢迎任何关于如何解决该问题的想法。
答案 0 :(得分:2)
根据您的应用程序和要比较的句子数量,我建议创建一个包含所有句子向量的数组,进行标准化。然后,矩阵乘法及其转置将以相当有效的方式产生所有相似性对。