Отставной козы продюсер: как сделать генератор заголовков для Дарьи Донцовой



У компьютерной лингвистики много применений: от поисковиков до банков, от права до филологии. А еще ее можно использовать для бесполезных, но смешных задач. Например, мы сделали генератор названий книг Дарьи Донцовой. Местами программа справляется не хуже человека. А все потому, что алгоритм не просто порождает случайные комбинации — он воспроизводит творческий процесс.



Как устроены названия книг Донцовой?



Посмотрите на этот список:



— Дьявол носит лапти

— Депутат кислых щей

— Мопс в мешке

— Чудеса в кастрюльке

— Дискета всё стерпит



Здесь есть настоящие книги Донцовой, а есть — выдуманные алгоритмом (угадаете, где какие?). Все они устроены похоже. Это устойчивые выражения, в которых одно слово заменено на близкое по смыслу: был профессор кислых щей — стал депутат. Часто так же делают заголовки в газетах.



Как устроен алгоритм?



Новые слова появляются в названиях не случайно: они связаны с сюжетом книг. Поэтому логично сделать так: на вход программе будет приходить то слово, которое мы хотим увидеть в сгенерированном названии. А дальше пусть алгоритм подбирает под это слово какую-нибудь поговорку или фразеологизм, где есть что-то похожее по смыслу. Например, написали сникерс — получили «кнут и сникерс» (вместо «кнута и пряника»).



Как мы делали генератор?



1. Мы взяли список фразеологизмов русского языка, а также заглавия ста классических книг (у Донцовой бывают названия с отсылками к классике: «Лягушка Баскервилей», «Пролетая над гнездом Индюшки»...). Из наших списков мы отобрали строчки длиной в 3-5 слов: они больше подходят под формат названий.

2. Для определения семантической близости слов использовали векторную модель (подробнее о векторных моделях) от команды @RusVectores. Мы взяли модель, обученную на Википедии и Национальном корпусе русского языка. Она умеет понимать, что сникерс и пряник ближе, чем сникерс и помидор, а кукушка похожа на индюшку.

3. Чтобы названия были грамматически согласованы, мы применили морфологический анализатор pymorphy2. В программе мы задали условие: ищем только слова в именительном падеже и с тем же родом, что у предложенного нами слова. Это помогло нам избавиться от случаев типа «моя коттедж с краю».



Что получилось?



Во-первых, раскроем интригу. Не Донцовой, а бездушным алгоритмом порождены три из пяти названий, которые мы показывали в начале: «Депутат кислых щей», «Мопс в мешке» и «Дискета всё стерпит». А вот еще несколько примеров работы генератора (ввод => выдача):



мартышка => где мартышка зарыта

телепузик => телепузик на побегушках

продюсер => отставной козы продюсер



Радует, что «Продюсер козьей морды» — это самое что ни на есть настоящее название книги Донцовой. Так что машина отлично проникла в логику человека.



Подробнее об устройстве алгоритма, а также ошибках, которые он допускает, и возможных доработках читайте тут:

https://sysblok.ru/philology/otstavnoj-kozy-prodjuser-generiruem-nazvanija-knig-dari-doncovoj/



Мария Подрядчикова