BERT в машинном обучении
В этой статье я собираюсь рассказать вам об алгоритме BERT в машинном обучении для встраивания слов, созданных Google для машинного обучения. Здесь я покажу вам, как начать работу с BERT в машинном обучении, создав вложения слов.
Что такое алгоритм BERT в машинном обучении?
BERT означает Bidirectional Encoder Representations from Transformers (двунаправленные представления кодировщика от Transformers). BERT в машинном обучении – это модели для предварительно обученных языковых представлений, которые можно использовать для создания моделей для задач обработки естественного языка.
Вы можете использовать эти модели для извлечения высококачественных языковых функций из ваших текстовых данных, или вы можете уточнить эти модели для конкретных задач, таких как классификация, распознавание функций, ответы на вопросы и пр. операций с вашими данными, чтобы создать состояние художественных прогнозов.
Зачем нужны вложения BERT для НЛП?
Во-первых, вложения BERT очень полезны для расширения ключевых слов, семантического поиска и получения прочей ценной информации. Например, если вы хотите сопоставить вопросы клиентов или исследования с ответами на вопросы, или хорошо изученными исследованиями, эти представления помогут вам получить точные результаты, которые соответствуют намерениям клиентов и контекстуальному значению, даже при отсутствии перекрывающихся ключевых слов или фраз.
Во-вторых, возможно, самой важной причиной является то, что эти векторы могут использоваться в качестве входных данных для высококачественных функций в последующих моделях. Модели НЛП, такие как LSTM или CNN, требуют ввода данных в виде цифровых векторов, что обычно означает перевод таких функций, как словарь и части речи, в цифровые представления.
Реализация алгоритма BERT
Для реализации алгоритма BERT в машинном обучении с использованием Python необходимо установить пакет PyTorch. Я выбрал PyTorch, потому что он обеспечивает хороший баланс между высокоуровневыми API и кодом TensorFlow. Теперь давайте реализуем необходимые пакеты, чтобы приступить к выполнению задачи:
!pip install torch import torch !pip install pytorch_pretrained_bert from pytorch_pretrained_bert import BertTokenizer, BertModel, BertForMaskedLM import matplotlib.pyplot as plt %matplotlib inline tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
Форматирование ввода
Поскольку BERT – это предварительно обученная модель, которая ожидает входные данные в определенном формате, нам потребуются:
- Специальный токен [SEP], чтобы отметить конец предложения или разделение между двумя предложениями.
- Специальный токен [CLS] в начале нашего текста. Этот токен используется для задач классификации, но BERT ожидает его независимо от вашего приложения.
text = " Это пример предложения для встраивания слов BERT " marked_text = "[CLS] " + text + " [SEP]" print (marked_text)
Результат:
[CLS] Это пример предложения для встраивания слов BERT [SEP]
Токенизация
Модель BERT предоставляет свой токенизатор, который мы импортировали выше. Давайте посмотрим, как он обрабатывает приведенный ниже образец текста:
tokenized_text = tokenizer.tokenize(marked_text) print (tokenized_text)
Результат:
['[CLS]', 'this', 'is', 'the', 'sample', 'sentence', 'for', 'bert', 'word', 'em', '##bed', '##ding', '##s', '[SEP]']
Исходный текст разделен на более мелкие подслова и символы. Два знака решетки, которые предшествуют некоторым из этих подслов, показывают, как наш токенизатор указывает, что это подслово или символ является частью большего слова и ему предшествует другое подслово.
Конвертация токенов в ID
Чтобы токенизировать слово в соответствии с этим шаблоном, токенизатор сначала проверяет, есть ли слово в словаре целиком. В противном случае он пытается разбить слово на как можно больше дополнительных слов, содержащихся в словаре, и в крайнем случае разбивает слово на отдельные символы. Обратите внимание, что из-за этого мы по-прежнему можем представлять слово как минимум как набор всех его символов:
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text) for tup in zip(tokenized_text, indexed_tokens): print(tup)
Результат:
('[CLS]', 101)
('this', 2023)
('is', 2003)
('the', 1996)
('sample', 7099)
('sentence', 6251)
('for', 2005)
('bert', 14324)
('word', 2773)
('em', 7861)
('##bed', 8270)
('##ding', 4667)
('##s', 2015)
('[SEP]', 102)
Таким образом, вы можете подготовить вложения слов с помощью модели BERT для любой задачи НЛП. Надеюсь, вам понравилась эта статья.