Антон Гордон — архитектор ИИ
Введение
Во вселенной обработки естественного языка (NLP) главенствует BERT (представление двунаправленного кодировщика от трансформеров). Его инновационная архитектура и превосходные возможности распознавания текста изменили способ обработки языковых данных. В этой статье вы узнаете, как создать приложение для анализа настроений с помощью BERT, а также пошагово развернете приложение на AWS с помощью Docker.
Прежде чем погрузиться в техническую часть, давайте убедимся, что вы готовы следовать этому руководству. Вам потребуется базовое понимание Python и его библиотек, некоторое знакомство с PyTorch и HuggingFace Transformers, а также понимание сервисов AWS и Docker. Кроме того, убедитесь, что на вашем компьютере установлены и настроены все необходимые инструменты.
BERT для анализа настроений
Для приложения мы будем использовать BERT для прогнозирования настроений в обзорах фильмов. Наш набор данных будет состоять из обзоров фильмов, помеченных как положительные или отрицательные. Основные шаги включают в себя токенизацию наших текстовых данных, передачу их в предварительно обученную модель BERT и обучение окончательного уровня классификации для прогнозирования тональности.
Начнем с токенизации с помощью python:
from transformers import BertTokenizer
# Load pre-trained model tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
def tokenize_reviews(text):
# Add special tokens takes care of adding [CLS], [SEP], <s>... tokens in the right way for each model.
marked_text = "[CLS] " + text + " [SEP]"
tokenized_text = tokenizer.tokenize(marked_text)
return tokenized_text
После токенизации мы можем передать эти входные токены предварительно обученной модели BERT, например:
import torch
from torch import nn
from transformers import BertModel
# Load pre-trained model
model = BertModel.from_pretrained('bert-base-uncased')
def encode_reviews(tokenized_text):
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
segments_ids = [1] * len(tokenized_text)
# Convert inputs to PyTorch tensors
tokens_tensor = torch.tensor([[indexed_tokens]])
segments_tensors = torch.tensor([[segments_ids]])
# Predict hidden states features for each layer
with torch.no_grad():
encoded_layers, _ = model(tokens_tensor…