如何计算SpaCy的相似性?

时间:2017-09-21 15:48:03

标签: python machine-learning nlp word2vec spacy

初学者NLP问题:

.similiarity方法如何工作?

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

在他的10 line tutorial on spaCy andrazhribernik节目中,我们可以在令牌,sents,单词块和文档上运行.similarity方法。

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

SpaCy已经拥有了非常简单的.vector,它可以根据GloVe模型训练w2v向量(.tfidf.fasttext方法有多酷?)。

模型相似性模型是否只是计算这两个w2v-GloVe向量之间的余弦相似性或做其他事情? documentation中的具体内容并不清楚;任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

假设您引用的方法是令牌相似性,您可以在源代码here中找到该函数。如您所见,它计算向量之间的余弦相似度。

正如教程中所说:

  

单词嵌入是单词的表示,并且通过扩展来表示整个语言语料库,以向量或其他形式的数字映射。这允许在数字上处理单词,单词相似度表示为单词嵌入映射的维度中的空间差异。

因此矢量距离可以与单词相似度相关。

答案 1 :(得分:1)

找到答案,简而言之,是的:

Link to Souce Code

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

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