使用 gensim word2vec 沿输出或输入向量查找单词相似性?

问题描述

我知道你可以使用 model.wv.most_similar(...) 通过 gensim 中的余弦相似度来获取单词。

我也知道 gensim 为您提供输入和输出向量,例如model.syn0 和 model.syn1neg。

是否有一种简单的方法来计算余弦相似度并使用输入或输出向量(一个或另一个)创建最相似的列表?例如。我想尝试使用只是输出向量。

解决方法

没有内置工具,但我相信您可以通过创建一个单独的 KeyedVectors 实例来实现它输出数组(存在于负采样模型中)。

大致如下:

full_w2v_model = ... # whatever training/loading is necessary
full_w2v_model.wv.save_word2vec_format(PATH)  # saves just the word-vectors
out_vecs = KeyedVectors.load_word2vec_format(PATH)  # reloads as separate object
out_vecs.vectors = full_w2v_model.syn1neg  # clobber raw vecs with model's output layer

(让我知道这是按原样工作还是需要进一步修饰才能工作!)