前段时间把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