LM-BFF数据集准备:15个NLP任务数据下载与预处理完全指南
LM-BFF数据集准备:15个NLP任务数据下载与预处理完全指南
【免费下载链接】LM-BFF[ACL 2021] LM-BFF: Better Few-shot Fine-tuning of Language Models https://arxiv.org/abs/2012.15723项目地址: https://gitcode.com/gh_mirrors/lm/LM-BFF
LM-BFF(Better Few-shot Fine-tuning of Language Models)是ACL 2021年提出的少样本微调方法,能够高效处理各类NLP任务。本文将详细介绍如何为LM-BFF项目准备15个主流NLP任务的数据集,包括数据下载、预处理和格式转换的完整流程,帮助新手快速上手少样本学习实验。
1. 环境准备与项目克隆
在开始数据集准备前,需先完成基础环境配置和项目克隆:
# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/lm/LM-BFF cd LM-BFF # 安装依赖 pip install -r requirements.txt项目核心数据集处理工具位于tools/目录,其中tools/generate_k_shot_data.py是少样本数据生成的关键脚本,支持自动划分训练集、验证集和测试集。
2. 支持的15个NLP任务清单
LM-BFF支持15个主流NLP任务,涵盖情感分析、自然语言推理、问答等多个领域:
- 情感分析:SST-2、sst-5、mr、cr、mpqa、subj
- 自然语言推理:MNLI、SNLI、RTE、WNLI
- 语义相似度:STS-B
- 问答与匹配:QNLI、QQP、MRPC
- 语法判断:CoLA
这些任务数据可通过tools/generate_k_shot_data.py自动处理,脚本中已预设各任务的数据格式解析逻辑(第10-36行)。
3. 数据集下载指南
3.1 GLUE基准数据集获取
GLUE任务(如MNLI、SST-2等)需从官方渠道下载:
# 创建数据目录 mkdir -p data/original # 下载GLUE数据(需手动同意许可协议) python tools/download_glue_data.py --data_dir data/original --tasks all提示:部分GLUE任务(如WNLI)测试集未公开,脚本将自动使用开发集作为测试集(第124行)。
3.2 其他任务数据集准备
非GLUE任务(如mr、cr等)可通过以下方式获取:
- 访问论文附录获取数据来源
- 将下载的CSV文件按任务名称组织到
data/original目录:data/original/ ├── mr/ │ ├── train.csv │ └── test.csv ├── cr/ │ ├── train.csv │ └── test.csv ...
4. 少样本数据集生成
使用tools/generate_k_shot_data.py脚本将原始数据转换为少样本格式:
4.1 基础用法
# 生成16-shot数据集(默认配置) python tools/generate_k_shot_data.py \ --data_dir data/original \ --output_dir data \ --k 16 \ --seed 424.2 关键参数说明
--k:每个类别采样的训练样本数(默认16)--seed:随机种子(默认提供5个种子:100,13,21,42,87)--mode:输出模式,k-shot(标准划分)或k-shot-10x(10倍验证集)--task:指定任务(默认处理全部15个任务)
4.3 输出目录结构
生成的数据集将按以下结构组织:
data/k-shot/ ├── SST-2/ │ ├── 16-42/ # k=16, seed=42 │ │ ├── train.tsv │ │ ├── dev.tsv │ │ └── test.tsv ├── mr/ │ ├── 16-42/ │ │ ├── train.csv │ │ ├── dev.csv │ │ └── test.csv ...5. 数据预处理核心逻辑
LM-BFF的数据预处理主要包含以下步骤(对应tools/generate_k_shot_data.py关键函数):
5.1 数据加载(load_datasets函数)
- 支持TSV(GLUE任务)和CSV(其他任务)格式
- 自动识别任务类型并读取对应文件(第41-63行)
- 返回包含train/dev/test分割的数据集字典
5.2 标签处理(get_label函数)
- 针对不同任务提取标签(第9-36行)
- 特殊处理STS-B任务(将连续值转为二分类:第30行)
- 兼容GLUE风格和自定义任务的标签格式
5.3 平衡采样
- 按标签类别均衡采样k个样本(第137-144行)
- 支持生成验证集(默认k1个样本,10x模式为k10)
- 保持数据分布一致性,避免类别不平衡
图:LM-BFF的少样本微调框架,展示了从预训练到基于提示的微调过程(c部分为本文涉及的少样本数据使用场景)
6. 常见问题解决
6.1 数据格式错误
症状:运行脚本时出现"ValueError: Unknown GLUE task"
解决:
- 检查任务名称拼写(区分大小写,如"SST-2"而非"SST2")
- 确认数据文件放置在正确的任务目录下
- 参考tools/generate_k_shot_data.py第10行支持的任务列表
6.2 样本数量不足
症状:某些类别样本数少于k
解决:
- 减少
--k参数值(建议最小k=1) - 使用
--mode k-shot-10x减少验证集比例 - 检查原始数据是否完整
6.3 中文数据支持
LM-BFF默认支持英文任务,如需处理中文数据:
- 修改tools/generate_k_shot_data.py的标签解析逻辑
- 调整src/dataset.py中的数据加载器
- 使用中文预训练模型(如bert-base-chinese)
7. 数据集使用示例
准备好数据集后,可通过以下命令启动少样本训练:
python run.py \ --task SST-2 \ --k 16 \ --seed 42 \ --data_dir data/k-shot/SST-2/16-42 \ --output_dir results/SST-2/16-42总结
本文详细介绍了LM-BFF项目的15个NLP任务数据集准备流程,包括环境配置、数据下载、少样本生成和预处理逻辑。通过tools/generate_k_shot_data.py工具,用户可以快速构建标准化的少样本数据集,为后续的模型微调奠定基础。建议结合项目提供的示例代码和论文原文,深入理解少样本学习的实现细节。
【免费下载链接】LM-BFF[ACL 2021] LM-BFF: Better Few-shot Fine-tuning of Language Models https://arxiv.org/abs/2012.15723项目地址: https://gitcode.com/gh_mirrors/lm/LM-BFF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考