СОДЕРЖАНИЕ
1. ВВЕДЕНИЕ
2. БИЗНЕС-ПРОБЛЕМА
3. ФОРМУЛИРОВКА DL
4. ПОКАЗАТЕЛЬ ЭФФЕКТИВНОСТИ
5. АНАЛИЗ НАБОРА ДАННЫХ
6. ИССЛЕДОВАТЕЛЬСКИЙ АНАЛИЗ ДАННЫХ
7. ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА
8. СТРУКТУРИРОВАНИЕ ДАННЫХ
9. ИСПЫТЫВАЛИ РАЗНЫЕ МОДЕЛИ
10. РЕЗУЛЬТАТЫ И ОШИБКИ
11. РАЗВЕРТЫВАНИЕ
12. ДАЛЬНЕЙШАЯ РАБОТА
13. ПРОФИЛЬ
14. ССЫЛКИ
- ВВЕДЕНИЕ
Вдохновленный Gmail Smart Compose, в этом примере я попытался создать модель глубокого обучения, чтобы давать прогнозные предложения для ввода текста, которые уменьшат повторяющийся ввод и помогут пользователям делать рациональные прогнозы.
2. БИЗНЕС-ПРОБЛЕМА
Отправка сообщений в текстовом формате, будь то электронная почта, мгновенные сообщения, твиты, сообщения, по-прежнему остается важным способом общения. Ежедневно миллионы пользователей выражают свои чувства с помощью различных форм текстовых сообщений на различных платформах социальных сетей. Мы все сталкиваемся с периодами, когда мы думаем, что, если бы кто-то напечатал сообщения для нас, как мы думаем в наших умах.
Я пытался решить эту проблему с помощью интеллектуального или наводящего набора текста. В этом примере я намеревался спрогнозировать несколько следующих последовательностей слов на основе нескольких последних введенных последовательностей слов, что поможет улучшить взаимодействие с пользователем за счет сокращения повторного набора текста.
Цель этого тематического исследования – повысить удобство набора текста с помощью подсказок, немного вдохновленных исследовательской статьей Gmail о Gmail Smart Compose, если не сказать огромно.
3. ФОРМУЛИРОВКА DL
Поскольку наша бизнес-задача заключалась в предсказании последовательности слов на основе введенной последовательности слов, мы поставили эту задачу как задачу глубокого обучения от последовательности к последовательности.
4. ПОКАЗАТЕЛИ ЭФФЕКТИВНОСТИ
4.1 СИНИЙ БАЛЛ
BLEU означает двуязычный дублер.
Это алгоритм оценки качества текста, который был машинно переведен с одного естественного языка на другой.
Результатом BLEU всегда является число от 0 до 1. Это значение показывает, насколько похож текст-кандидат. относится к справочным текстам, причем значения ближе к 1 представляют более похожие тексты. Немногие человеческие переводы получат 1 балл, поскольку это будет означать, что кандидат идентичен одному из эталонных переводов.
4.2 ИДЕАЛЬНОЕ СОВПАДЕНИЕ
Идеальное совпадение для спрогнозированной фразы длиной N слов – процент спрогнозированных фраз, которые точно соответствуют первым N словам в исходном тексте. Я выбрал этот показатель из исследования Gmail Smart Compose.
5. АНАЛИЗ НАБОРА ДАННЫХ
Для этой задачи мы выбрали набор данных Enron Email. Набор данных электронной почты Enron содержит около 500 000 электронных писем, созданных сотрудниками корпорации Enron. Он был получен Федеральной комиссией по регулированию энергетики в ходе расследования краха Enron. Этот набор данных общедоступен на Kaggle.
6. ИССЛЕДОВАТЕЛЬСКИЙ АНАЛИЗ ДАННЫХ
6.1 Первый взгляд на набор данных
Как мы видим, сначала нам нужно было правильно структурировать данные для правильного выполнения EDA, потому что столбец файла состоял из имени/типа электронного письма/номера электронного письма в цепочке электронной почты, а столбец сообщения состоял из всего электронного письма. в виде текста со всеми идентификаторами smail и тегами html.
6.2 Проверка нулевых значений
Как мы видим, столбцы содержимого, в которых есть сообщение электронной почты, имеют нулевые значения.
6.3 Проверка распределения длины сообщений.
Наблюдения –
- Длина большинства электронных писем не превышает 2000.
- Некоторые электронные письма имеют длину сообщения от 2000 до 6000.
6.4 Проверка значений процентилей длины сообщений
При дальнейшем раскопках я узнал, что существуют различные сообщения от Outlook Migration Team@ENRON, которые содержат только нежелательные теги в поле сообщения, и электронные письма от Trade Counts and Volume, которые содержат только числовые значения в поле сообщения. Поэтому я решил отказаться от них, прежде чем переходить к предварительной обработке.
7. ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА
Мне пришлось удалить ненужные знаки препинания, специальные символы, HTML-теги, чтобы сделать данные чистыми. Мне также пришлось удалить цифры и цифры из сообщения, поскольку они могли содержать некоторую личную информацию о ком-то, например номер мобильного телефона или номер кредитной карты. Я также решил сократить фразы can’t to can not, will’t to will not и т. д.
Вот моя функция предварительной обработки
После выполнения базовой — предварительной обработки текста я решил разбить сообщения на отдельные предложения, чтобы упростить дальнейшее моделирование.
После разбиения на предложения в моем фрейме данных осталось более 2 миллионов предложений.
Идя дальше, я знал, что мне нужно структурировать данные для нужд модели кодировщик-декодер, и мне нужно будет разбить их дальше, что приведет к большему количеству точек данных. А поскольку у меня были вычислительные ограничения, я решил продвинуться дальше, используя 200 000 точек данных.
8. СТРУКТУРИРОВАНИЕ ДАННЫХ
Я структурировал данные в таком формате, что я сгруппировал каждую точку данных в группу из 5. И для каждой группы я взял первые три слова как encoder_input, третье и четвертое слово как decoder_input и четвертое и пятое слова. слово как decoder_output.
Это создаст ощущение предсказания следующих последовательностей в модели.
Я также хотел внедрить символьные n_grams после прочтения исследовательской работы Gmail, но из-за вычислительных ограничений я сохранил данные на уровне слов.
Я также добавил начальные и конечные маркеры, чтобы модель знала, когда начинать и заканчивать прогнозирование.
После разделения данных на обучение и проверку я приступил к токенизации и дополнению.
Я использовал 100 мерных векторов перчаток для встраивания слов.
9. ИСПЫТЫВАЛИ РАЗНЫЕ МОДЕЛИ
Для этой задачи я испробовал две разные модели: первую — простую модель кодировщика-декодера, а вторую — с механизмом внимания.
Я написал пользовательские модели с подклассами, поскольку это давало различные низкоуровневые элементы управления моделями.
9.1 Кодировщик — модель декодера
Вывод модели был таким, как показано ниже
9.2 Кодер — декодер с вниманием
Я реализовал модель внимания только с функцией точечной оценки и в будущем намерен реализовать и функции оценки.
Вывод модели следующий:
10. РЕЗУЛЬТАТЫ И ОШИБКИ
Из-за вычислительных ограничений мне не удалось обучить модель более чем на 50 эпох, поэтому результаты были средними.
СИНИЙ БАЛЛ для простой модели кодировщик-декодер составил около 0,20, а для модели внимания — 0,1.
Показатель идеального соответствия помог мне лучше проанализировать результаты. Были точки, где результаты были очень хорошими, и было больше точек, где результаты были средними, а также были точки, где результаты были очень плохими.
Я использовал простую модель Encoder-Decoder для развертывания, так как модель Attention требовала обучения для большего количества эпох, чтобы получить лучшие результаты.
Еще копаться —
Модель дает хорошие прогнозы для точек данных, связанных с работой, политическими заявлениями или руководством. Модель прогнозирует наихудший вариант для случаев, когда есть аббревиатуры, упоминаются географические названия или слова разделяются символом.
Решение ошибок —
Решение ошибок заключается только в обучении модели для большего количества эпох и использовании большего количества точек данных для обучения.
11. РАЗВЕРТЫВАНИЕ
Я развернул модель на инстансе Amazon EC2 с помощью Streamlit для создания интерактивного интерфейса.
Вот развернутая модель —
12. ДАЛЬНЕЙШАЯ РАБОТА
- Я могу улучшить результаты модели в будущем с большей вычислительной мощностью, поскольку я обучаю ее со всеми доступными данными и для большего количества эпох.
- Я также могу попробовать символ n_grams.
- Также можно использовать встраивания BERT для получения лучших результатов от модели.
- Я также буду обучать моделей GPT.
13. ПРОФИЛЬ
14. ССЫЛКИ
Идеи проекта глубокого обучения: генерация текста с использованием рекуррентных нейронных сетей (RNN) и…
Когда я начал вводить заголовок этой статьи, «генерация текста с использованием рекуррентных n…, инструмент, в котором я печатаю, Google…in.springboard.com»