我试图理解python-glove如何计算most-similar
个术语。
是否使用余弦相似度?
来自python-glove github的示例 https://github.com/maciejkula/glove-python/tree/master/glove :
答案 0 :(得分:1)
project website在这一点上还不清楚:
两个单词向量之间的欧几里得距离(或余弦相似度)为测量相应单词的语言或语义相似度提供了一种有效的方法。
欧几里得距离与余弦相似度不同。听起来两者都工作得很好,但没有指定使用哪个。
但是,我们可以观察到您正在查看的回购中的the source:
dst = (np.dot(self.word_vectors, word_vec)
/ np.linalg.norm(self.word_vectors, axis=1)
/ np.linalg.norm(word_vec))
答案 1 :(得分:0)
在手套项目网站上,对此进行了相当清晰的解释。 http://www-nlp.stanford.edu/projects/glove/
为了以定量方式捕捉区分男人和女人所需的细微差别,模型必须将多于一个数字与单词对相关联。对于放大的判别数集合的自然且简单的候选者是两个单词向量之间的向量差异。 GloVe的设计是为了使这种矢量差异尽可能地捕获两个单词并置所指定的含义。
要了解有关此背后数学的更多信息,请查看网站上的“模型概述”部分
答案 2 :(得分:-1)
是的,它使用余弦相似度。
paper在文本中提到:...通过首先对词汇表中的每个特征进行归一化然后计算余弦相似度,从单词向量中获得相似度分数。...