使用glove词向量

在我的个人博客上很早就把这篇文章写出来了,现在转到CSDN,作为word2vec的姊妹篇,无论你使用的是word2vec还是glove,两种方式都是通用的。仅作少许改动即可。
前段时间把word2vec词向量的用法整理了一下。处理的是二进制文件,二进制文件处理起来是比较快的,但是过程可能比较繁琐。这次整理了一下glove词向量的处理方式,文件是txt格式的。

使用glove词向量_第1张图片

Glove.txt文件大概是这样子的。图中红框表示的是单词,红框蓝底的是对应的词向量。

对这个文件的处理方式:

1、先读取一行;

2、分离出单词和词向量

3、注意:使用这种方法的前提是词表顺序和glove.txt文件里的单词顺序一致。

4、代码很简单,如下:

def embLayer(input):
    with open('n_GloVe.txt', 'r') as file1:
        emb = []
        vocab = []
        for line in file1.readlines():
            row = line.strip().split(' ')
            vocab.append(row[0])
            emb.append(row[1:])
 
    emb = np.asarray(emb, dtype="float32")
    with tf.variable_scope('embedding'):
        embedding = tf.Variable(emb, name='emb')
        embeding_input = tf.nn.embedding_lookup(embedding, input)
 
        return embeding_input
代码已经上传到github:https://github.com/pkulics/use-pretrained-glove


你可能感兴趣的:(自然语言处理,word2vec)