Антон Гордон — архитектор ИИ
Введение
Во вселенной обработки естественного языка (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…