Загрузил Артем Петренко

bert2 (1)

реклама
ИСПРАВЛЕНИЕ И АНАЛИЗ ОШИБОК В ТЕКСТЕ С
ПОМОЩЬЮ BERT
Выполнил студент 65 группы:
Петренко Артем
Написание научных статей
Каждый год тысячи студентов пишут научные статьи на различные тематики. В
отличие от самого создания работы, это очень скучный процесс, тратящий много сил и
энергии, которую студенты и магистранты могли бы потратить на разработку или изучение
интересных и полезных решений.
Подготовка данных для обучения
Я только начал подготавливать набор маркированных данных для русского языка,
поэтому был использован готовый на английском. Позже будет показан пример работы и на
нашем языке.
0 – предложение с ошибкой, 1 – без.
Каждое предложение будет подгоняться под max_length, а именно 64 символа,
после них всегда идет одна вода.
CLS и SEP
Использовался только стандартный токенизатор BERT, слова, не несущие смысл, не
должны были удаляться, так как в итоговом результате должно было получиться точно такое
же предложение, но с исправленными с смысловами и грамматическими ошибками, ни одному
человеку не будет удобно читать текст из лемм.
Неизмененное: Our friends won't buy this analysis, let alone the next one we propose.
Разбитое на токены: ['our', 'friends', 'won', "'", 't', 'buy', 'this', 'analysis', ',', 'let', 'alone', 'the',
'next', 'one', 'we', 'propose', '.']
Идентифи токенов: [2256, 2814, 2180, 1005, 1056, 4965, 2023, 4106, 1010, 2292, 2894,
1996, 2279, 2028, 2057, 16599, 1012]
Маскированные слова
BERT – это двунапревленная модель, поэтому некоторые слова требуется заменить
на [mask], чтобы анализ предложения не попадал в цикл.
Токенизация и дополнение
Для машинного обучения требуется перевести каждое слово в число/вектор. Для этого
использовался DistilBERTTokenizer. Он не только заменит слова, но и добавит специальные токены CLS и
SEP, о которых было рассказано в прошлой презентации.
Каждое предложение начинается с 101 – идентификатора CLS.
Некоторые сообщения, особенно не спам, могут содержать меньше 11 слов, поэтому следует их
дополнить.
Открой
Использование BERT
После обработки сообщений, мы можем начать использовать их.
Создадим тензор для матрицы внимания и дополненных сообщений.
Первый элемент в encoder_hidden_state и нужен. Эта матрица имеет форму
(number_of_sentences, max_sentence_length, 768). В этой матрице нужен только первый столбец каждой
строки, в который встроен CLS эмбендинг, который будет использован для определения спама.
Визуализация
Можно наглядно посмотреть на распределение данных, чтобы оценить точность
кодирования.
Создадим несколько фреймов для отрисовки графиков.
Визуализация
Каждая точка на графике представляет сообщение. Желтый – спам, синий – не спам.
На графике видно, что спам сообщения находятся близко к друг другу, а значит BERT хорошо
закодировал сообщения. Иногда бывают выбросы, но и набор данных был не самым лучшим.
Визуализация
Иногда складывается ощущение, что спам сообщения имеют большую длину, чем от
других пользователей. Имея готовый набор данных, это легко проверить.
И правда, в спам сообщениях,
обычно, больше слов.
Визуализация
Проверим, насколько удачна была идея с распознаванием сообщений по первым 11
словам.
Примерно 90% сообщений были угаданы правильно. Проверим, насколько удачной
была идея с таким распознаванием, протестировав для большего количества слов.
Анализ результата
Для 11 слов
Для 5 слов
Для 20 слов
Как видно из вывода точности, нейронная сеть легко отфильтровывает спам.
Единственная проблема в том, что данные для подачи были собраны
самостоятельно и сильно повлияли на точность анализа.
Скачать