关于Gensim的word2vec要不要train的疑问

我一直有这方面的疑问,看网上大部分的例子,大家都是直接创建了model即可,例如这里:https://www.jianshu.com/p/5f04e97d1b27

给出的例子:

from gensim.models import word2vec 
import time
start = time.clock()
model=word2vec.Word2Vec(train_content, size=200)
end = time.clock()
print('Running time: %s Seconds'%(end-start))

我就是觉得很疑惑,因为我之前使用doc2ec的时候,是要单独train的。但是网上的例子基本都没有train那一步,例如下面这些:

https://zhuanlan.zhihu.com/p/141136987

https://blog.csdn.net/baimafujinji/article/details/77836142

https://blog.csdn.net/ljz2016/article/details/103767689

https://www.cnblogs.com/hziwei/p/13533888.html

这个嘛,感觉大家写博客都不认真啊!按照官方的文档:https://radimrehurek.com/gensim/models/word2vec.html#usage-examples

应该是需要train的!这里我也给出一个例子:

import gensim
import pickle
import datetime

print('Start reading the corpus')
sentences=gensim.models.word2vec.LineSentence('SymTxt_Doc2Vec.txt')#对应的语料库文件


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

test=model.wv['invoke-direct']#这是我的语料库中的一个word
print(test)

print('Start Training')
time_1=datetime.datetime.now()
model.train(corpus_iterable=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()))

f_model=open('Word2Vec_Model.pkl','wb')
pickle.dump(model, f_model, protocol = 4)

test=model.wv['invoke-direct']#可以看到,train的时间是要比model构建的时间长的。训练之后这个word的embedding也发生了变化
print(test)

不得不吐槽说,网上的很多例子都太不靠谱了!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值