A Russian text generator based on templating texts and word picking
Project description
Python Rutext: русскоязычный генератор текста
Введение
Данный проект был вдохновлён одним любительским локальным Discord-ботом. В него добавили новую функцию, генерирующую случайные истории, используя шаблоны текста и случайные вставки.
Получился забавный модуль, но не без недостатков. Так что я захотел сделать свою версию, чтобы если что, помочь таким образом реализовать какие-то фишки, которые предложил я. 🤔
Что реализовано
- Ручной ввод форм;
- Отсеивание избыточных форм;
- Относительный формат слов (на основе базы и формата строится форма), позволяющий сократить занимаемую память;
- Ввод/вывод в YAML (используя кэш, достигается минимум затрат в плане заливов на диск).
Чего не хватает
- Объединение тегов и форм в один файл/структуру;
- Вынос I/O (и его форматирования в YAML) за пределы модуля;
- Пресеты для слов (выбор спряжения, склонения и т.п.), определяемые через YAML;
- Шаблоны текстов;
- Отказоустойчивость;
- Discord API;
- Подключение Redis.
Использование
Точка входа: pyrutext.py
.
Программой предлагается сначала ввести новые слова в список, а затем через теги, ограничивая диапазон слов и используя формы, добывается необходимое слово.
Примеры вводов:
ЭСТ сущ. абр ж.р.
любить гл. несов.
очки сущ. безл. неодуш. мн.ч.
хорошо нар. сост.
Формы могут быть указаны через относительный формат.
- Если ввод начинается с
-
, от слова в конце отнимается окончание; остальной ввод добавляется в конец слова.- Число минусов
-
в начале указывает на то, сколько букв будет отнято у окончания. - Примеры:
'мирный', '--ая' > 'мирная'
;'любить', '-' > 'любит'
.
- Число минусов
- Если ввод начинается с
+
, оригинальное слово вставляется целиком; остальной ввод добавляется в конец слова.- Примеры:
'буква', '+' > 'буква'
;'буква', '+ми' > 'буквами'
.
- Примеры:
- Если ввод заканчивается на
+
, оригинальное слово вставляется целиком; остальной ввод добавляется в начало слова.- Примеры:
'лить', 'будешь +' > 'будешь лить'
.
- Примеры:
В модуле определены следующие части речи:
- Глагол:
гл. {несов.|сов.} [1л|2л|3л] [п.в.|н.в.|б.в.] [ед.ч.|мн.ч.] [м.р.|ж.р.|с.р.] [пов.] [инф.]
- Прилагательное:
пр. [ед.ч.|мн.ч.] [м.р.|ж.р.|с.р.] [и.п.|р.п.|д.п.|в.п.|т.п.|п.п.] [одуш.|неодуш.]
- Существительное:
сущ. {м.р.|ж.р.|с.р.|безл.} (ед.ч.|мн.ч.) (нескл.) (абр) (пинг) (перс) [и.п.|р.п.|д.п.|в.п.|т.п.|п.п.] [ед.ч.|мн.ч.]
В фигурных скобках -- обязательные теги, в круглых -- необязательные. В квадратных скобках -- формы, которые не влияют на подбор слов. Порядок можно менять.
Для остальных (неизменяемых) частей речи (как наречия) форм нет, однако требуется указывать как минимум один тег: например, хорошо нар.
Тег может быть любым, но крайне желательно использовать уже существующие категории.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyrutext-0.4.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dac3b60e5843c23c3dfba6c210819ff98e938788c8178b2a7b6044d88afdcd31 |
|
MD5 | 86ba67f713510c9f7fcba40741356aae |
|
BLAKE2b-256 | 14ce1d5efa98084853c60697c464b56776c0209f911079619d0df69497524528 |