前段时间把word2vec词向量的用法整理了一下。处理的是二进制文件,二进制文件处理起来是比较快的,但是过程可能比较繁琐。这次整理了一下glove词向量的处理方式,文件是txt格式的。
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
|
|