gensim导入pytorch embedding

gensim 导入word2vec模型

使用KeyedVector.load_word2vec_format() ,这样将模型加载到一个keyvector实例中

import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('vectors.bin', binary=True)

此处导入了 word2vec的模型,vectors.bin是模型文件

  • 如果是glove文件应该怎么办呢
    如果我们的glove文件是一个txt文件,那么就需要将它转成word2vec的形式
import gensim
glove_file = 'test_glove.txt'
word2vec_file = 'word2vec.txt'#这是转换后的文件名
from gensim.scripts.glove2word2vec import glove2word2vec
glove2word2vec(glove_file, word2vec_file )

# 加载转化后的文件
model = KeyedVectors.load_word2vec_format(tmp_file) #这样就可以将glove文件加载
  • 也可以将glove文件保存使用save_word2vec_format保存词向量文件
model.wv.save_word2vec_format("model.bin", binary=True)

下次加载时,直接从model.bin中获取即可。

gensim 构建pytorch的预训练embedding

  • 首先,一般可以统计出我们的训练语料的词表vocab,将它与gensim加载的词表求交集,这样可以减少embedding的大小
  • 导入pytorch nn.embedding的代码
def creat_embedding():#注意要先确定好训练语料里面有的单词
    word_vectors =torch.randn([vocab_size,300])# 这里的vocab_size 是指 训练语料的vocabsize
    word_to_idx = train_word2idx
    word_vectors[1,:] = torch.zeros([1,300]) # 这里是让 第1个向量成为0向量,此处是<pad>
    for i in range(2,vocab_size):
        
        word = train_idx2word[i]
        if word in wvmodel:

            vector = wvmodel[word]
            word_vectors[i,:] = torch.from_numpy(vector)
            
    print(word_vectors.size())
    #embedding = nn.Embedding.from_pretrained(word_vectors)
    
    #embedding.weight.requires_grad = True
    return word_vectors,word_to_idx  #最终输出一个词表和一个arrary 用于输入embedding

最后使用nn.Embedding.from_pretrained(weight) weight 需要是tensor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值