【问题标题】:Gensim's Word2Vec not training provided documentsGensim 的 Word2Vec 未培训提供的文档
【发布时间】:2019-04-20 13:54:20
【问题描述】:

我在使用 Word2Vec 时遇到了 Gensim 训练问题。 model.wv.vocab 没有从经过训练的语料库中得到任何进一步的信息 唯一的词来自初始化指令!

其实我自己的代码试了很多次,连官网的例子都没有!

我尝试在代码中的许多位置保存模型 我什至尝试在训练指令的同时保存和重新加载语料库

from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import Word2Vec

path = get_tmpfile("word2vec.model")

model = Word2Vec(common_texts, size=100, window=5, min_count=1, workers=4)
model.save("word2vec.model")

print(len(model.wv.vocab))

model.train([["hello", "world"]], total_examples=1, epochs=1)
model.save("word2vec.model")

print(len(model.wv.vocab))

第一个打印语句给出正确的 12

第二个 12 应该给出 14 (len(vocab + 'hello' + 'world'))

【问题讨论】:

    标签: python-3.x gensim google-colaboratory


    【解决方案1】:

    train() 的额外调用不会扩展已知词汇。所以,len(model.wv.vocab) 的值不可能在再次调用train() 后发生变化。 (模型已经知道“hello”和“world”,在这种情况下它们的原始计数为 12,或者它们不知道,在这种情况下它们被忽略。)

    词汇表仅在特定的build_vocab() 阶段建立,如果如您的代码所示,您在模型实例化中提供了训练语料库 (common_texts),则会自动发生这种情况。

    您可以使用对 build_vocab() 的调用以及可选的添加参数 update=True 来增量更新模型的词汇表,但最好将其视为一种高级/实验性技术,它会增加复杂性。 (这样的词汇扩展,然后是后续的增量训练,究竟是有帮助还是有害,将取决于获得很多其他关于alphaepochs、语料库大小、训练模式和语料库内容正确的模糊选择。)

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多