我正在寻找已经训练过的模型(如Google 新闻数据等)的预训练权重。我发现很难为自己训练一个拥有足够数量(10 GB 等)数据的新模型。因此,我想从迁移学习中受益,在这种学习中,我可以获得预训练的层权重,并在我的领域特定单词上重新训练这些权重。因此,肯定会花费相对较少的时间进行培训。任何形式的帮助将不胜感激。提前致谢 :)
我们可以在训练 word2vec 模型时利用迁移学习的好处吗?
数据挖掘
机器学习
大数据
word2vec
2021-09-25 03:19:46
4个回答
是的,您可以利用预训练模型。最著名的一个是您可以在此处找到的经过 GoogleNewsData 训练的模型。
预训练的词和短语向量https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=sharing
然后,您可以使用 gensim 在模型中加载二进制格式的向量,如下所示。
>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.txt', binary=False) # C text format
>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.bin', binary=True) # C binary format
这是英语维基百科的不同预建模型:
来源:https ://github.com/idio/wiki2vec/
使用预建模型
Get python 2.7
Install gensim: pip install gensim
uncompress downloaded model: tar -xvf model.tar.gz
Load model in gensim:
from gensim.models import Word2Vec
model = Word2Vec.load("path/to/word2vec/en.model")
model.similarity('woman', 'man')
你也可以使用斯坦福 NLP 手套
这是预训练的 word2vec 模型的精彩汇编。
一些额外的预训练模型:
更多关于 gensim 和代码的信息: https ://radimrehurek.com/gensim/models/word2vec.html
有类似问题的知乎论坛
基于大型语料库训练的分布式表示(Glove)可直接从斯坦福 NLP 小组获得。您可以直接在您的应用程序中使用这些词嵌入(而不是使用 1 个热编码向量,然后训练网络以获取嵌入)。如果您的任务不是太专业,则从这组嵌入开始将在实践中很好地工作。
它将使您免于培训参数数量是词汇量和 是您要投影到的嵌入空间的维度。
from gensim.models import Word2Vec
# Word2Vec is full model which is trainable but takes larger memory
from gensim.models import KeyedVectors
# KeyedVectors is reduced vector model which is NOT trainable but takes less memory
model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) #load pretrained google w2v
sen1 = 'w1 w2 w3'
sen2 = 'word1 word2 word3'
sentences = [[word for word in sen1.split()],[word for word in sen2.split()]]
total_examples = model_2.corpus_count
model_2 = Word2Vec(size=300, min_count=1) #initiate a full model
model_2.build_vocab(sentences) #add words in training dataset
#load words from pretrained google dataset
model_2.build_vocab([list(model.vocab.keys())], update=True)
model_2.intersect_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, lockf=1.0)
#retrain pretrained w2v from new dataset
model_2.train(sentences, total_examples=total_examples, epochs=model_2.iter)
其它你可能感兴趣的问题