使用glove词向量

362 阅读1分钟

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