В связи с этим возникает вопрос: может ли компьютер генерировать подобные тексты самостоятельно?
Валентин Кассарниг (Valentin Kassarnig) из университета Массачусетса доказал, что такое возможно. Он опубликовал программу (репозиторий на гитхабе), которая делает именно это: генерирует политические речи, удивительно похожие на настоящие. Подробнее о генераторе политических текстов автор рассказывает в научной статье.
В разработке генератора Валентин использовал базу из почти 4000 фрагментов политических дебатов в Конгрессе США. В базу вошло более 50 000 предложений текста, в каждом из которых в среднем 23 слова. Кассарниг также классифицировал каждое выступление по политической партии (республиканцы/демократы), а также по принципу положительного/отрицательного отношения к теме обсуждения.
Впрочем, самое важное в том, как анализировать эту базу. Автор пробовал разные варианты, но в итоге остановился на N-граммах.
N-грамма — последовательность из n элементов. В данном случае, это последовательность слов и фраз.
Сначала он разметил в текстах все части речи (существительное, глагол, прилагательное и т.д.). Затем использовал следующий алгоритм: в базе ищутся все 6-граммы и вычисляется вероятность появления определённого слова или фразы, в зависимости от того, какие пять стоят перед ним. «Это позволяет нам очень быстро определить все слова, какие могут появиться после пяти известных предыдущих слов, и какова вероятность появления каждого из них», — говорит Кассарниг.
Процесс генерации текстов следует из этого алгоритма. Программе указывают политическую направленность речи: это должна быть речь республиканского или демократического кандидата. Алгоритм использует базу 6-граммов для этой категории, чтобы выбрать полный набор 5-граммов, которые используются для начала таких речей. Потом случайным образом выбирается один из этих 5-граммов, вычисляется наиболее вероятное слово, завершающее 6-грамм. Ну, а потом она начинает предсказывать слово за словом до конца текста.
Есть ещё пару трюков, конечно. Например, программа знает вероятность упоминания определённой темы в речи — и какие темы будут присутствовать рядом с этой.
Результаты на удивление хороши.
Кассарниг изучил результаты и считает, что грамотность и плавность перехода от предложения к предложению очень даже неплохие.
Так что англоязычные политики получили в свои руки инструмент, чтобы быстренько составлять речи, если вдруг нужно внезапно выступить перед аудиторией, а им нечего сказать.
Программа может также генерировать другие тексты. Например, посты для блога и новостные заметки :).
Поскольку исходный код опубликован в открытом доступе, то любые улучшения и форки поощряются.
Комментарии (21)
EndUser
21.01.2016 17:39http://www.explainxkcd.com/wiki/index.php/1068:_Swiftkey и, следовательно, https://blog.swiftkey.com/swiftkey-on-xkcd/
Hellsy22
21.01.2016 17:59+7Я в юности делал на таком же принципе генератор легко запоминающихся паролей — загнал в него кучу английских и русских текстов с lib.ru и для каждой буквы вес рандома опирался на статистику ее встречи после предыдущих двух (N=3 в терминологии статьи)
В итоге получались пароли типа: zingledi, actalflo, raliseed, bachumen, ficharea, metistra и т.д.
Но идея использовать такой же принцип для слов — великолепна. Осталось дождаться кого-нибудь, кто сможет натравить на все это дело нейронную сеть и создать идеального блоггера.Fedorkov
22.01.2016 17:25Я тоже в школьные годы сделал генератор легко запоминающихся паролей, только генерировал задом наперёд, потому что в английском разных окончаний меньше, чем разных начал слова.
А потом я прочитал о такой программе в «Жемчужинах программирования» (гл. 15.3), и там тоже было о генерации текстов из слов или фраз.
EminH
21.01.2016 18:18+29Ничего нового:
Универсальный код речейgleb_l
21.01.2016 22:35+3Есть и в художественном варианте — вспомните знаменитое Остапо-Бендерское Незаменимое Пособие ...
qwertyhp
21.01.2016 23:12Ой, а можно полную версию мануала? Нет, правда — «расширив и углубив», можно создать такой чат-бот — блеск!
Пожалуйста, если есть что выложить — выложите! Не обязательно по политике — интересна любая информация! Ссылки, исходники, алгоритмы…
За синтетическим программным трепом — будущее!
k12th
21.01.2016 18:48+22Если кто-то не верил, что любого чиновника можно заменить скриптом на питоне, то вот.
Alexey2005
21.01.2016 23:22+2Пока что это только западных чиновников касается. Наши покреативнее будут. Они умудряются постоянно такие идеи выдавать, какие не то что скрипту, но даже и человеку ещё не всякому создать по силам.
А главное, какова эффективность! Тут как интервью с очередным чиновником, рассказывающим о новых инициативах и законопроектах, так у всего рунета подгорать начинает. Даже не представляю себе, как должен выглядеть скрипт, способный на такое.k12th
21.01.2016 23:27+2Да просто допуск по вероятности снизить и эффект не отличить:)
С инициативой сложнее. Придется генерить несколько текстов и оценивать программой из соседнего софта, про сарказм, и отбирать соответственно те, которые прошли едва-едва.
gionet
21.01.2016 19:10+1Черномырдина все равно не сможет переплюнуть =)))
gleb_l
21.01.2016 22:18+1Прекрасно. Раньше хоть политкорм для паствы писал (чисто по биологическим признакам) человек. Теперь корм генерирует робот, но паства будет продолжать кушать все равно, ибо буллшит синтетический оказался «идентичен натуральному» :)
PS ошибся уровнем коммента — предназначался исходной статье )
Sadler
22.01.2016 07:45У нас это было задание на неделю на втором курсе универа, а тут целая статья. Да, с русским языком всё несколько сложнее, ибо результат становится куда лучше, если слова сначала привести к начальной форме и провести замену по словарю синонимов. В противном случае база для русского языка сильно разрастается, а результат остаётся не очень вменяемым.
2fidel
22.01.2016 15:14Ну не все политические речи такие уж сложные для воспроизведения.
Есть, например, такой замечательный политик как Петр Полячкин
densss2
Благодарю тебя, товарищ Валентин Кассарниг! Теперь ничто не сдерживает меня от пути в большую политику!
senia
Учитесь у великих: youtu.be/pytPGA5AY7U?t=10s
densss2
Спасибо! Проштудировал весь сериал!