pytorch中加载预训练gensim之word2vec模型

本文介绍如何在PyTorch中加载Gensim预训练的Word2Vec模型,包括将gensim的bin文件转换为txt格式,以便PyTorch的torchtext库能够读取,并详细展示了如何构建词表、设置向量及使用预训练向量进行嵌入。

在pytorch中加载glove之类模型,大家可能已经非常熟悉了,但是加载gensim模型则比较少的看到。

结合网上的资源 加上本人的测试,现总结如下:

1 ,准备可加载的预训练模型

下面是加载代码

import torchtext.vocab as Vocab

W2V_TXT_FILE="/root/python/bit/datasets/baikevector/baike_26g_news_13g_novel_229g.txt"
W2V_BIN_FILE="/root/python/bit/datasets/baikevector/baike_26g_news_13g_novel_229g.bin"

CACHE_DIR="/root/python/bit/datasets/baikevector/cache"

vectors=Vocab.Vectors(name=W2V_TXT_FILE,cache=CACHE_DIR)

#上面的W2V_TXT_FILE是gensim预训练的word2vec模型中的txt格式, cache_dir是缓存 目录

注意,gensim生成的模型有三种,第一种是 默认的model文件(可以继续 进行tuning),第二种是bin文件(c风格),第三种是 txt文件(比较大)

pytorch 的torchtext可加载的模型为txt格式,可以通过以下代码进行转换:

model = gensim.models.KeyedVectors.load_word2vec_format(W2V_BIN_FILE,binary=True)

model.wv.save_word2vec_format(W2V_TXT_FILE)

2. 加载并转换

vectors=Vocab.Vectors(name=W2V_TXT_FILE,cache=CACHE_DIR)
# load pretrained word2vec into pytorch

weights = torch.FloatTensor(vectors.vectors)
Embed_dim= weights.size(1) #(words, dim)
vocnum =weights.size(0) # total word number

TEXT.build_vocab(train,max_size=25000)   #构建词表
TEXT.vocab.set_vectors(vectors.stoi,vectors.vectors,vectors.dim)  #替换向量为word2vec
embedding =nn.Embedding.from_pretrained(torch.FloatTensor(TEXT.vocab.vectors))  #准备训练用向量

word2vec 预训练向量 下载链接
链接:https://pan.baidu.com/s/1ckkH_eT-WS4SN73Iq9Q_5A 密码:9aza

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值