Это репортаж о проекте, который я разработал для своего класса "Компьютерные сети и передача данных". Если вы хотите увидеть или внести свой вклад в исходный код, посетите мой репозиторий GitHub.

Я тотальный, непримиримый литературовед. Когда мой профессор попросил нас создать окончательный проект, реализующий какой-либо интерфейс сетевого API, я хотел совместить свою любовь к компьютерным наукам с моей любовью к письменному слову.

Так родилась идея Haiku the News, приложения на Python, которое генерирует поэзию хайку из заголовков ежедневных новостей или статей, связанных с ключевыми словами. С помощью созданной компьютером поэзии мы можем анализировать язык, используемый в наших средствах массовой информации, и в то же время делать шаг назад от эмоциональной манипуляции, используемой в заголовках для привлечения нашего внимания.

Процесс

Чтобы получить доступ к живой ленте новостных статей со всего мира, я решил использовать Google News API. Это позволило мне извлекать заголовки и описания новостей, а также фильтровать их по ключевым словам или публикациям. Документация по python очень полезна, поэтому настроить подключение и проанализировать данные было относительно легко.

Для создания хайку я использовал библиотеки PyHyphen и Natural Language Toolkit, которые имеют открытый исходный код и доступны для Python. Я хотел, чтобы мое хайку примерно соответствовало западному образцу 5–7–5, хотя традиционные хайку не всегда строго соответствовали этой структуре. Я также хотел, чтобы различные типы слов формировали связное сообщение.

Когда я взял статью из News API, она выглядела так:

Затем я использовал две библиотеки обработки языка, чтобы назначить каждому слову его часть речи и количество слогов, например:

Затем я пропустил его через алгоритм для выбора слов с использованием модели части речи, которая примерно соответствует количеству слогов 5–7–5, и в итоге получилось следующее:

Ему явно не хватает грамматической грамотности, но количество слогов соответствует формату хайку, и общая тема заголовка верна. Чтобы улучшить естественный язык, было бы полезно реализовать общую модель генерации NLP, такую ​​как цепь Маркова или CNN (однако это выходит за рамки этой статьи).

Результаты

Вот некоторые из моих любимых сгенерированных стихотворений из программы Haiku the News:

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