gensim 当没有添加新词汇时,model.trainables.update_weights仍然会执行,

hjqgdpho  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(75)

这个问题虽然不是主要问题,但我认为修复它以避免混淆是很重要的。
即使没有新的词汇,model.trainables.update_weights也需要一段时间才能执行(对模型没有影响),因为它没有检查gained_vocab是否大于零。
https://github.com/RaRe-Technologies/gensim/blob/06f5f5c4fa9fb54a169e53034a3bf3fa035cbc3c/gensim/models/word2vec.py#L1467
应该被替换为:

gained_vocab = len(wv.vocab) - len(wv.vectors)
if gained_vocab <= 0:
	raise RuntimeError(
	    "There is no new vocabulary added.  "
	    "If you want to update the weights with a new vocabulary, please first update model.vocab"
	)
hec6srdp

hec6srdp1#

看起来对我来说不错,谢谢@ahmedahmedov,wdyt@gojomo?

ncecgwcz

ncecgwcz2#

update_weights()是否在其他时候被触发?如果它只在需要时运行,并且在不需要调用它时(因为没有词汇变化)只是简单的无操作(慢速),那么怎么办?异常似乎太多了——最多记录一个警告。

jexiocij

jexiocij3#

在下一行中,实际上确实将wv.vectors_norm设置为None。
https://github.com/RaRe-Technologies/gensim/blob/06f5f5c4fa9fb54a169e53034a3bf3fa035cbc3c/gensim/models/word2vec.py#L1488
再次强调,这显然不是什么大问题。然而,在我看来,每当执行任何改变模型对象状态的方法时,用户应该尽可能详细地被告知。否则,可能会导致难以追踪的难以捉摸的错误。

pb3s4cty

pb3s4cty4#

我想解决这个问题,当没有添加新词汇时,应该添加日志还是异常?

相关问题