使用 gensim word2vec 沿输出或输入向量查找单词相似性?
Finding word similarities along the output or input vectors using gensim word2vec?
我知道你可以使用 model.wv.most_similar(...) 在 gensim 中通过余弦相似度来获取单词。
我也知道 gensim 为您提供输入和输出向量,例如模型.syn0 和模型.syn1neg.
是否有一种简单的方法来计算余弦相似度并使用仅输入或输出向量之一来创建最相似的列表?例如。我想尝试使用 just 输出向量。
没有内置工具,但我相信您可以通过创建一个单独的 KeyedVectors
实例来实现它,您可以在其中替换通常的 ('input projection'/'syn0') 向量数组具有相同大小的输出数组(如存在于负采样模型中)。
大致以下可能有效:
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
(让我知道这是按原样工作还是需要进一步修改才能工作!)
我知道你可以使用 model.wv.most_similar(...) 在 gensim 中通过余弦相似度来获取单词。
我也知道 gensim 为您提供输入和输出向量,例如模型.syn0 和模型.syn1neg.
是否有一种简单的方法来计算余弦相似度并使用仅输入或输出向量之一来创建最相似的列表?例如。我想尝试使用 just 输出向量。
没有内置工具,但我相信您可以通过创建一个单独的 KeyedVectors
实例来实现它,您可以在其中替换通常的 ('input projection'/'syn0') 向量数组具有相同大小的输出数组(如存在于负采样模型中)。
大致以下可能有效:
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
(让我知道这是按原样工作还是需要进一步修改才能工作!)