我正在尝试使用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个单词吗?为什么缺少大多数训练用语?
谢谢!
答案 0 :(得分:0)
您可以查看它通过model.wv.vocab.keys()
或model.wv.vocab.index2entity
发现的唯一单词。
它们是您所期望的吗?您可以列出您确定在training_texts
中提供的单词吗?
请注意,training_texts
应该是字符串标记列表的序列。如果您仅提供一个字符串序列,它将把每个字符串字符视为一个单词,并且仅对那些单字符“单词”建模。 (对于使用拉丁字母语言的文本,这通常仅意味着几十个“单词”,但是如果您的文本包含其他语言的字符,我想您可能会获得15642个唯一的单字符单词。)
答案 1 :(得分:0)
出现在模型中的单词是可以的,它们代表一些通常的关系(king-boy + girl = queen。但是我已经确定了在语料库中出现过几次但不在模型中的单词。认为它与如何传递数据无关,但是缺少一些参数。