轻松玩转BERT!Transformers快速上手

目前NLP最前沿的研究领域基本上已经被大型语言模型+迁移学习这一范式所垄断了。2017年6月,Google研究人员在Attention is all you need中提出了Transformer编码解码结构, 这一结构也成为了后续一系列工作的基石。2018年10月,基于Transformer,Google的研究人员发布了“全面超越人类”的BERT,一种融合了双向上下文信息预训练语言模型,该模型当时一举打破了11项纪录。从此之后,BERT的继任者们百花齐放,不断刷新各leaderboard最高成绩。现在,这些研究被称为BERTology,不完全的名单包括:Transformer-XL, XLNet, Albert, RoBERTa, DistilBERT, CTRL,XLM-R…

所以现在碰到NLP问题,几乎就是无脑BERT了,但是直接基于原始的BERT去进行开发对于大多数人来说都很麻烦。现在介绍一个开源库huggingface/transformers,在它的基础上去做开发就会轻松很多。

Transformers

Transformers提供了数千种经过预训练的模型,可以对100多种语言的文本执行任务,例如文本分类,信息提取,问题回答,文本摘要,翻译,文本生成等。其目的是使BERT系列的算法易于所有人使用。

Transformers提供了API,可在给定的文本上快速下载和使用那些经过预训练的模型,在自己的数据集上对其进行微调,然后在我们的模型中心上与社区共享。同时,每个定义架构的python模块都可以独立使用,并可以进行修改以进行快速的研究实验。
Transformers得到了两个最受欢迎的深度学习库PyTorch和TensorFlow的支持,它们之间具有无缝集成,允许您使用一个模型训练模型,然后加载模型以进行推理。
Transformers基础操作

安装

pip install transformers

预定义任务

transformers本身内置很多模块可以轻松实现各种预定义好的NLP任务,比如直接用预训练好的模型执行相关任务

情感分析
from transformers import pipeline
# Allocate a pipeline for sentiment-analysis
classifier = pipeline('sentiment-analysis')
classifier('We are very happy to include pipeline into the transformers repository.')
[{
   'label': 'POSITIVE', 'score': 0.9978193640708923}]
问题回答
from transformers import pipeline
# Allocate a pipeline for question-answering
question_answerer = pipeline('question-answering')
question_answerer({
   
...     'question': 'What is the name of the repository ?',
...     'context': 'Pipeline have been included in the huggingface/transformers repository'
... })
{
   'score': 0.5135612454720828, 'start': 35, 'end': 59, 'answer': 'huggingface/transformers'}
embedding获取
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")>>> model = AutoModel.from_pretrained("bert-base-uncased")
inputs = tokenizer("Hello world!", return_tensors="pt")>>> outputs = model(**inputs)

同时Transformers内置了很多标准的NLP任务,比如文本分类

from transformers import BertForSequenceClassification
from transformers import AdamW
from transformers import BertTokenizer
from torch.nn import functional as F

# 定义模型
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
model.train()

# finetune参数
no_decay = ['bias', 'LayerNorm.weight']
optimizer_grouped_parameters = [
    {
   'params': [p for
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值