Skip to main content

A Russian text generator based on templating texts and word picking

Project description

Python Rutext: русскоязычный генератор текста

Введение

Данный проект был вдохновлён одним любительским локальным Discord-ботом. В него добавили новую функцию, генерирующую случайные истории, используя шаблоны текста и случайные вставки.

Получился забавный модуль, но не без недостатков. Так что я захотел сделать свою версию, чтобы если что, помочь таким образом реализовать какие-то фишки, которые предложил я. 🤔

Что реализовано

  1. Ручной ввод форм;
  2. Отсеивание избыточных форм;
  3. Относительный формат слов (на основе базы и формата строится форма), позволяющий сократить занимаемую память;
  4. Ввод/вывод в YAML (используя кэш, достигается минимум затрат в плане заливов на диск); при этом разработчик может использовать собственный I/O;
  5. Ссылки на уже определённые слова, что позволяет дополнительно сжимать YAML и сохранить нервы пользователям.

Чего не хватает

  1. Шаблоны текстов;
  2. Отказоустойчивость;
  3. Discord API;
  4. Использование Redis вместо YAML.

Использование

Точка входа: pyrutext.py.

Программой предлагается сначала ввести новые слова в список, а затем через теги, ограничивая диапазон слов и используя формы, добывается необходимое слово.

Ссылки – теги, начинающиеся с & и отсылающие к уже определённым словам. Ссылка может быть только одна. Если других тегов нет, они берутся из слова-отсылки, и наоборот: теги по ссылке не извлекаются (а только формы), если пользователь определил другие.

Примеры вводов:

  • ЭСТ сущ. абр ж.р.
  • любить гл. несов.
  • очки сущ. безл. неодуш. мн.ч.
  • хорошо нар. сост.
  • ремонт сущ. м.р. ед.ч.
  • ступор &ремонт

Формы могут быть указаны через относительный формат.

  • Если ввод начинается с -, от слова в конце отнимается окончание; остальной ввод добавляется в конец слова.
    • Число минусов - в начале указывает на то, сколько букв будет отнято у окончания.
    • Примеры: 'мирный', '--ая' > 'мирная'; 'любить', '-' > 'любит'.
  • Если ввод начинается с +, оригинальное слово вставляется целиком; остальной ввод добавляется в конец слова.
    • Примеры: 'буква', '+' > 'буква'; 'буква', '+ми' > 'буквами'.
  • Если ввод заканчивается на +, оригинальное слово вставляется целиком; остальной ввод добавляется в начало слова.
    • Примеры: 'лить', 'будешь +' > 'будешь лить'.

В модуле определены следующие части речи:

  • Глагол: гл. {несов.|сов.} [1л|2л|3л] [п.в.|н.в.|б.в.] [ед.ч.|мн.ч.] [м.р.|ж.р.|с.р.] [пов.] [инф.]
  • Прилагательное: пр. [ед.ч.|мн.ч.] [м.р.|ж.р.|с.р.] [и.п.|р.п.|д.п.|в.п.|т.п.|п.п.] [одуш.|неодуш.]
  • Существительное: сущ. {м.р.|ж.р.|с.р.|безл.} (ед.ч.|мн.ч.) (нескл.) (абр) (пинг) (перс) [и.п.|р.п.|д.п.|в.п.|т.п.|п.п.] [ед.ч.|мн.ч.]

В фигурных скобках – обязательные теги, в круглых – необязательные. В квадратных скобках – формы, которые не влияют на подбор слов. Порядок можно менять.

Для остальных (неизменяемых) частей речи (как наречия) форм нет, однако требуется указывать как минимум один тег: например, хорошо нар.

Тег может быть любым, но крайне желательно использовать уже существующие категории.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrutext-0.6.1.tar.gz (12.2 kB view hashes)

Uploaded Source

Built Distribution

pyrutext-0.6.1-py2.py3-none-any.whl (4.1 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page