Advertisement

一行代码搞定加载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)

还没有任何评论哟~