performance - 在 Spacy 中,如何有效地比较一个文档与所有其他文档的相似性?

标签 performance gensim spacy

对于我的应用程序,我将一个文档与所有其他文档的相似性进行比较,因为我想找到最相似的其他文档。在 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/

相关文章:

java - 如何使用字节数组作为参数构建 FileInputStream 对象

java - NoSql 之战——幸存者?

Gensimmost_similar() 与 Fasttext 词向量返回无用/无意义的词

python - gensim - Word2vec 继续训练现有模型 - AttributeError : 'Word2Vec' object has no attribute 'compute_loss'

python-3.x - 如何在 python 中使用多处理加速循环执行

python - SpaCy 3 交叉验证

performance - 对阻塞命令(例如 blpop)的 Redis 延迟进行基准测试?

java - 兰特流的高性能缓冲

scikit-learn - Doc2Vec 的管道和网格搜索

python-3.x - Spacy - 标记带引号的字符串