一行代码搞定加载glove预训练词向量
发布时间
阅读量:
阅读量
加载glove预训练词向量再也不用glove2word2vec转换啦!
以前加载glove预训练词向量的方法
from gensim.scripts.glove2word2vec import glove2word2vec
glove2word2vec('glove.6B.50d.txt', 'word2vec50d.txt')
代码解释
其实就是在原来的txt文件前面加上了一行信息,行和列。
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
代码解释
变成
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
代码解释
但是,这个处理要等很久。
运行之后会得出这样的一个Warning
Warning (from warnings module):
File "<pyshell#1>", line 1
DeprecationWarning: Call to deprecated `glove2word2vec` (KeyedVectors.load_word2vec_format(.., binary=False, no_header=True) loads GLoVE text vectors.).
(400000, 50)
代码解释

说明该函数已失效,并且提供了一个升级版load_word2vec_format加载带有no_header参数的GloVe文件后可以直接使用
>>> from gensim.models.keyedvectors import KeyedVectors
>>> wv=KeyedVectors.load_word2vec_format('glove.6B.50d.txt',binary=False, no_header=True)
#获取词向量
>>> wv['king']
array([ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 ,
-0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 ,
-0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 ,
-0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 ,
0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 ,
1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 ,
0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 ,
-1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 ,
-0.64426 , -0.51042 ], dtype=float32)
#计算两个词向量的相似度
>>> wv.similarity('man', 'woman') # 两个单词相似度很高
0.8860338
>>> wv.most_similar(positive=['woman', 'king'], negative=['man'])
[('queen', 0.8523604273796082), ('throne', 0.7664334177970886), ('prince', 0.7592144012451172), ('daughter', 0.7473883628845215), ('elizabeth', 0.7460219860076904), ('princess', 0.7424570322036743), ('kingdom', 0.7337412238121033), ('monarch', 0.721449077129364), ('eldest', 0.7184861898422241), ('widow', 0.7099431157112122)]
代码解释
全部评论 (0)
还没有任何评论哟~
