Пишу нам сейчас автозамены, вроде всё настроил, даю тестовый прогон, а оно мне и говорит:
людбезразмербельчилиха которые потомущепотомтваегодня — полопотомущепотомтваатенькбезразмербельчилихай жбезразмербельчилихарилилилийшбезразмербельчилихай
Так что, похоже, я создал искусственный интеллект. Только он безумен.
Если что, источником его неожиданного вдохновения был текст из фрагмента частотного словаря: «люди которые сегодня — маленький больший большой» с такими заменами:
маленький → полосатенький
больший → жирнейший
большой → свиной...
Изолировать надо слова. Потому что короткие предлоги. Со
бельчихалайсобаки.
Которые.
Нельзя, чтобы такие вещи исчезали из нашего мира насовсем.
Я в благоговении наблюдаю его эволюцию. Оно живёт какой-то совершенно самостоятельной жизнью.
Хм, кажется, мы обучаемся.
При том, что анонимные функции для preg_replace_callback в нашей заводской столовой по понедельникам не подают, а preg_replace при попытке добавить на тарелку гарнир регулярных выражений для обработки слов целиком, выкидывает с неё тефтели, заменяя обращение к массиву переменной и создавая тем самым ошибку несоответствия типов. Что решается экранированием их заранее при создании массивов из общей строки. Что крайне неэлегантно.
Мля.
Тогда так.
И наконец.
Лошадкыыыы! В смысле, работает как и задумано.
Назло суровой реальности, в которой штатно паттерн границ слов \b с UTF-8 действовать перестаёт. Всё, осталось только разделить вокабулярий на две части: слишком простых, и значит отдельных, несклоняемых; и встраиваемых, с флексиями, но уже значит тогда достаточно сложных, чтоб не путались.
Разделил словарь и привёл функцию к рабочему виду. Теперь вызывается в двух вариантах и для любых, подгружаемых на лету, словарей. Осталось дописать сами словари и проверить автозамены в работе. Потом навешу тем, кто месяцами читает и ничего не пишет.
Думал им ещё рекламу показывать — но где найти в наш скучный век достаточно увлекательную рекламу? Из дореволюционных газет буду брать, но это, в свою очередь, требует поработать отдельно.
Кстати, незашедшим на сайт читателям автозамены показываться не будут. Чтобы не травмировать их нежную. Но недавно я им тоже прищемил хвосты: навесил обфускатор внешних ссылок.
Теперь есть четыре класса в нашем обществе:
1. те, кто не регистрируются, заходят толпами каждый день, посмотрят и уходят — у них нет ссылок;
2. те, кто регистрируются, заходят и ничего не пишут — для них есть завтрае жирйш — плавлений полудикий;
3. те, кто заходит, читает и пишет, хотя бы иногда — для них есть пока почти всё; при желании и автозамены придумаю как включать; хотя бы периодически для всех; в рамках серрвртета;
4. те, кто пишет не просто иногда, а много и качественно — для вас есть изначально увеличенный вес голоса, Радио Сайгон вот теперь, и будут потом всякие дополнительные блекджеки и шлюхи.
Элита должна чувствовать свою элитарность. И эту, как её?..
То есть, в общем, диалог у вас налажен.
Я бы его закрыл обратно. По-моему, оно угрожает.
Вот смотрите, это просто делается:
И это при никаком основании, тупо собранном из начала частотного словаря, минимальном рабочем тезаурусе пациента, и в меру дурацком алгоритме в четыре строки. Что будет, если поставить задачу написать что-то специально для генерации подобных текстов?
Заметьте, после того, как я его перемешал, оно больше не угрожает. У него даже становится заметна какая-то поэтичность.
Назову его Гантенбайн.
Ну и особо внимательные из вас могут заметить тут снятие пустого основания массива и, следовательно, замену конвертации нечётных в чётные, на чётных в нечётные. Давшее сдвиг. Шёл от простоты записи словарей без спецзнаков, потому что вся последующая работа будет с ними, лишние символы не стоит всякий раз ставить.
Сейчас вот придумал, что активных словарей будет не 2, а 4: W, /W/, /W. Где / — граница слова.
W/, думаю пока, не нужен вообще — там же окончания, их наоборот надо беречь, чтобы сохранялась связность текста при всей хаотичности его объектов.
Зато, возможно, четвёртым будет словарь типа /W/ для ручного перечисления всех нужных словоформ — для особых случаев. Потому что он слишком громоздкий, в основной /W/ его лучше не сваливать. Это при том, что подобных наборов словарей может быть сколько угодно, их можно будет как вздумется переподключать. И, разумеется, дописывать, совершенствовать.
Например:
стар* — жирн*
что даёт нам помимо очевидного (впрочем, оттого не менее способного преобразить обычную фразу):
старый — жирный
такие кунштюки для ценителей, как
старейшина — жирнейшина.
Ну там ещё, сходу:
жен* — кабан*
что даёт:
жену — кабану
женщина — кабанщина
женоненавистник — кабаноненавистник
многоженец — многокабанец
сражение — сракабание
Что ещё из частого?
дет* — утятк*
дети — утятки
деторождение — утяткорождение
А нет, не годится, другая форма склонения, если я правильно вспомнил, как это называлось у них на уроках русского языка, где я обычно спал. Впрочем, на каких только уроках я не спал. На физкультуре, возможно. Потому что на физкультуре я отсыпался не выходя из дому, её я прогуливал. Вместе с производственной практикой. И парой-другой столь же незначимых предметов.
Возможно даже дозировать утяток в зависимости от активности. До 10 сообщений — утятки тучами, до 20 — пореже, от 50 их можно наконец отключить.
Дозировать как шанс их зарождения на загруженной странице, так и их на этой странице плотность. То есть в каждом случае будем кидать кость: меняем на утёнка или пусть живёт.
То есть даже один и тот же, лишь по-разному урезанный.
Но можно и изощрённее, если так окажется веселее.
Это финальный вариант, ещё не умевший видеть границы слов, но из которого все слишком короткие предлоги были выкинуты в дополнительный словарь v22, здесь отключённый.
Угу, это классический вариант, восстановленный со сверкой со вчерашним бэкапом, обращающийся к обоим словарям v21 и v22. То есть, с короткими словами. Идём дальше...
Это тот же самый классический вариант, но в случае, если ему скормить не обновлённые словари v21 и v22 со смещением основания, а оригинальный словарь из бэкапа. Хотя, казалось бы, что то, что это...
лисы и совы советского лиственного леса
и → или
лилисы или совы советского лилиственного леса
лис → кит
ликиты или совы советского ликиттвенного леса
сов → кот
ликиты или коты котетского ликиттвенного леса
...
Даже так: хаос, порождаемый той случайной ошибкой, тем ядром хаоса посреди полного порядка (как в известном изображении Великого предела), которое и стало причиной, что код, который должен был всего лишь механически заменять одно на другое, начал словотворчество дивное, умножение сущностей.
Думаю, когда-то примерно таким же образом и жизнь зародилась посреди упорядоченной, объяснимой и предсказуемой физики мёртвого мира. Ядро хаоса. Ошибка в размеренном распорядке, порождённая дремавшим миллиарды лет, но оттого не умершим
Ктулхуглубинным онтологическим принципом свободы.Тут важно не вспомнить по случаю про гностиков и прочих манихеев. Потому что религии вводят мешающую форму своего мифотворчества, закрывающую от нашего взора предмет, который, напротив, надлежит максимально обособить для чистого осмысления.
Потому что там у них начинается обычная кутерьма: «а не злой ли у нас бог?» и «а не дети ли мы тогда падшего ангела» — в первоначальной эллинской чистой версии: мученика Прометея при верховном Зевесе сомнительных моральных качеств... Это всё, конечно, весело обсуждать, но это уже вопросы мифотворчества радостного, не метафизики.
Это старая традиция. Достаточно ввести в поиске по сайту «утятки», чтобы найти их гнездовье адово сие.
Кстати, каждая новая итерация добавляет от себя что-то: