简介
其实我自己对于embedding的原理和结构都比较熟悉了,同时也使用过很多次了,但是在一次需要用到预训练好的开源Word2Vec的时候我竟然发现自己不知道怎么将.bin文件的权重加载到nn.Embedding上。
很简单和基础的操作如果没有自己亲手做过的话确实感觉很生疏,并且在真正实现的过程中会出现一些问题:
- nn.Embedding加载gensim word2vec模型
- 预训练模型中的词表和自己数据的词表的融合
- 去除多余的word2idx
官方词嵌入模型
https://code.google.com/archive/p/word2vec/
这里我用的是300dim 的word2vec,下载的是bin文件.
pytorch 加载gensim Word2Vec
-
首先获取自己的数据的词表
-
使用gensim加载bin模型
3. 初始化word_vector
dim = 300
vocab_size = 自己的数据集的词表长度
- 生成
对于每个词,如果word in model就添加到word_vectors
经过上述过程之后,
- 将nn.embedding 用word_vectors的参数进行初始化
这里我不需要对word2vec进行梯度更新,所以就不用加梯度了。