我必须将一个spacy文档与一个spacy文档列表进行比较,并想要获得相似性得分列表作为输出。当然,我可以使用for循环来做到这一点,但是我正在寻找一些优化的解决方案,例如numpy进行广播等。
我的文档列表中有一个文档:
oneDoc = 'Hello, I want to be compared with a list of documents'
listDocs = ["I'm the first one", "I'm the second one"]
spaCy为我们提供了文档相似性功能:
oneDoc = nlp(oneDoc)
listDocs = nlp(listDocs)
similarity_score = np.zeros(len(listDocs))
for i, doc in enumerate(listDocs):
similarity_score[i] = oneDoc.similarity(doc)
由于将一个文档与两个文档的列表进行了比较,因此相似性得分如下:
[0.7, 0.8]
我正在寻找一种避免这种循环的方法。换句话说,我要向量化此功能。
答案 0 :(得分:0)
使用nlp.pipe
处理所有文本文档。从每个文档中获取嵌入.vector
。应用以余弦为度量的numpy成对距离函数创建矩阵。