BERT是一个基于Transformer的模型,以自监督的方式在大型英语数据集上进行预训练。 这意味着BERT模型仅对原始文本数据进行预训练,没有人为的干预。其BERT模型通过自动过程从这些数据集中生成输入数据和标签。确切的说,BERT模型是为了两个目标而进行预训练的。:

打开网易新闻 查看精彩图片

BERT

屏蔽语言建模 (MLM):取一个句子,模型随机屏蔽输入中 15% 的单词,然后通过模型运行训练,并预测屏蔽的单词。 这与传统的循环神经网络 (RNN) 不同,传统的循环神经网络通常会一个接一个的输入单词,也不同于 GPT 等自回归模型。

打开网易新闻 查看精彩图片

句子预测(NSP):模型在预训练期间连接屏蔽两个句子作为输入。数据有时2个句子是相邻的句子,有时则不是,模型需要进行训练,来判断2个句子的相关性。

打开网易新闻 查看精彩图片

BERT模型最初发布了2个版本,用于区分大小写和不区分大小写的输入文本。随着模型的发布,中文和多语言模型也随之推出。本期我们就基于上面的模型来看看BERT是如何进行完形填空的。

在使用BERT模型前,我们需要在自己的环境下安装Transformers模型,其安装也很简单,只需输入如下命令即可。

!pip install transformers'''Collecting transformersRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.65.0)Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.14.1->transformers) (2023.6.0)Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.14.1->transformers) (4.6.3)Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (1.26.16)Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2023.5.7)Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2.0.12)Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4)Installing collected packages: tokenizers, safetensors, huggingface-hub, transformersSuccessfully installed huggingface-hub-0.16.2 safetensors-0.3.1 tokenizers-0.13.3 transformers-4.30.2'''

安装完成transformers后,我们新建一个py文件,并输入如下代码。

from transformers import pipelinemasker = pipeline('fill-mask', model='bert-large-uncased')masker("I am so [MASK], I need to buy something to eat")

首先我们从transformers库中导入pipeline,并使用pipeline建立一个大语言模型,此模型基于BERT训练好的bert-large-uncased模型,代码运行时会自动下载相关预训练模型。