【发布时间】:2018-05-10 14:44:57
【问题描述】:
我对 gensim 的 Word2vecKeyedVectors 中 most_similar 和similar_by_vector 的结果感到困惑。他们应该以相同的方式计算余弦相似度 - 但是:
用一个词运行它们会得到相同的结果,例如: model.most_similar(['obama']) 和similar_by_vector(model['obama'])
但如果我给它一个等式:
model.most_similar(positive=['king', 'woman'], negative=['man'])
给予:
[('queen', 0.7515910863876343), ('monarch', 0.6741327047348022), ('princess', 0.6713887453079224), ('kings', 0.6698989868164062), ('kingdom', 0.5971318483352661), ('royal', 0.5921063423156738), ('uncrowned', 0.5911505818367004), ('prince', 0.5909028053283691), ('lady', 0.5904011130332947), ('monarchs', 0.5884358286857605)]
同时:
q = model['king'] - model['man'] + model['woman']
model.similar_by_vector(q)
给予:
[('king', 0.8655095100402832), ('queen', 0.7673765420913696), ('monarch', 0.695580005645752), ('kings', 0.6929547786712646), ('princess', 0.6909604668617249), ('woman', 0.6528975963592529), ('lady', 0.6286187767982483), ('prince', 0.6222133636474609), ('kingdom', 0.6208546161651611), ('royal', 0.6090123653411865)]
queen、monarch...等单词的余弦距离有明显差异。我想知道为什么?
谢谢!
【问题讨论】: