在我的个人博客上很早就把这篇文章写出来了,现在转到CSDN,作为word2vec的姊妹篇,无论你使用的是word2vec还是glove,两种方式都是通用的。仅作少许改动即可。
前段时间把
word2vec
词向量的用法整理了一下。处理的是二进制文件,二进制文件处理起来是比较快的,但是过程可能比较繁琐。这次整理了一下
glove
词向量的处理方式,文件是
txt
格式的。
![](https://i-blog.csdnimg.cn/blog_migrate/9805d679d158d7de2c13c548ffcf85cc.png)
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
我的个人网站:lichangsong.win
我的又大又全又便宜的某宝资料铺:
緮置这行话¥PCYX1QCAm9R¥转移至淘宀┡ē【码世界资料铺】;或https://m.tb.cn/h.V6uwZ9I?sm=916410 點击链街,再选择瀏..覽..噐dakai