【发布时间】:2018-12-10 14:51:50
【问题描述】:
关于 word2vec 和 gensim,
假设你已经在一个大型语料库上训练了一个模型,并且你想用新句子中的新词来更新它,但不更新已经有向量的词。
调用 model.train 时是否可以冻结某些单词的向量并仅更新某些选定的单词(例如新单词)?
或者也许有一个技巧可以做到这一点?
谢谢。
【问题讨论】:
关于 word2vec 和 gensim,
假设你已经在一个大型语料库上训练了一个模型,并且你想用新句子中的新词来更新它,但不更新已经有向量的词。
调用 model.train 时是否可以冻结某些单词的向量并仅更新某些选定的单词(例如新单词)?
或者也许有一个技巧可以做到这一点?
谢谢。
【问题讨论】:
有!但它是一个实验性功能,文档很少——你需要阅读源代码才能完全理解它,并直接改变你的模型以使用它。
在word2vec.py 源中查找以_lockf 结尾的属性——特别是在最新代码中,一个名为vectors_lockf 的代码。它是一种面具,可以允许、削弱或停止对某些单词的训练。对于每个单词,如果它的值为 1.0,则应用正常的完整反向传播更新。任何较低的值都会削弱更新——因此 0.0 会冻结一个单词以防止更新。 (潜在的更新仍在计算中 - 因此没有净加速 - 在最终应用于特定的冻结词之前,它只是乘以 0.0。)
【讨论】: