我在我的项目中使用GloVe和gensim。我有一个数据集(比方说mydata.txt),其中有一些新单词不在现有的手套中。那么,我如何再培训手套,使现有的预先训练手套现在必须包括我的语料库mydata.txt上的新词?我一直在苦苦挣扎,两周来一直未能找到解决方案。我发现的唯一类似的帖子就是这个对现有手套模型的改进
发布于 2018-08-22 07:50:06
我不知道这是否是最好的方法,但我就是这样做的。您不能称之为再培训,但这是您可以添加到您的数据手套向量的方式之一。
from gensim.models import Word2Vec
glove_6b = "glove.6B.100d.txt"
#loading the glove vectors
with open(glove_6b, "rb") as lines:
wvec = {
line.split()[0].decode(encoding): np.array(line.split()[1:],
dtype=np.float32)
for line in lines}
#my data vectors
em_model = Word2Vec(text_data2, size=100, window=5, min_count=1, workers=2)
w2v = {w: vec for w, vec in zip(em_model.wv.index2word, em_model.wv.vectors)}
a = list(w2v.keys())
#mixing them both
for i in a:
if i in wvec:
continue
else:
wvec.update({ i : w2v[i]})
len(list(wvec.keys()))当然,可以改进。希望这能有所帮助。
发布于 2019-05-30 18:28:36
我不认为问题中的联系,或者把向量相加的想法是可行的。
我相信GloVe (Global )并不意味着要附加,因为它是基于语料库的单词共现统计数据,这些统计数据只在最初的训练时才知道。
您可以做的是使用gensim.scripts.glove2word2vec api将GloVe向量转换为word2vec,但我不认为您可以继续进行培训,因为它加载在KeyedVector中而不是一个完整的模型
https://datascience.stackexchange.com/questions/33792
复制相似问题