首页 > 解决方案 > 使用现有模型对 word2vec 嵌入进行 PCA

问题描述

我有一个在推文上训练的 word2vec 模型。我还有一个单词列表,我需要从单词中获取嵌入,计算前两个主成分,并将每个单词绘制在二维空间上。

我正在尝试遵循以下教程:https ://machinelearningmastery.com/develop-word-embeddings-python-gensim/

然而,在所有此类教程中,他们根据使用的随机句子创建模型,然后对模型中的所有单词计算 PCA。我不想那样做,我只想计算和绘制特定的单词。如何使用我已经拥有的包含数千个单词的模型,并为我拥有的一组单词(大约 20 个)计算前两个主成分?

所以就像上面的链接一样,他们有“模型”,只有他们写的句子中的单词。然后他们执行“X = model[model.wv.vocab]”,然后执行“pca.fit_transform(X)”。如果我要复制这段代码,我会在巨大的模型上做一个 PCA,这是我不想做的。我只想从该模型中提取一些词的嵌入,然后在这几个词上计算 PCA。希望这是有道理的,在此先感谢。如果我需要澄清任何事情,请告诉我。

标签: pythonnlpjupyter-notebookpcaword-embedding

解决方案


创建一个具有相同结构(字典)的集合

model.wv.vocab,

用你的目标词填充它,然后计算 PCA。

您可以使用以下代码执行此操作:

my_vocab = {}
for w in my_words:
    my_vocab[w] = model.vw.vocab[w]

X = model[my_vocab]
pca.fit_transform(X)

推荐阅读