如何用 Transformers 库跑通文本分类
以前做文本分类要自己搭模型、调词向量,现在用 Hugging Face 的 Transformers 库,加载一个预训练模型微调几下就能达到很好的效果。这篇教程带你从”零代码体验”到”完整微调”,跑通一个情感分类任务。
两种使用方式
Transformers 提供两个层次的用法:
graph TD
A[文本分类任务] --> B[pipeline 直接推理]
A --> C[完整微调]
B --> D[几行代码用现成模型]
C --> E[用自己的数据训练]
先用 pipeline 快速见效,再学完整微调。
前置准备
pip install transformers datasets evaluate accelerate |
步骤一:用 pipeline 零代码体验
不训练,直接调用现成的情感分析模型:
from transformers import pipeline |
一行代码就能分类,适合快速验证想法。中文任务可指定中文模型:
clf = pipeline("sentiment-analysis", |
步骤二:加载数据集
用 datasets 库加载情感分类数据集:
from datasets import load_dataset |
也可以换成自己的 CSV / JSON 数据。
步骤三:加载分词器和模型
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
num_labels=2 对应二分类,多分类改成对应的类别数。
步骤四:预处理(分词)
文本要转成模型能读的 token id:
def tokenize(batch): |
步骤五:用 Trainer 训练
Transformers 的 Trainer 封装了整个训练循环:
from transformers import TrainingArguments, Trainer |
步骤六:评估与保存
print(trainer.evaluate()) # 输出 loss、accuracy 等指标 |
步骤七:用自己的模型推理
from transformers import pipeline |
完整微调流程
graph LR
A[加载数据集] --> B[分词预处理]
B --> C[加载预训练模型]
C --> D[Trainer 微调]
D --> E[评估]
E --> F[保存并推理]
常见问题
- 模型下载慢:设置国内镜像
HF_ENDPOINT环境变量 - 显存不足:减小 batch_size,或选更小的模型(如 distilbert)
- 中文效果差:换成中文预训练模型(bert-base-chinese 等)
- token 超长被截断:调大
max_length,同时注意显存
小结
Transformers 库把 NLP 的门槛降到了极低:pipeline 让你零训练就能用,Trainer 让你几行代码完成微调。掌握”加载数据→分词→微调→评估→推理”这条主线,你就能把预训练模型的强大能力,快速迁移到自己的文本分类任务上。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 非鱼小站!
评论
WalineDisqus








