如何使用Word2Vec获取单词列表的向量?

jon*_*bon 11 nlp artificial-intelligence machine-learning word2vec

我想创建一个本质上是字典的文本文件,每个单词通过word2vec与其矢量表示形成配对.我假设这个过程首先训练word2vec,然后从我的列表中查找每个单词并找到它的表示(然后将其保存在一个新的文本文件中)?

我是word2vec的新手,我不知道该怎么做.我已经阅读了几个主要网站,以及Stack上的一些问题,但还没有找到一个好的教程.

Nik*_*sev 10

Gensim教程非常清楚地解释了它.

首先,您应该创建word2vec模型 - 通过在文本上训练它,例如

 model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
Run Code Online (Sandbox Code Playgroud)

或者通过加载预先训练的模型(例如,你可以在这里找到它们).

然后迭代所有单词并检查模型中的向量:

for word in words:
  vector = model[word]
Run Code Online (Sandbox Code Playgroud)

有了这个,只需按照你想要的方式编写单词和矢量格式.


Moo*_*bie 8

直接访问model[word]已被弃用,并将在Gensim 4.0.0中删除,以分开训练和嵌入。该命令应简单替换为model.wv[word]

在Python中使用Gensim,构建了唱词并训练了模型之后,您可以找到已经映射在中的字数和采样信息model.wv.vocab,其中model的变量名是Word2Vec object是对象。

因此,要创建字典对象,您可以:

my_dict = dict({})
for idx, key in enumerate(model.wv.vocab):
    my_dict[key] = model.wv[key]
    # Or my_dict[key] = model.wv.get_vector(key)
    # Or my_dict[key] = model.wv.word_vec(key, use_norm=False)
Run Code Online (Sandbox Code Playgroud)

现在您有了字典,您可以按自己喜欢的方式将其写入文件。例如,您可以使用pickle库。另外,如果您使用的是Jupyter Notebook,则它们具有便捷的“魔术命令” %store my_dict > filename.txt。您的filename.txt如下所示:

{'one': array([-0.06590105,  0.01573388,  0.00682817,  0.53970253, -0.20303348,
   -0.24792041,  0.08682659, -0.45504045,  0.89248925,  0.0655603 ,
   ......
   -0.8175681 ,  0.27659689,  0.22305458,  0.39095637,  0.43375066,
    0.36215973,  0.4040089 , -0.72396156,  0.3385369 , -0.600869  ],
  dtype=float32),
 'two': array([ 0.04694849,  0.13303463, -0.12208422,  0.02010536,  0.05969441,
   -0.04734801, -0.08465996,  0.10344813,  0.03990637,  0.07126121,
    ......
    0.31673026,  0.22282903, -0.18084198, -0.07555179,  0.22873943,
   -0.72985399, -0.05103955, -0.10911274, -0.27275378,  0.01439812],
  dtype=float32),
 'three': array([-0.21048863,  0.4945509 , -0.15050395, -0.29089224, -0.29454648,
    0.3420335 , -0.3419629 ,  0.87303966,  0.21656844, -0.07530259,
    ......
   -0.80034876,  0.02006451,  0.5299498 , -0.6286509 , -0.6182588 ,
   -1.0569025 ,  0.4557548 ,  0.4697938 ,  0.8928275 , -0.7877308 ],
  dtype=float32),
  'four': ......
}
Run Code Online (Sandbox Code Playgroud)

您可能还希望研究Gensim的word2vec 的本机保存 / 加载方法。