使用Hugging Face管道轻松应用NLP预训练模型

这一段时间在研究自然语言处理,一直想找一些预训练模型,发现这个非常全,就收藏好好研究

作者|Robin van Merle
编译|VK
来源|Towards Data Science
原文链接: https://towardsdatascience.com/effortless-nlp-using-pre-trained-hugging-face-pipelines-with-just-3-lines-of-code-a4788d95754f

最近,BERT模型在语言处理领域得到了广泛的应用,因为它能够将最先进的性能与计算能力结合起来。

在本文中,我将向你展示如何使用Hugging Face Transformers库,仅用3行代码就可以使用模型!但是首先让我们看看BERT模型是如何工作的。


BERT是什么?

BERT代表Bidirectional Encoder Representations from Transformers。它是一种新的语言模型,能够在广泛的自然语言处理任务中获得最前沿的结果。

BERT的一个主要优点是它是双向的,这意味着该模型可以同时考虑整个单词序列。与从左到右的方法不同,这允许BERT使用所有周围的单词(在左侧和右侧)来上下文化每个单词。

此外,你可以在计算能力有限的机器上使用BERT模型,因为它利用了迁移学习:首先对模型进行一般任务的训练(预训练),然后将获得的知识“转移”到相关的NLP任务(微调)。让我们更详细地看一下这两个步骤。

预训练

首先,该模型是在维基百科这样的大型纯文本语料库上预训练的。预训练应该是通用的,以便在以后的广泛目标中使用该模型。

其次,预训练是在自我监督下进行的,这样输入就不需要标记,这反过来意味着我们有一个几乎无限的训练数据供应。BERT模型的预训练分为两个任务:

  • 掩码语言建模(MLM):对语料库中15%的词进行掩码,目的是预测掩码的token。例如,一个掩码的句子可能是Paris is the [MASK] of France,这个模型会试图预测capital
  • 下一句预测(NSP):将语料库中的两个随机句子组合起来。目的是预测这两个句子在原始语料库中是否相邻出现。举个例子,这两句话可以是:the man went to the storehe bought a gallon of milk,这两个句子可以顺理成章地跟在一起。然而,这句话也可能是the man went to the storepenguins are flightless,这就不太可能连续出现。

这些任务的结合使BERT既能理解单词之间的关系,又能理解句子之间的关系。预训练只需要做一次(节省计算能力),并且预训练的模型在网上广泛可用,可以用于一种或多种语言,也可以用于大小写和非大小写文本。

微调

然而,预训练的BERT模型仍然是非常通用的。为了能够将其用于情感分析、命名实体识别、文本摘要、翻译或其他方面,我们需要针对特定用例对模型进行微调。

这最大的优点是,这种微调相对便宜:大部分的权重已经在训练前阶段完成,只需要做一次。

如果你没有一个标记的训练集,已经微调的模型也可以在网上广泛使用,例如在Hugging Face model hub(https://huggingface.co/models).。这是我将在本文中使用的方法。

关于BERT的更多信息,我推荐:https://github.com/google-research/bert

或者为更高级的读者推荐原始的研究论文“BERT:Pre training of Deep directional Transformers For Language Understanding”:https://arxiv.org/abs/1810.04805


Hugging Face Transformers

使用BERT模型最简单的方法之一是使用Hugging Face Transformers:一个基于PyTorch和TensorFlow的最先进的NLP库。

他们的model hub,目前提供了7500多个预训练的各种NLP任务和语言的模型。这样,你几乎总能找到与你的特定目标相对应的模型。

每个模型都可以在你自己的数据集上使用hug Face transformer库提供的简单方法进行微调。然而,更简单的是,这些模型也可以开箱即用,只需极少的编程,就可以使用Hugging Face Transformers提供的管道之一,完成以下11项任务:

  • 特征提取
  • 情绪分析
  • 命名实体识别
  • 问答
  • 掩码填充
  • 摘要
  • 翻译
  • 语言生成
  • 文本到文本生成
  • Zero-shot分类
  • 多回合对话

有关更多信息,请访问:https://github.com/huggingface/transformers


使用管道(只有3行代码!)

确保你首先安装了Hugging Face Transformers库,例如在终端中运行pip install Transformers。然后,你就可以开始使用Hugging Face,只需3行代码!例如,查看以下情绪分析代码:

# 加载transformers库并初始化管道
from transformers import pipeline
classifier = pipeline('sentiment-analysis')

# 这是你使用管道所需要的全部内容!
classifier('Today is a beautiful day!')
# >> [{'label': 'POSITIVE', 'score': 0.9998838901519775}]

看,那很简单!你所要做的就是导入库,初始化管道,然后就可以开始使用模型了!

如前所述,这些函数使用来自Hugging Face model hub的预训练的模型。默认情况下,情绪分析管道使用distilbert-base-uncased-finetened-sst-2-english模型,但是你可以使用模型中心的任何模型。

让我们看看两个扩展:从模型中心选择不同的模型,以及解决不同的任务。

Model Hub的7500多个模型

通过在创建管道时设置模型参数,你可以轻松地使用不同的模型。

例如,假设我们正在做一个项目,想要预测财务情绪。在模型中心进行快速搜索,我们就会看到ProsusAI/finbert模型,它是专门针对金融的情感进行训练的。这个模型的实现和前面的例子一样简单,只需包含模型参数:

# 我假设你已经像前面的例子一样导入了transformer库
classifier = pipeline('sentiment-analysis', model='ProsusAI/finbert')

classifier('Stocks hit record highs')
# >> [{'label': 'positive', 'score': 0.8461698889732361}]

Hugging Face Transformers将自动为你下载所选的模型!

其他NLP任务

管道目前能够处理11个不同的任务,从命名实体识别到翻译。

创建管道时,可以通过将“sentiment-analysis”更改为其他内容来选择模型。例如,让我们试着翻译“‘I love dogs”从英语到德语。转到模型中心,过滤任务“Translation”和语言“de”,你将看到超过100个模型。我将使用t5-small模型:

classifier = pipeline('translation_en_to_de', model='t5-small')

classifier('I love dogs!')
# >> [{'translation_text': 'Ich liebe Hunde!'}]

就这样!有关管道可以执行的所有任务的完整列表,请查看此wiki页面:https://huggingface.co/transformers/main_classes/pipelines.html#the-pipeline-abstraction

结论

在本文中,你已经阅读了BERT模型是如何工作的以及它是如何训练的。此外,你已经看到了使用Hugging Face Transformers管道是多么强大和简单。每个人都可以使用NLP !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值