初学者NLP问题:
哇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中的具体内容并不清楚;任何帮助表示赞赏!
答案 0 :(得分:2)
假设您引用的方法是令牌相似性,您可以在源代码here中找到该函数。如您所见,它计算向量之间的余弦相似度。
正如教程中所说:
单词嵌入是单词的表示,并且通过扩展来表示整个语言语料库,以向量或其他形式的数字映射。这允许在数字上处理单词,单词相似度表示为单词嵌入映射的维度中的空间差异。
因此矢量距离可以与单词相似度相关。
答案 1 :(得分:1)
找到答案,简而言之,是的:
return numpy.dot(self.vector, other.vector) / (self.vector_norm * other.vector_norm)
这看起来像计算cosine similarity的公式,并且似乎是使用SpaCy的.vector
创建的,其文档说明是从GloVe的w2v模型中训练的。