如何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 <glove_file> --output <w2v_file>
# 开始转换
from gensim.scripts.glove2word2vec import glove2word2vec
glove2word2vec(glove_file, tmp_file)
# 加载转化后的文件
model = KeyedVectors.load_word2vec_format(tmp_file)
至此,我们就可以完美的用gensim加载glove训练的词向量了。
三、参考链接
此教程来自于gensim的官方文档
网友评论