如何gensim加载glove训练的词向量

如何gensim加载glove训练的词向量

一、前言

glove和word2vec是目前最常用的两个训练词向量的模型,两者训练出来的文件都以文本格式呈现,区别在于word2vec包含向量的数量及其维度
下面举个例子:
glove词向量的格式如下:

word1 0.123 0.134 0.532 0.152
word2 0.934 0.412 0.532 0.159
word3 0.334 0.241 0.324 0.18
...
word9 0.334 0.241 0.324 0.188

word2vec词向量的格式:

9 4   # 这一行包含向量的数量及其维度
word1 0.123 0.134 0.532 0.152
word2 0.934 0.412 0.532 0.159
word3 0.334 0.241 0.324 0.188
...
word9 0.334 0.241 0.324 0.188

二、gensim加载glove训练的词向量

由于glove模型目前只有一个C的版本,而且也未添加到其他库中。
glove官方链接
gensim库添加了一个模块,可以用来将glove格式的词向量转为word2vec的词向量,具体操作如下:

from gensim.test.utils import datapath, get_tmpfile
from gensim.models 
import KeyedVectors
# 输入文件
glove_file = datapath('test_glove.txt')
# 输出文件
tmp_file = get_tmpfile("test_word2vec.txt")

# call glove2word2vec script
# default way (through CLI): python -m gensim.scripts.glove2word2vec --input  --output 

# 开始转换
from gensim.scripts.glove2word2vec import glove2word2vec
glove2word2vec(glove_file, tmp_file)

# 加载转化后的文件
model = KeyedVectors.load_word2vec_format(tmp_file)

至此,我们就可以完美的用gensim加载glove训练的词向量了。

三、参考链接

此教程来自于gensim的官方文档

你可能感兴趣的:(如何gensim加载glove训练的词向量)