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 (используя кэш, достигается минимум затрат в плане заливов на диск).

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

  1. Вынос I/O (и его формата) за пределы модуля;
  2. Шаблоны текстов;
  3. Отказоустойчивость;
  4. Discord API;
  5. Подключение Redis.

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

Точка входа: 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.4.0.tar.gz (10.0 kB view hashes)

Uploaded Source

Built Distribution

pyrutext-0.4.0-py2.py3-none-any.whl (4.2 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