Pey*_*man 4 python nlp gensim word2vec
我正在阅读这个关于 Gensim 的答案most_similar:
它执行向量算术:添加正向量,减去负向量,然后从结果位置列出最接近该角度的已知向量。
但当我测试时,情况并非如此。我使用 Gensim 数据集训练了 Word2Vec"text8"并测试了这两个:
model.most_similar(positive=['woman', 'king'], negative=['man'])
>>> [('queen', 0.7131118178367615), ('prince', 0.6359186768531799),...]
Run Code Online (Sandbox Code Playgroud)
model.wv.most_similar([model["king"] + model["woman"] - model["man"]])
>>> [('king', 0.84305739402771), ('queen', 0.7326322793960571),...]
Run Code Online (Sandbox Code Playgroud)
它们显然不一样。0.713甚至第一个和第二个中的皇后得分0.732也不相同。
所以我再次问这个问题,Gensim 是如何most_similar工作的?为什么上面两者的结果不同呢?
加法和减法并不是它的全部作用;要获得准确的描述,您应该查看源代码:
您将看到,加法和减法是通过访问器对每个向量的单位范数get_vector(key, use_norm=True)版本进行的。
model[key]如果您更改to的使用model.get_vector(key, use_norm=True),您应该会看到目标向量的方法外计算给出的结果与让该方法组合positive和negative向量的结果相同。
| 归档时间: |
|
| 查看次数: |
2711 次 |
| 最近记录: |