对于我的应用程序,我将一个文档与所有其他文档的相似性进行比较,因为我想找到最相似的其他文档。在 Gensim 中,这可以使用 MatrixSimilarity method 有效地完成。 .
在斯帕西的 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 ,因此也欢迎任何有关如何解决该问题的想法。
最佳答案
根据您的应用程序和要比较的句子数量,我建议创建一个包含所有句子向量的数组,归一化。然后,矩阵乘法及其转置将以一种相当有效的方式产生所有相似性对。
关于performance - 在 Spacy 中,如何有效地比较一个文档与所有其他文档的相似性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49205736/