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

调用ktrain的preprocess_train函数出现ValueError的含义与解决方法

错误含义

报错是ktrain的文本预处理校验逻辑触发的:preprocess_train要求传入的第一个参数texts必须是字符串组成的列表/数组,或是句对形式的二元字符串元组列表,你传入的X_train_smote.Tweet.values是整数数组,不符合输入格式要求,所以直接抛出错误。
从你给出的参数值也能看出来,X_train_smote.Tweet.values输出是array([1830, 471, 1100, ..., 1308, 930, 868]),全是数字,没有任何文本字符串,自然过不了校验。

问题根因

你大概率是在过采样之前就提前对Tweet列的原始文本做了分词、ID映射的编码操作,但ktrain自带的Transformer预处理器会自动完成文本清洗、分词、token转ID的全流程,不需要你提前做编码处理,提前转成数字反而不符合输入要求。
另外额外提醒:SMOTE是针对结构化数值数据设计的过采样方法,直接对文本的token ID序列做SMOTE过采样完全没有意义,还会破坏文本原有的语义逻辑,根本起不到缓解类别不平衡的效果。

解决方案

  1. 回溯数据处理流程,取出SMOTE处理之前的、未经过编码的原始Tweet文本内容,直接把原始文本组成的数组传入preprocess_train和preprocess_test即可。
  2. 如果已经丢失原始文本,需要找到你之前做编码的映射字典,把数组里的整数ID反向转成对应的原始文本字符串,再传入预处理方法。

如果存在类别不平衡问题,建议换用文本场景适用的处理方案:

  • 训练时给不同类别设置不同的损失权重
  • 对少数类样本做文本增强(比如回译、同义词替换、随机截断拼接等)

内容的提问来源于stack exchange,提问作者DevLeb2022

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:39:04