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

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

import gensim
import datetime

def Doc2VecModelBuilding():

    sentence='0 INT_EQUAL ARG3 CONST'.split(' ')

    print('Start reading the corpus')
    sentences=gensim.models.doc2vec.TaggedLineDocument('ALLCorpus.txt')


    print('Start building the model')
    time_1=datetime.datetime.now()
    model=gensim.models.Doc2Vec(sentences,dm=1,vector_size=256,window=5)
    time_2=datetime.datetime.now()
    print("Total elapse time for building the model (s): "+str((time_2-time_1).total_seconds()))

    print('Start Training')
    # model.build_vocab(sentences)
    time_1=datetime.datetime.now()
    model.train(sentences,total_examples=model.corpus_count,epochs=100)
    time_2=datetime.datetime.now()
    print("Total elapse time for training (s): "+str((time_2-time_1).total_seconds()))

    print(len(model.dv))

    print(model.infer_vector(sentence))
    print(model.infer_vector(sentence))

    corpus_file=open('ALLCorpus2.txt')
    lines=corpus_file.readlines()

    sentences2=gensim.models.doc2vec.TaggedLineDocument('ALLCorpus2.txt')
    # model.build_vocab(sentences2, update=True)
    model.train(sentences2,total_examples=len(lines),epochs=100)
    print(len(model.dv))
    print(model.infer_vector(sentence))

Doc2VecModelBuilding()

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

段错误 (核心已转储)

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值