Skip to content

Шлакоблокунь: генератор смешных (нет) словослияний

License

Notifications You must be signed in to change notification settings

roadkell/shlakoblokun

Repository files navigation

Шлакоблокунь: генератор смешных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, помощь транс-людям на границе

  • КиевПрайд, шелтер в Киеве и психологическая помощь

  • ГАУ, присылают продуктовые наборы и помогают с экстренными нуждами

А также:

  • Квир за мир!, низовое антивоенное движение и фонд взаимопомощи для ЛГБТК+ людей из Украины, России и Беларуси

  • Тред о том, почему это важно (спасибо лашден и Мире за информацию 🫶)

Лицензия

Hippocratic License 3.0

Викисловарь: CC BY-SA 3.0

tqdm: MIT

Footnotes

  1. Но это неточно

About

Шлакоблокунь: генератор смешных (нет) словослияний

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks