You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gensim Doc2Vec构建后词汇表为空问题求助

排查Doc2Vec词汇表为空的问题

看起来你遇到的核心问题是默认的min_count参数设置和你的小语料规模不匹配,导致所有词汇都被过滤掉了。让我们一步步拆解问题:

1. 问题根源:默认min_count阈值过高

Gensim的Doc2Vec类默认的min_count参数值是5——意思是只有在语料中出现至少5次的单词才会被保留在词汇表里。而你的语料里:

  • 出现次数最多的单词scarpe也只出现了4次
  • 其他所有单词都是仅出现1次

当trim_rule为None时,keep_vocab_item函数会直接判断count >= min_count,显然你的所有单词都不满足这个条件,所以函数返回False,所有词汇都被丢弃,最终词汇表为空。

2. 快速解决方案

在初始化Doc2Vec模型时,显式设置min_count=1,这样所有出现过的单词都会被保留:

model = Doc2Vec(alpha=0.025, min_alpha=0.025, min_count=1)  # 添加min_count=1参数
model.build_vocab(sentences)

3. 补充说明keep_vocab_item函数逻辑

你贴出的函数逻辑本身是正常的,只是默认参数和你的语料场景不匹配:

  • 当trim_rule为None时,函数返回count >= min_count
  • 因为你的语料单词出现次数都低于默认的min_count=5,才会全返回False
  • 只要调整min_count到适合你小语料的值(比如1),就能正常保留词汇

修改后,你的模型就能正确构建包含所有单词的词汇表了。

内容的提问来源于stack exchange,提问作者Nicolò Gasparini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:29