训练word2vec模型时缺少单词

时间:2019-01-21 12:03:10

标签: nlp gensim word2vec

我正在尝试使用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

模型不应该按照max_vocab_size的规定包含20,000个单词吗?为什么缺少大多数训练用语?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

它们是您所期望的吗?您可以列出您确定在training_texts中提供的单词吗?

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

答案 1 :(得分:0)

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