Это репортаж о проекте, который я разработал для своего класса "Компьютерные сети и передача данных". Если вы хотите увидеть или внести свой вклад в исходный код, посетите мой репозиторий 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:
Хотя программу можно улучшить, мне удалось создать несколько интересных (а иногда и занимательных) стихов. Отделение заголовков новостей от их обычного формата позволяет объективно анализировать язык, который мы используем в наших средствах массовой информации, обнаруживать всеобъемлющие темы в нашем обществе и подходить к информации с новой точки зрения.