【问题标题】:Missing words when training word2vec model训练 word2vec 模型时缺少单词
【发布时间】:2019-01-21 12:03:10
【问题描述】:

我正在尝试使用 gensim 训练 word2vec 模型。这是我正在使用的线路:

model = Word2Vec(training_texts, size=50, window=5, min_count=1, workers=4, max_vocab_size=20000)

其中 training_texts 是表示单词的字符串列表的列表。我使用的语料库有 8924372 个句子,141,985,244 个单词和 1,531,477 个唯一单词。训练后,模型中只存在 15642 个词:

len(list(model.wv.vocab))
# returns 15642

模型不应该有 20,000 个单词,就像指定的 max_vocab_size 一样吗?为什么它缺少大部分训练词?

谢谢!!

【问题讨论】:

    标签: nlp gensim word2vec


    【解决方案1】:

    您可以通过model.wv.vocab.keys()model.wv.vocab.index2entity 查看它发现的独特词。

    它们是您所期望的吗?您能否列出一个您确定在training_texts 中提供但不存在的单词?

    请注意,training_texts 应该是字符串标记列表的序列。如果您只提供一个字符串序列,它会将每个字符串 character 视为一个单词,并且只对那些单字符“单词”进行建模。 (对于使用拉丁字母语言的文本,这通常意味着只有几十个“单词”,但如果您的文本包含其他语言的字符,我想您最终可以计算出 15642 个唯一的单字符单词。)

    【讨论】:

      【解决方案2】:

      模型中出现的单词是可以的,它们代表了一些通常的关系( king - boy + girl = queen 。但是我已经确定了在语料库中出现多次并且不在模型中的单词。我不要认为它与我如何传递数据有关,但我缺少一些参数。

      【讨论】: