Шлакоблокунь: генератор смешных1 словослияний
\\\\\\\\
┌────────────────┐__
\\│ ШЛАКОБЛ⎛⎞⎟⎠ │ °_\
//│ ⎝⎠⎟⎞УНЬ │___/
└────────────────┘
Portmanteau Generator
- ШЛАКОБЛОКУНЬ
- КОНДИЦИОНЕРПА
- ГУСТОТАЛИТАРИЗМ
- БРЕВНОСТЬ
- АРХИЕРЕЙВ
- БАНДИТЯТКО
- ХРЕНОВАЦИЯ
- ДЕДЛАЙНЕР
- КАНФЕРЭНЦЫЯНІЗАЦЫЯ
- ЙОГЪАРГЪЫЛЫГЪ
Исходные слова импортируются из текстового файла, в нём ищутся такие пары слов, чтобы из них могло получиться словослияние (portmanteau): шлакоблок + окунь = шлакоблокунь. Результаты выводятся в текстовый файл.
По умолчанию программа ищет по всему словарю в алфавитном порядке и выводит все найденные словослияния. Чтобы предварительно перемешать словарь, используйте опцию --randomize
.
- Если не установлен Python 3 — установить.
- Скачать содержимое репозитория любым удобным способом.
- Запустить
shlakoblokun-ru.sh
, по желанию отредактировав. - Остановить генерацию, нажав
Ctrl-C
, когда надоест ждать. - Посмеяться (поплакать) над результатами в
output-ru.txt
.
Также можно запустить скрипт непосредственно из папки shlakoblokun/
с желаемыми опциями:
python3 shlakoblokun.py [-h] [-i [INFILE ...]] [-w1 [W1 ...]] [-w2 [W2 ...]]
[-o [OUTFILE]] [-r] [-n NUMBER] [-d DEPTH] [-f MINFREE]
[-l MINLENGTH] [-L MAXLENGTH] [-u] [-c] [-p]
опции:
-h, --help вывести подсказку и выйти;
-i [INFILE ...], --infile [INFILE ...] словарь (текстовый файл) / папка со словарями;
-w1 [W1 ...] словарь только для 1-го слова из пары;
-w2 [W2 ...] словарь только для 2-го слова из пары;
-e [EXCLUDE_OVERLAPS], --exclude-overlaps [EXCLUDE_OVERLAPS]
словарь суффиксов/окончаний, на которых
не следует генерировать наложения;
-o [OUTFILE], --outfile [OUTFILE] выходной текстовый файл;
-r, --randomize перемешать словарь перед генерацией;
-n NUMBER, --number NUMBER число генерируемых словослияний
(по умолчанию: неограниченно);
-d DEPTH, --depth DEPTH мин. глубина наложения (по умолчанию: 2);
-f MINFREE, --minfree MINFREE мин. число непересекающихся букв
в каждом слове (по умолчанию: 1);
-l MINLENGTH, --minlength MINLENGTH мин. длина исходных слов (по умолчанию: 3);
-L MAXLENGTH, --maxlength MAXLENGTH макс. длина исходных слов
(по умолчанию: неограниченно);
-u, --uppercase капитализировать общие буквы ("шлакоблОКунь");
-c, --capitalized также включать слова с заглавной буквы;
(имена/названия/аббревиатуры);
-p, --phrases также включать словосочетания (с пробелами);
В качестве словарей-исходников можно указать один или несколько текстовых файлов или папок, или даже направить поток из stdin
.
Пример использования:
python3 shlakoblokun.py -i data/ru/n.txt -w2 data/ru/adj.txt data/ru/adv.txt data/ru/v.txt -o output.txt
Здесь в качестве общего словаря указан файл data/ru/n.txt
(существительные), в то время как data/ru/adj.txt
, data/ru/adv.txt
, data/ru/v.txt
указаны как словари для второго слова. Т.е. при генерации словослияний первое слово будет браться из data/ru/n.txt
, а второе — из всех перечисленных словарей.
Того же результата можно добиться и короче:
python3 shlakoblokun.py -w1 data/ru/n.txt -w2 data/ru/ -o output.txt
Примеры с stdin
/ stdout
:
cat input.txt | python3 shlakoblokun.py
python3 shlakoblokun.py < input.txt > output.txt
Словари извлечены из дампа ру-Викисловаря с помощью wiktiny.
Куда донатить ЛГБТК+ организациям в Украине?
-
Инсайт, делают шелтеры в разных городах, психологическая и гуманитарная помощь
-
Точка Опорі, делают шелтеры во Львове, сервисная и гуманитарная помощь на границе
-
Когорта, транс-организация, помощь с лекарствами, продуктами, эвакуацией
-
Сфера, сервисная и гуманитарная помощь в Харькове и Харьковской области
-
ГендерЗед, гуманитарная и сервисная помощь в Запорожье и Запорожской области
-
GenderStream, помощь транс-людям на границе
-
КиевПрайд, шелтер в Киеве и психологическая помощь
-
ГАУ, присылают продуктовые наборы и помогают с экстренными нуждами
А также:
-
Квир за мир!, низовое антивоенное движение и фонд взаимопомощи для ЛГБТК+ людей из Украины, России и Беларуси
-
Тред о том, почему это важно (спасибо лашден и Мире за информацию 🫶)
Footnotes
-
Но это неточно ↩