Создание заголовков 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 % — для оценки ее производительности.

Вывод

Хотя мы все еще можем быть далеки от участия в специальном стендапе на компьютере, в комедийном языке присутствуют шаблоны, которые современные инструменты обработки естественного языка способны распознавать.