如何对字符串数组运行spaCy的句子相似度函数以获取分数数组?

时间:2019-05-10 12:00:21

标签: python nlp vectorization similarity spacy

我必须将一个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]

我正在寻找一种避免这种循环的方法。换句话说,我要向量化此功能。

1 个答案:

答案 0 :(得分:0)

使用nlp.pipe处理所有文本文档。从每个文档中获取嵌入.vector。应用以余弦为度量的numpy成对距离函数创建矩阵。