NLPer,你知道最近很火的自然言语处理库吗?

图灵汇官网

引言

想象一下,我们可以通过自然语言处理(NLP)模型实现谷歌翻译级别的功能,而在Python中只需几行代码就能完成。现在,这一切已经变为现实!借助Hugging Face提供的PyTorch-Transformers,我们可以在自己的电脑上轻松实现这些功能。

NLP的快速发展

近年来,NLP领域取得了飞速的发展。每一篇新论文、每一个框架和库都在推动这个领域的进步。由于开放的研究文化和大量的免费文本数据,如今几乎没有我们无法做到的事情。

NLP的核心概念

自然语言处理(NLP)的目标是教会计算机理解人类语言的复杂性。当前,最先进的NLP模型大多基于Transformers框架。这些模型由科技巨头如谷歌、Facebook、微软和亚马逊开发,包括BERT、GPT-2、Transformer-XL和XLNet等。

PyTorch-Transformers简介

PyTorch-Transformers是一个包含预训练模型的库,适用于多种NLP任务。它涵盖了多个最先进的模型,如BERT、GPT-2、Transformer-XL和XLNet。这些模型不仅强大,而且易于使用。

安装PyTorch-Transformers

在Python中安装PyTorch-Transformers非常简单。你只需运行以下命令:

bash pip install pytorch-transformers

如果你使用Google Colab,可以运行以下命令:

bash !pip install pytorch-transformers

使用GPT-2进行文本生成

GPT-2是一个强大的文本生成模型,可以用于完成文本补全任务。以下是如何使用GPT-2来预测下一个单词:

```python import torch from pytorch_transformers import GPT2Tokenizer, GPT2LMHeadModel

加载预训练模型tokenizer

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')

对文本输入进行编码

text = "What is the fastest car in the" indexed_tokens = tokenizer.encode(text)

转换为PyTorch张量

tokenstensor = torch.tensor([indexedtokens])

加载预训练模型

model = GPT2LMHeadModel.from_pretrained('gpt2') model.eval()

如果你有GPU,可以将所有内容转移到GPU

tokenstensor = tokenstensor.to('cuda') model.to('cuda')

预测所有的tokens

with torch.nograd(): outputs = model(tokenstensor) predictions = outputs[0]

获取预测的单词

predictedindex = torch.argmax(predictions[0, -1, :]).item() predictedtext = tokenizer.decode(indexedtokens + [predictedindex])

输出预测单词

print(predicted_text) ```

使用不同模型生成文本

除了GPT-2,我们还可以使用其他模型生成更复杂的文本。例如,我们可以使用GPT-2、Transformer-XL和XLNet来生成连贯的文本片段。

使用GPT-2生成完整文本

bash !python pytorch-transformers/examples/run_generation.py --model_type=gpt2 --length=100 --model_name_or_path=gpt2

使用XLNet生成文本

bash !python pytorch-transformers/examples/run_generation.py --model_type=xlnet --length=50 --model_name_or_path=xlnet-base-cased

使用Transformer-XL生成文本

bash !python pytorch-transformers/examples/run_generation.py --model_type=transfo-xl --length=100 --model_name_or_path=transfo-xl-wt103

BERT的遮盖语言模型训练

BERT是一个强大的预训练模型,可以用于多种NLP任务。其中一个重要的任务是遮盖语言模型(Masked Language Model),即预测被遮盖的单词。以下是如何使用PyTorch-Transformers完成这一任务:

```python import torch from pytorch_transformers import BertTokenizer, BertForMaskedLM

加载预训练模型tokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

标记化输入

text = "[CLS] Who was Jim Henson ? [SEP] Jim Henson was a puppeteer [SEP]" tokenized_text = tokenizer.tokenize(text)

掩码一个标记

maskedindex = 8 tokenizedtext[maskedindex] = '[MASK]' indexedtokens = tokenizer.converttokenstoids(tokenizedtext)

创建PyTorch张量

tokenstensor = torch.tensor([indexedtokens])

加载预训练模型

model = BertForMaskedLM.from_pretrained('bert-base-uncased') model.eval()

如果你有GPU,可以将所有内容转移到GPU

tokenstensor = tokenstensor.to('cuda') model.to('cuda')

预测所有的tokens

with torch.nograd(): outputs = model(tokenstensor) predictions = outputs[0]

获取预测的单词

predictedindex = torch.argmax(predictions[0, maskedindex]).item() predictedtoken = tokenizer.convertidstotokens([predicted_index])[0]

输出预测单词

print('Predicted token is:', predicted_token) ```

总结

通过使用PyTorch-Transformers,我们可以轻松地实现各种先进的NLP任务,如文本生成和遮盖语言模型训练。PyTorch-Transformers不仅提供了丰富的预训练模型,还提供了简便的API和脚本,使得开发者可以快速上手并实现复杂的NLP功能。

本文来源: 图灵汇 文章作者: 龙清姣