A Russian text generator based on templating texts and word picking
Project description
Python Rutext: русскоязычный генератор текста
Введение
Данный проект был вдохновлён одним любительским локальным Discord-ботом. В него добавили новую функцию, генерирующую случайные истории, используя шаблоны текста и случайные вставки.
Получился забавный модуль, но не без недостатков. Так что я захотел сделать свою версию, чтобы если что, помочь таким образом реализовать какие-то фишки, которые предложил я. 🤔
Что реализовано
- Ручной ввод форм;
- Отсеивание избыточных форм;
- Относительный формат слов (на основе базы и формата строится форма), позволяющий сократить занимаемую память;
- Ввод/вывод в YAML (используя кэш, достигается минимум затрат в плане заливов на диск).
Чего не хватает
- Вынос I/O (и его формата) за пределы модуля;
- Шаблоны текстов;
- Отказоустойчивость;
- 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.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c806f7ad44a9f1efa310eba1c19e2a222a8e4b4b557e00a2f8178bfd208ee33a |
|
MD5 | 585394233e4ce95636794214bba11935 |
|
BLAKE2b-256 | c40e782e42fd6d86754afe3bd45c91255ba6351413675c7f061dcc222b06dccd |