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

使用BERT做推文情感分析触发tokenize_data意外参数batched报错

报错根因

你混用了不同库的API参数,本质是参考教程时没有注意数据对象类型的区别:

  • 你用pd.read_csv读取得到的是Pandas DataFrame对象,它的apply方法原生不支持batched、remove_columns这两个入参,传入未定义的关键字参数就会抛出你看到的TypeError。
  • batched=True批量处理、remove_columns自动删列的参数,是Hugging Face Datasets库中Dataset.map()方法的专属参数,仅能在HF的Dataset对象上调用时生效。
修复方案

优先选择将Pandas DataFrame转为Hugging Face Dataset对象再做处理,这种方式处理完的数据集可以直接适配Transformers库的Trainer训练管线,不需要额外做格式转换,修改后的可运行代码如下:

import pandas as pd
from transformers import AutoTokenizer
from datasets import Dataset

path = "/content/drive/MyDrive/CSV/test.csv"
df = pd.read_csv(path)

tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')

def transform_labels(example):
    label = example['Sentiment']
    num_map = {
        'Positive': 0,
        'Negative': 1,
        'Neutral': 2,
        'Extremely Positive': 3,
        'Extremely Negative':4
    }
    return {'labels': num_map[label]}

def tokenize_data(example):
    # 补充truncation=True,避免超过BERT最大序列长度的文本触发报错
    return tokenizer(example['OriginalTweet'], padding='max_length', truncation=True)

# 转换为HF Dataset格式
dataset = Dataset.from_pandas(df)
# 批量分词
tokenized_dataset = dataset.map(tokenize_data, batched=True)
# 转换标签并移除冗余列
remove_columns = ['UserName', 'ScreenName', 'Location', 'TweetAt', 'OriginalTweet', 'Sentiment']
final_dataset = tokenized_dataset.map(transform_labels, remove_columns=remove_columns)

补充说明:如果你坚持只用Pandas做数据处理,需要删掉apply中所有不支持的参数,逐行重写分词、标签转换逻辑,但处理完的结果不能直接传入Transformers的训练接口,需要额外做格式对齐,性价比很低,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:09:21