SpaCy 的相似度是如何计算的?

How is SpaCy's similarity computed?

初学者 NLP 问题在这里:

.similiarity 方法如何工作?

哇 spaCy 太棒了!它的 tfidf 模型可能更容易预处理,但是 w2v 只有一行代码 (token.vector)? - 太棒了!

andrazhribernik 在他的 10 line tutorial on spaCy 中向我们展示了可以 运行 标记、发送、词块和文档的 .similarity 方法。

nlp = spacy.load('en')doc = nlp(raw_text) 之后 我们可以在令牌和块之间进行 .similarity 查询。 但是,这个 .similarity 方法在幕后计算的是什么?

SpaCy 已经拥有非常简单的 .vector,它计算从 GloVe 模型训练的 w2v 向量(.tfidf.fasttext 方法有多酷?)。 =18=]

模型相似度模型是简单地计算这两个w2v-GloVe-向量之间的余弦相似度还是在做其他事情? documentation 中的具体细节不明确;任何帮助表示赞赏!

假设你指的方法是token相似度法,你可以在源码中找到函数here。如您所见,它计算向量之间的余弦相似度。

正如教程中所说:

A word embedding is a representation of a word, and by extension a whole language corpus, in a vector or other form of numerical mapping. This allows words to be treated numerically with word similarity represented as spatial difference in the dimensions of the word embedding mapping.

所以向量距离可以和词的相似度有关

找到答案了,总之,是的:

Link to Souce Code

return numpy.dot(self.vector, other.vector) / (self.vector_norm * other.vector_norm)

这看起来像它的计算公式 cosine similarity 并且向量似乎是用 SpaCy 的 .vector 创建的,文档说是从 GloVe 的 w2v 模型训练的。