Sklearn文本训练遇empty vocabulary错误,寻求解决方法
问题背景与报错详情
- 应用名称:SCPortal
- 每个功能最小数据量:25
- 输入文件路径:
/Users/Document/Desktop/PythonSpace/SC_Portal_Training_8thSep22.csv - 输出文件路径:
/Users/Document/Desktop/PythonSpace - 过滤前文档数:0
- 过滤后文档数:0
- 模型配置:
SVC(C=100, gamma=0.001, probability=True)
最终触发报错:
ValueError: 词汇表为空;可能文档仅包含停用词
解决思路
- 先确认数据加载环节
过滤前文档数为0,说明代码根本没从目标CSV文件中读取到有效数据。先检查文件路径是否正确(注意大小写、拼写),再打开CSV文件确认内容是否为空、格式是否符合代码预期(比如分隔符是否匹配)。 - 排查数据过滤逻辑
即使加载到数据,过滤后文档数仍为0,要么是「每个功能最小数据量25」的阈值设置过高,要么是过滤代码存在bug。可以先注释掉过滤步骤,直接用原始数据测试,看是否能生成正常词汇表。 - 检查文本预处理流程
词汇表为空的核心原因是预处理把所有有效词汇都滤掉了:- 核对停用词列表,是否误包含了所有有意义的词汇;
- 检查文本清洗代码(去特殊字符、分词、大小写转换等),是否把所有文本处理成了空字符串;
- 查看
CountVectorizer/TfidfVectorizer的参数,是否设置了过高的min_df/max_df,导致没有词汇满足保留条件。
- 分步调试定位问题
在代码中添加打印日志,分别输出加载后的原始数据量、过滤后的数据量、单条文本预处理后的内容,精准定位是哪一步导致数据丢失或词汇为空。
内容的提问来源于stack exchange,提问作者Rajibendra Roychowdhury
相关产品推荐
相关产品推荐

