LM-BFF数据集准备:15个NLP任务数据下载与预处理完全指南

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等)可通过以下方式获取:

  1. 访问论文附录获取数据来源
  2. 将下载的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 42

4.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默认支持英文任务,如需处理中文数据:

  1. 修改tools/generate_k_shot_data.py的标签解析逻辑
  2. 调整src/dataset.py中的数据加载器
  3. 使用中文预训练模型(如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),仅供参考