Создание заголовков The Onion с помощью цепей Маркова и других махинаций.
Посмотрите данные и исходный код этого проекта в моем репозитории GitHub.
Могут ли компьютеры научиться быть забавными? Шансы не в их пользу, но некоторые ученые начали увлекаться компьютерным юмором. [подробнее о связанных работах здесь]. Я решил попробовать свои силы в программировании комедии на машине, поэтому я провел исследование с помощью машинного обучения в наборе данных, состоящем примерно из 3000 заголовков новостей из The Onion.
Получение и очистка данных
Существует несколько отличных API новостей, но ради скорости и простоты я решил получить данные заголовков из твиттер-аккаунта The Onion с помощью бесплатного инструмента AllMyTweets. После загрузки я написал быструю функцию на питоне, которая отфильтровывала бы любые даты и время, дескрипторы твиттера, URL-адреса и смайлики, оставляя мне текстовый файл только с хорошими вещами.
Создание заголовков
После очистки я использовал этот набор текстовых данных для построения марковской модели первого порядка. Вы можете узнать о них больше здесь, но функционально они включают в себя большую матрицу каждого уникального слова в наборе данных и вероятность того, что конкретное слово будет следовать за каждым другим словом. Затем эти вероятности используются для создания текста, который имеет ту же структуру, что и исходные документы. Как правило, для получения сносных результатов следует реализовать марковскую модель более высокого порядка, но, поскольку заголовки The Onion короткие и следуют схожим комедийным шаблонам, первый порядок работает отлично и его проще реализовать.
Вот некоторые из моих любимых результатов:
Неплохо для машины, которая понимает только два целых числа, а?
При запуске той же модели на наборах данных из The Economist и BBC я получил гораздо худшие результаты. Поскольку писатели The Onion склонны следовать схожим шаблонам в своих заголовках, таких как «Местный человек ____» или «Исследование: ___ % от ____», марковская модель более низкого порядка может распознавать эти тенденции и имитировать их.
Прогнозирование сатиры против серьезных заголовков
Генерация заголовков исключительно забавна, но что это говорит нам о способности компьютера распознавать сатирический язык? Я хотел посмотреть, как компьютер будет работать, пытаясь предсказать заголовки The Onion на основе набора данных с законными заголовками новостей. Для этого я реализовал сверточную нейронную сеть с классификацией текста в Tensorflow.
Как оказалось, статьи The Onion достаточно различны, чтобы их можно было точно выбрать примерно в 89% случаев!
Данные для этой модели состояли примерно из 3 000 сатирических заголовков и 12 000 несатирических заголовков. 90 % данных использовались для обучения модели, а 10 % — для оценки ее производительности.
Вывод
Хотя мы все еще можем быть далеки от участия в специальном стендапе на компьютере, в комедийном языке присутствуют шаблоны, которые современные инструменты обработки естественного языка способны распознавать.