masterspammer (masterspammer) wrote,
masterspammer
masterspammer

Category:

Русский мат

После обсуждения в ru_perl фильтра нецензурных выражений реинкарнировал старую резалку мата.

Прошлый алгоритм сначала готовил текст (убирал пробелы, дубликаты букв, приводил к одному регистру), удалял из него слова, похожие на маты (пример - чЕБУрашка и тЕБЕНёк) а потом искал в нём, прогоняя его через пачку регулярных выражений. При нахождении в тексте subj., определить, где он был в оригинальном тексте не представлялость возможным; с другой стороны, некоторую информацию давал номер сработавшего регулярного выражения.

Новый алгоритм также готовит текст, но не меняет в нём количество букв (за исключением приклеивания спереди и сзади по пробелу - чтобы не делать различия между пробелом и границами строки), строит два общих регулярных выражения - одно для исключений, другое для матов; заменяет НЕматы на соответствующее длине вхождения количество подчёркиваний, а потом ищет в этой же строке маты, заменяя буквы с теми же позициями в ОРИГИНАЛЬНОЙ строке звёздочками. Без необходимости замены - проще (увеличивает значение счётчика).

Плюсы - быстрее работает, возможна автокорректировка текста (те самые звёздочки), конфиг управляемый (содержит простое для неподготовленного пользователя подмножество регулярных выражений - буква, множество букв, необязательность (вопросик), пробел, непробел, и возможно_пробел (\s*) а так же отображения букв - ж -> жЖjJ zH }|{ и допускает комментарии), модуль совершенно не зависит от языка.

Минусы - был сложен в разработке (один только оптимизирующий компилятор регулярных выражений вспоминаю с теплотой и некоторым содроганием), не распознаёт особо сложные случаи типа 3.14ЗДЕЦ, }}}{{{уй (но распознаёт }{уй).

Сейчас причёсываю код, оформляю комментариями.

Tags: РусскийМат, ТекстовыеАлгоритмы, Язык
Subscribe

  • (no subject)

    Вспомнился тут анекдот про давящие трусы неподходящего размера, из-за которых отрезали яйца. Две мембраны немного пострадали в дороге - не ясно,…

  • Power ON!

    Пять дней прошло - и только сегодня скрутил провода в кучу (фильтры пока лежат на полке) и соединил с усилителем. Динамикам не то, чтоб сильно плохо…

  • (no subject)

    Так получилось, что у прошлых (до PC) моих компьютеров прерываний или не было вообше или был таймер с фиксированной частотой. У Z80 (если подходить…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments