Многие замечали, что речи политиков имеют довольно стандартный формат, они похожи друг на друга. Нужно несколько раз повторить основные тезисы, используя стандартные формулировки. Такое впечатление, что есть алгоритм, который задаёт структуру таких речей.
В связи с этим возникает вопрос: может ли компьютер генерировать подобные тексты самостоятельно?
Валентин Кассарниг (Valentin Kassarnig) из университета Массачусетса доказал, что такое возможно. Он опубликовал программу (репозиторий на гитхабе), которая делает именно это: генерирует политические речи, удивительно похожие на настоящие. Подробнее о генераторе политических текстов автор рассказывает в научной статье.
В разработке генератора Валентин использовал базу из почти 4000 фрагментов политических дебатов в Конгрессе США. В базу вошло более 50 000 предложений текста, в каждом из которых в среднем 23 слова. Кассарниг также классифицировал каждое выступление по политической партии (республиканцы/демократы), а также по принципу положительного/отрицательного отношения к теме обсуждения.
Впрочем, самое важное в том, как анализировать эту базу. Автор пробовал разные варианты, но в итоге остановился на N-граммах.
N-грамма — последовательность из n элементов. В данном случае, это последовательность слов и фраз.
Сначала он разметил в текстах все части речи (существительное, глагол, прилагательное и т.д.). Затем использовал следующий алгоритм: в базе ищутся все 6-граммы и вычисляется вероятность появления определённого слова или фразы, в зависимости от того, какие пять стоят перед ним. «Это позволяет нам очень быстро определить все слова, какие могут появиться после пяти известных предыдущих слов, и какова вероятность появления каждого из них», — говорит Кассарниг.
Процесс генерации текстов следует из этого алгоритма. Программе указывают политическую направленность речи: это должна быть речь республиканского или демократического кандидата. Алгоритм использует базу 6-граммов для этой категории, чтобы выбрать полный набор 5-граммов, которые используются для начала таких речей. Потом случайным образом выбирается один из этих 5-граммов, вычисляется наиболее вероятное слово, завершающее 6-грамм. Ну, а потом она начинает предсказывать слово за словом до конца текста.
Есть ещё пару трюков, конечно. Например, программа знает вероятность упоминания определённой темы в речи — и какие темы будут присутствовать рядом с этой.
Результаты на удивление хороши.
Кассарниг изучил результаты и считает, что грамотность и плавность перехода от предложения к предложению очень даже неплохие.
Так что англоязычные политики получили в свои руки инструмент, чтобы быстренько составлять речи, если вдруг нужно внезапно выступить перед аудиторией, а им нечего сказать.
Программа может также генерировать другие тексты. Например, посты для блога и новостные заметки :).
Поскольку исходный код опубликован в открытом доступе, то любые улучшения и форки поощряются.
Автор: alizar