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

6841

被折叠的 条评论
为什么被折叠?



