Отставной козы продюсер: как сделать генератор заголовков для Дарьи Донцовой
У компьютерной лингвистики много применений: от поисковиков до банков, от права до филологии. А еще ее можно использовать для бесполезных, но смешных задач. Например, мы сделали генератор названий книг Дарьи Донцовой. Местами программа справляется не хуже человека. А все потому, что алгоритм не просто порождает случайные комбинации — он воспроизводит творческий процесс.
Как устроены названия книг Донцовой?
Посмотрите на этот список:
— Дьявол носит лапти
— Депутат кислых щей
— Мопс в мешке
— Чудеса в кастрюльке
— Дискета всё стерпит
Здесь есть настоящие книги Донцовой, а есть — выдуманные алгоритмом (угадаете, где какие?). Все они устроены похоже. Это устойчивые выражения, в которых одно слово заменено на близкое по смыслу: был профессор кислых щей — стал депутат. Часто так же делают заголовки в газетах.
Как устроен алгоритм?
Новые слова появляются в названиях не случайно: они связаны с сюжетом книг. Поэтому логично сделать так: на вход программе будет приходить то слово, которое мы хотим увидеть в сгенерированном названии. А дальше пусть алгоритм подбирает под это слово какую-нибудь поговорку или фразеологизм, где есть что-то похожее по смыслу. Например, написали сникерс — получили «кнут и сникерс» (вместо «кнута и пряника»).
Как мы делали генератор?
1. Мы взяли список фразеологизмов русского языка, а также заглавия ста классических книг (у Донцовой бывают названия с отсылками к классике: «Лягушка Баскервилей», «Пролетая над гнездом Индюшки»...). Из наших списков мы отобрали строчки длиной в 3-5 слов: они больше подходят под формат названий.
2. Для определения семантической близости слов использовали векторную модель (подробнее о векторных моделях) от команды @RusVectores. Мы взяли модель, обученную на Википедии и Национальном корпусе русского языка. Она умеет понимать, что сникерс и пряник ближе, чем сникерс и помидор, а кукушка похожа на индюшку.
3. Чтобы названия были грамматически согласованы, мы применили морфологический анализатор pymorphy2. В программе мы задали условие: ищем только слова в именительном падеже и с тем же родом, что у предложенного нами слова. Это помогло нам избавиться от случаев типа «моя коттедж с краю».
Что получилось?
Во-первых, раскроем интригу. Не Донцовой, а бездушным алгоритмом порождены три из пяти названий, которые мы показывали в начале: «Депутат кислых щей», «Мопс в мешке» и «Дискета всё стерпит». А вот еще несколько примеров работы генератора (ввод => выдача):
мартышка => где мартышка зарыта
телепузик => телепузик на побегушках
продюсер => отставной козы продюсер
Радует, что «Продюсер козьей морды» — это самое что ни на есть настоящее название книги Донцовой. Так что машина отлично проникла в логику человека.
Подробнее об устройстве алгоритма, а также ошибках, которые он допускает, и возможных доработках читайте тут:
https://sysblok.ru/philology/otstavnoj-kozy-prodjuser-generiruem-nazvanija-knig-dari-doncovoj/
Мария Подрядчикова
У компьютерной лингвистики много применений: от поисковиков до банков, от права до филологии. А еще ее можно использовать для бесполезных, но смешных задач. Например, мы сделали генератор названий книг Дарьи Донцовой. Местами программа справляется не хуже человека. А все потому, что алгоритм не просто порождает случайные комбинации — он воспроизводит творческий процесс.
Как устроены названия книг Донцовой?
Посмотрите на этот список:
— Дьявол носит лапти
— Депутат кислых щей
— Мопс в мешке
— Чудеса в кастрюльке
— Дискета всё стерпит
Здесь есть настоящие книги Донцовой, а есть — выдуманные алгоритмом (угадаете, где какие?). Все они устроены похоже. Это устойчивые выражения, в которых одно слово заменено на близкое по смыслу: был профессор кислых щей — стал депутат. Часто так же делают заголовки в газетах.
Как устроен алгоритм?
Новые слова появляются в названиях не случайно: они связаны с сюжетом книг. Поэтому логично сделать так: на вход программе будет приходить то слово, которое мы хотим увидеть в сгенерированном названии. А дальше пусть алгоритм подбирает под это слово какую-нибудь поговорку или фразеологизм, где есть что-то похожее по смыслу. Например, написали сникерс — получили «кнут и сникерс» (вместо «кнута и пряника»).
Как мы делали генератор?
1. Мы взяли список фразеологизмов русского языка, а также заглавия ста классических книг (у Донцовой бывают названия с отсылками к классике: «Лягушка Баскервилей», «Пролетая над гнездом Индюшки»...). Из наших списков мы отобрали строчки длиной в 3-5 слов: они больше подходят под формат названий.
2. Для определения семантической близости слов использовали векторную модель (подробнее о векторных моделях) от команды @RusVectores. Мы взяли модель, обученную на Википедии и Национальном корпусе русского языка. Она умеет понимать, что сникерс и пряник ближе, чем сникерс и помидор, а кукушка похожа на индюшку.
3. Чтобы названия были грамматически согласованы, мы применили морфологический анализатор pymorphy2. В программе мы задали условие: ищем только слова в именительном падеже и с тем же родом, что у предложенного нами слова. Это помогло нам избавиться от случаев типа «моя коттедж с краю».
Что получилось?
Во-первых, раскроем интригу. Не Донцовой, а бездушным алгоритмом порождены три из пяти названий, которые мы показывали в начале: «Депутат кислых щей», «Мопс в мешке» и «Дискета всё стерпит». А вот еще несколько примеров работы генератора (ввод => выдача):
мартышка => где мартышка зарыта
телепузик => телепузик на побегушках
продюсер => отставной козы продюсер
Радует, что «Продюсер козьей морды» — это самое что ни на есть настоящее название книги Донцовой. Так что машина отлично проникла в логику человека.
Подробнее об устройстве алгоритма, а также ошибках, которые он допускает, и возможных доработках читайте тут:
https://sysblok.ru/philology/otstavnoj-kozy-prodjuser-generiruem-nazvanija-knig-dari-doncovoj/
Мария Подрядчикова