1. 环境准备与数据加载
第一次用BERT做文本分类时,我对着满屏的报错信息差点崩溃。后来发现只要环境装对了,后面的事情就简单多了。咱们先从最基础的开始,把PyTorch和Transformers库配置好。
建议直接用Anaconda创建虚拟环境,避免包冲突。这是我验证过的稳定版本组合:
bash复制conda create -n bert_tuning python=3.8
conda activate bert_tuning
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
pip install transformers==4.28.1 datasets==2.11.0
数据集处理是NLP任务最耗时的环节。我用IMDb电影评论数据集举例,因为它结构清晰且适合练手。实际工作中你可能需要处理更混乱的数据,这时候要特别注意文本清洗:
python复制from datasets import load_dataset
# 加载数据集
raw_dataset = load_dataset('imdb')
print(raw_dataset['train'][0]) # 查看第一条数据
# 文本清洗函数示例
def clean_text(text):
text = text.replace("<br />", " ") # 去除HTML标签
text = re.sub(r'[^\w\s]', '', text.lower()) # 去标点+转小写
return text.strip()
# 应用清洗并划分数据集
dataset = raw_dataset.map(lambda x: {'text': clean_text(x['text'])})
split_dataset = dataset['train'].train_test_split(test_size=0.2)
遇到内存不足的情况时,可以改用生成器方式逐批加载数据。我常用这个技巧处理大型CSV文件:
python复制
