Skip to content

ruan-xf/nlp_with_transformers

Repository files navigation

来源:【NLP最佳实践】Huggingface Transformers实战教程 - Heywhale.com

01-认识transformers
02-文本分类实战:基于Bert的企业隐患排查分类模型
03-文本多标签分类实战:基于Bert对推特文本进行多标签分类
04-句子相似性识别实战:基于Bert对句子对进行相似性二分类
05-命名实体识别实战:基于Bert实现文本NER任务
06-多项选择任务实战:基于Bert实现SWAG常识问题的多项选择
07-文本生成实战:基于预训练模型实现文本文本生成
08-文本摘要实战:基于Bert实现文本摘要任务
09-文本翻译实战:基于Bert实现端到端的机器翻译
10-问答实战:基于预训练模型实现QA

展示使用现代预训练语言模型解决基础的nlp任务
各任务目录下有单独说明任务特点和解决过程的readme,欢迎查看

此处总结一下使用到的库:

pytorch lightning:简化训练流程,提升实验规范性​

应用背景:原生 PyTorch 需手动编写训练循环、日志记录、GPU 适配等代码,在多轮实验中重复工作量大且易出错。​
首先是一般流程,一图说明:pytorch_to_pl
然后是其他的训练设置,调整pytorch_lightning Trainer的初始化参数即可,完成训练还可以跟模型一起作为checkpoint保存,如:

  • gradient_clip_val 梯度剪裁
  • accumulate_grad_batches 梯度累积
  • max_epochs 训练轮次
  • logger 可以使用tensorboard
  • fast_dev_run 可以跑一个epoch来验证LightningModule的流程写对了没有

实际效果:训练流程更标准化,训练参数能够自动保存,简单配置即可调整训练过程和添加训练监控

hf Transformers:丰富生态支撑与高任务适配性封装,降低模型应用门槛

应用背景:PyTorch Lightning 侧重简化训练流程,而在 NLP 任务中,模型与数据集的获取、不同任务的模型适配仍需大量手动工作 —— 如寻找开源模型需逐个适配接口、十分常见的任务(分词标注、多选、文本分类)需自行定义模型结构、训练过程和损失函数

  • 生态优势:统一加载开源模型与数据集,通过AutoModel系列接口可直接调用 BERT、GPT 等数千种预训练模型,datasets库一键加载 GLUE、IMDB 等标准数据集,无需处理格式差异
  • 高封装性:针对不同任务提供专用模型类,我只需要通过模型名指定加载的transformer层,训练和损失已由内部处理:
    • AutoModelForTokenClassification:用于命名实体识别、词性标注等 token 级任务
    • AutoModelForMultipleChoice:用于选择题、文本匹配等多选任务
    • AutoModelForSequenceClassification:用于情感分析、文本分类等序列级任务
  • 配套工具:自带Tokenizer处理文本分词、编码

实际效果:更容易的加载开源模型和数据集并进行快速验证,且提供了适合不同任务的预设模型

sentence_transformers

在04 句子相似性的任务中,可以看到其继承了hf transformers的主要类,所以可以以hf的习惯使用,并且在句子处理和指标计算方面提供了一些便利

setfit:文本分类的few-shot

该库的总体思路是分为两阶段:embedding训练和分类层训练,在文本分类任务中将不同的样本组成对进行embedding的对比学习
所以在02任务中,使用每类16个样本就可以获得85%的准确率

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks