我想创建一个本质上是字典的文本文件,每个单词通过word2vec与其矢量表示形成配对 . 我假设这个过程首先训练word2vec,然后从我的列表中查找每个单词并找到它的表示(然后将其保存在一个新的文本文件中)?
我是word2vec的新手,我不知道该怎么做 . 我已经阅读了几个主要网站,以及Stack上的一些问题,但还没有找到一个好的教程 .
Gensim tutorial非常清楚地解释了这一点 .
首先,您应该创建word2vec模型 - 通过在文本上训练它,例如
model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
或者通过加载预先训练的模型(例如,你可以找到它们here) .
然后迭代所有单词并检查模型中的向量:
for word in words: vector = model[word]
有了这个,只需按照你想要的方式编写单词和矢量格式 .
直接访问 model[word] 已弃用,将在Gensim 4.0.0中删除,以便将培训和嵌入分开 . 该命令应该简单地替换为 model.wv[word] .
model[word]
model.wv[word]
在Python中使用Gensim,在构建词汇并训练模型后,您可以找到已在 model.wv.vocab 中映射的单词计数和采样信息,其中 model 是 Word2Vec 对象的变量名称 .
model.wv.vocab
model
Word2Vec
因此,要创建字典对象,您可以:
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)
现在你有了你的字典,你可以用你喜欢的任何方式将它写到一个文件中 . 例如,您可以使用the pickle library . 或者,如果您使用的是Jupyter Notebook,它们会很方便'magic command' %store my_dict > filename.txt . 您的filename.txt将如下所示:
%store my_dict > 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': ...... }
您可能还希望了解Gensim的word2vec的原生save / load方法 .
2 回答
Gensim tutorial非常清楚地解释了这一点 .
首先,您应该创建word2vec模型 - 通过在文本上训练它,例如
或者通过加载预先训练的模型(例如,你可以找到它们here) .
然后迭代所有单词并检查模型中的向量:
有了这个,只需按照你想要的方式编写单词和矢量格式 .
直接访问
model[word]
已弃用,将在Gensim 4.0.0中删除,以便将培训和嵌入分开 . 该命令应该简单地替换为model.wv[word]
.在Python中使用Gensim,在构建词汇并训练模型后,您可以找到已在
model.wv.vocab
中映射的单词计数和采样信息,其中model
是Word2Vec
对象的变量名称 .因此,要创建字典对象,您可以:
现在你有了你的字典,你可以用你喜欢的任何方式将它写到一个文件中 . 例如,您可以使用the pickle library . 或者,如果您使用的是Jupyter Notebook,它们会很方便'magic command'
%store my_dict > filename.txt
. 您的filename.txt将如下所示:您可能还希望了解Gensim的word2vec的原生save / load方法 .