Word2vec训练好的模型中加入新词

好久都没有写过博客了,已经停更了一年多的时间。今天突然想起来自己当初写博客的初衷,就是为了把自己解决过的某些问题记录下来给别人一个参考,也给自己留下记录,以后如果遇见了相同的问题也可以找到记录,不必要走重复的路。希望女朋友可以一直监督我写下去。加油!

正文

之前学长让我使用Word2vec训练文本数据的词向量,可是在训练完成之后,如果遇到新的词语,不能再word2vec模型中实时添加。这一点显然不能满足需求,在查了些文档和其他人的方法后发现并不能解决我的问题。最后在这个网站中找到了解决方案。
如果使用

1
gensim.models.Word2Vec.load_word2vec_format

直接读取训练好的模型,是不可以更改的,需要使用下面这个方法:

1
model = gensim.models.Word2Vec.load

还需要使用如下两个方法对训练好的模型中没有的词语进行重新训练:

1
2
3
4
sentence = []
sentence.append(line.split(' '))
model.build_vocab(sentence, update=True)#训练该行
model.train(sentence)

只能使用通过model.save()方法保存的序列文件模型才可以进行重新训练,使用model.save_word2vec_format()保存的模型不能被用来重新训练。

另外值得一提的是,在训练model的过程中,必须使用数组的形式才行,否则word2vec训练时会一个字一个字的进行训练。

废话

这是恢复更新博客后的第一篇博客,好多hexo的操作和markdown的语法都已经忘记了,不过相信会做的越来越好。

本文作者:Qiu Qingyu
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 CN许可协议。转载请注明出处!
本文永久链接:http://qiuqingyu.cn/2017/03/14/Word2vec训练好的模型中加入新词/