当前位置:   article > 正文

Gensim的doc2vec如何使用新的数据update model_gensim update

gensim update

先吐槽一下,我觉得Gensim的种种设计都特别脑残,开发这个库的人脑子都是浆糊。下面给出示例代码:

  1. import gensim
  2. import datetime
  3. def Doc2VecModelBuilding():
  4. sentence='0 INT_EQUAL ARG3 CONST'.split(' ')
  5. print('Start reading the corpus')
  6. sentences=gensim.models.doc2vec.TaggedLineDocument('ALLCorpus.txt')
  7. print('Start building the model')
  8. time_1=datetime.datetime.now()
  9. model=gensim.models.Doc2Vec(sentences,dm=1,vector_size=256,window=5)
  10. time_2=datetime.datetime.now()
  11. print("Total elapse time for building the model (s): "+str((time_2-time_1).total_seconds()))
  12. print('Start Training')
  13. # model.build_vocab(sentences)
  14. time_1=datetime.datetime.now()
  15. model.train(sentences,total_examples=model.corpus_count,epochs=100)
  16. time_2=datetime.datetime.now()
  17. print("Total elapse time for training (s): "+str((time_2-time_1).total_seconds()))
  18. print(len(model.dv))
  19. print(model.infer_vector(sentence))
  20. print(model.infer_vector(sentence))
  21. corpus_file=open('ALLCorpus2.txt')
  22. lines=corpus_file.readlines()
  23. sentences2=gensim.models.doc2vec.TaggedLineDocument('ALLCorpus2.txt')
  24. # model.build_vocab(sentences2, update=True)
  25. model.train(sentences2,total_examples=len(lines),epochs=100)
  26. print(len(model.dv))
  27. print(model.infer_vector(sentence))
  28. Doc2VecModelBuilding()

其中有两个语料文件,并且我注释掉了两行,如果不注释的话,第二个build_vocab会报:

段错误 (核心已转储)

另外,我们也可以看到,即便有更多的训练数据,model.dv的长度也是不会变化的。所以需要通过infer_vector来生成新的sentence embedding。另外,接连运行两次infer_vector的结果也不相同。

呵呵呵呵呵,这个库真的太垃圾了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/354243?site
推荐阅读
相关标签
  

闽ICP备14008679号