Комментарии 79
я считаю это все полумерами, но статью написали хорошо.
такие фильтры часто только подогревают интерес к шалунству
такие фильтры часто только подогревают интерес к шалунству
+4
Это в общем-то все понимают. Но зачастую посетители жалуются на матерящихся индивидов (здесь же могут быть дети!), а вот модерировать 24/7 вряд ли кто сможет.
0
как на счет того, чтобы придумать саморегуляцию? карму, бан за 10 «жалоб», етс?
+2
Это помогает только при закрытой регистрации, как здесь например. Если же пользователь может спокойно нарегить еще 10 аккаунтов — никакая карма не поможет. Можно вводить ограничения для новичков, но это не сильно приятно для самих новичков и может отвернуть их от сервиса.
+3
Можно придумать и другие системы саморегуляции. Например если на какой-то конкретный комментарий или статью больше 5 жалоб — то просто не отображать его и с последующим разбирательством или записью в базу…
Как минимум система саморегуляции нужна в параллели с системой фильтрования…
Как минимум система саморегуляции нужна в параллели с системой фильтрования…
+1
Саморегуляция и мат несовместимы? Возьмите любой «пост ненависти» — матерный коммент заплюсуют.
0
лучше тогда сделать постмодерацию. т.е. чтоб фильтр срабатывал постфактум и нарушители наказывались (ro например). тогда они будут материться сколько влезет, а бан отхватывать по факту многочисленных нарушений и сразу хороший. а когда слова фильтруются сразу, они будут находить способы. кнопочка «Пожаловаться» тоже рулит, банилку потом можно выдавать особо активным пользователям
0
Внизу уже есть мысль, при помощи регулярных выражений заменять нецензурные выражения фразами типа: «у нас не ругаются матом».
Попробую ее развить. А если попробовать заменять мат более мягкой (с позиции цензуры) формой но не блокировать сам негативный посыл полностью. Матершинник при этом получит ту эмоциональную разгрузку, на которую рассчитывал + система ему покажет, как можно культурно отражать эмоции пользуясь богатством русского языка в полной мере, а то и настроение матершиннику поднимет (хотя хорошее настроение матершинника чревато).
В самом простом случае, можно заменять брань злым смайлом. В идеале — находить аналоги в языке и подставлять. «Ты х…й!» меняем на «Ты редиска!», «пошел в ж…у» на «да ну Вас к черту!» и т. д.
На мой взгляд, при решении данной задачи, главное — не забывать о том человеке, который матерится. Раз он это делает, значит он чем-то недоволен, расстроен или просто малообразован и ему нужна возможность излучить накопившийся негатив и успокоится. Из курса психологии в университете я помню, что негатив излучаемый одним человеком, может приниматься другими в зависимости от условий как позитив и также позитивом возвращаться к нему обратно. Нужно искать такие схемы, которые позволили бы бранящемуся доставлять свои эмоции «легальными методами» и при этом стимулировали бы его на более добрые мысли и слова.
Попробую ее развить. А если попробовать заменять мат более мягкой (с позиции цензуры) формой но не блокировать сам негативный посыл полностью. Матершинник при этом получит ту эмоциональную разгрузку, на которую рассчитывал + система ему покажет, как можно культурно отражать эмоции пользуясь богатством русского языка в полной мере, а то и настроение матершиннику поднимет (хотя хорошее настроение матершинника чревато).
В самом простом случае, можно заменять брань злым смайлом. В идеале — находить аналоги в языке и подставлять. «Ты х…й!» меняем на «Ты редиска!», «пошел в ж…у» на «да ну Вас к черту!» и т. д.
На мой взгляд, при решении данной задачи, главное — не забывать о том человеке, который матерится. Раз он это делает, значит он чем-то недоволен, расстроен или просто малообразован и ему нужна возможность излучить накопившийся негатив и успокоится. Из курса психологии в университете я помню, что негатив излучаемый одним человеком, может приниматься другими в зависимости от условий как позитив и также позитивом возвращаться к нему обратно. Нужно искать такие схемы, которые позволили бы бранящемуся доставлять свои эмоции «легальными методами» и при этом стимулировали бы его на более добрые мысли и слова.
+1
К сожалению, идея заменять мат на более мягкие выражения была воспринята хабром неоднозначно.
0
Можно еще попробовать такой вариант: матерщиннику показываем его вариант, а вот остальной общественности — измененный фильтром. Ох не сразу они догадаются наверное :)
0
Необходим большой словарь;
Не учитывается морфология русского языка;
вот изза этих двух пунктов, ваш фильтр ничем практически не отличается от аналогов:)
но пост хорош, мне понравилось разъяснение… и самооценка
Не учитывается морфология русского языка;
вот изза этих двух пунктов, ваш фильтр ничем практически не отличается от аналогов:)
но пост хорош, мне понравилось разъяснение… и самооценка
+1
Самые хорошие фильтры работают без словарей в чистом виде, а на основе морфологии и алгоритмов оценки. В зависимости от языка оценивают корни, приставки и т.д., оценивают «обычность» (выделяется ли фраза — допустим спецсимволы и числа в середине слова), а иногда направленность поста (opinion mining) — резкая ли она положительно/отрицательно или нейтральная. Но такие фильтры ресурсоёмкие.
0
xxx: Нет такого мат-фильтра, который бы остановил русского человека
bash.org.ru
bash.org.ru
+4
Кстати, на форуме dkLab, на «Складе готовых решений» лежит навороченный класс для определения мата на php
0
Размер: 27,84 KB
большой словарь наверно… со всего баша собирали)))
большой словарь наверно… со всего баша собирали)))
0
>> Метод обнаружения мата основывается на корнях и предлогах русского языка, а не на словаре.
0
Ху*ней маятесь.
+4
На мой взгляд, критика должна быть конструктивной. «Х**нёй маетесь» — не конструктивно, так как не предлагает никакого выхода из ситуации. Если бы вы написали что-то вроде: «Вы делаете бесполезную работу, уже выполненную в таких-то проектах», это было бы уже лучше. Человек бы знал, с чем сравнивать свою работу. Если бы вы написали что-то вроде: «Лучше использовать подобный подход в автоматической модерации ...», это было бы ещё лучше, так как даёт направление для дальнейшего развития.
А так вы «х**нёй маятесь». Нечего сказать — молчите.
А так вы «х**нёй маятесь». Нечего сказать — молчите.
-1
Может, он просто проверял, есть ли мат-фильтры на Хабре :)
+1
Ну ладно, перефразирую: Автор изобретает perpetuum mobile, потому что идея мат-фильтра невозможна, потому что мат не в конкретных словах, а в смысле и контексте. Даже если оставить юзерам только знаки препинания, они все равно смогут материться, например, пресловутым ascii артом.
+6
очешуеть, я думал, что все просто проверяют по словарю. Причем не целые слова, так что слово «оглобля» превращается в «огло***». А у вас целые сотни регулярных выражений. Но результат все равно не идеальный. Кузнецов, например ущемляете в праве использовать профессиональные термины. ".Х.U.Й." оно не пропустит, а вот "_ХУЙ_", я так понял, пропускает. Так что есть куда улучшать.
0
Да вообще оба варианта должно проглотить. А вот с кузнецами действительно проблема. Хотя теоретически можно еще «белый список» организовать…
0
Разве? Насколько я помню регулярные выражения, как правило, "\W" — это любой символ кроме цифры, буквы или подчеркивания. Т.е. в слове "_хуй_" подчеркивания вроде бы будут частью слова. Учитывая «Ну и чтобы не было ложных срабатываний будем отрабатывать только слово целиком» слово "_хуй_" должно пропустить, если его нет в словаре.
А вообще, хорошо бы видеть реализацию этого, и иметь возможность потестировать.
Белый список это вариант. Можно проверять вхождения запретных слов в тестируемое слово исключая словарные. Т.е. пройтись по какому нибудь словарю без мата, выбрать там слова в которые есть матерные подстроки и занести их в белый список. Тогда «оглобля» окажется в белом списке и не будет зацензурена. А «оххуительно» будет, ибо в нем подстрока «хуй». Можно усложнить, что бы учесть подчеркивания, повторы, ударения. Чтобы слова типа «охууу´ительно» тоже цензурило. Но надо не переусердствовавать, что бы во фразе «ох, уйди прочь» оно не нашло мата.
А вообще, хорошо бы видеть реализацию этого, и иметь возможность потестировать.
Белый список это вариант. Можно проверять вхождения запретных слов в тестируемое слово исключая словарные. Т.е. пройтись по какому нибудь словарю без мата, выбрать там слова в которые есть матерные подстроки и занести их в белый список. Тогда «оглобля» окажется в белом списке и не будет зацензурена. А «оххуительно» будет, ибо в нем подстрока «хуй». Можно усложнить, что бы учесть подчеркивания, повторы, ударения. Чтобы слова типа «охууу´ительно» тоже цензурило. Но надо не переусердствовавать, что бы во фразе «ох, уйди прочь» оно не нашло мата.
+1
Действительно, подчеркивание я из этого символьного класса упустил. В прочем остальные предложенные вами варианты будут нормально отбракованы — ударение, удвоение букв, разные слова.
Реализацию постараюсь выложить в следующий раз — на данный момент выглядит не очень и поэтому показывать пока не хочу :).
Реализацию постараюсь выложить в следующий раз — на данный момент выглядит не очень и поэтому показывать пока не хочу :).
0
НЛО прилетело и опубликовало эту надпись здесь
хороший вариант это поиск «фонетически близких» слов. Есть соответствующие азбуки и алгоритмы. Подобные алгоритмы позволяют обходить опечатки и намеренные искажения слов (в неких пределах, естественно). Однако, могут по случайности захватывать и вполне приличные в написании слова.
Вообще, идеальный порядок недостижим. Но приемлемого уровня можно достичь, если ввести внятные правила и беспристрастную модерацию («вахтёром», например;).
Вообще, идеальный порядок недостижим. Но приемлемого уровня можно достичь, если ввести внятные правила и беспристрастную модерацию («вахтёром», например;).
0
Видел нечто подобное для английского языка (soundex и т.п.). Есть примеры для русского?
0
к сожалению, я только слушал рассказы знакомого, о приведении в порядок электронной библиотеки МИАН'а. Судя по его рассказам — да, есть. Или, по крайней мере, это не так сложно изобразить самому. Но конкретнее ничего не смогу сказать, так как занимаюсь совсем другими вещами.
0
Писал давно простенькую реализацию, с поиском фамилий справлялась.
github.com/Breathless/Codeine/blob/master/Driver/Process/Text/Metaphone/Default.php
github.com/Breathless/Codeine/blob/master/Driver/Process/Text/Metaphone/Default.php
0
после минутного зависания в гугле прочёл логичную идею: можно использовать транслитерацию в английский и затем уже soundex.
0
Да, я как раз про Soundex хотел сказать, он описан у Кнута в «Искусстве программирования». Такая встроенная функция даже есть в oracle, но, к сожалению, работает только с английским.
0
community.livejournal.com/ru_php/1062493.html
вот такое поделие есть. И ниже в комментариях сравнение с транслитерацией и потом soundex'ом.
community.livejournal.com/ru_php/1062493.html?thread=14696797#t14696797
На самом деле, думаю, нужный алгоритм давно существует и написан Яндексом. Просто я даже не знаю что спросить у поисковика, чтобы получить внятный ответ.
вот такое поделие есть. И ниже в комментариях сравнение с транслитерацией и потом soundex'ом.
community.livejournal.com/ru_php/1062493.html?thread=14696797#t14696797
На самом деле, думаю, нужный алгоритм давно существует и написан Яндексом. Просто я даже не знаю что спросить у поисковика, чтобы получить внятный ответ.
0
Очень актуальный вопрос для меня. Как раз пишу сейчас чат. Спасибо за статью.
0
НЛО прилетело и опубликовало эту надпись здесь
набор регулярок гинерируемых по словарю будет непроизводительно(это же тысячу вызовов регулярок)
предлагаю вначале привести строку в нормальную форму, что б все возможные варианты написания слова ХЛЕБ, такие как
Хлеб >
предлагаю вначале привести строку в нормальную форму, что б все возможные варианты написания слова ХЛЕБ, такие как
Хлеб >
-1
парсер…
XLеб HлеБ hleb хЛеБ преобразовались в hleb, а уже в нормализованной строке сделать поиск по словарю
XLеб HлеБ hleb хЛеБ преобразовались в hleb, а уже в нормализованной строке сделать поиск по словарю
0
Получается примерно тоже самое, только путем серии замен. Вообще не обязательно на каждое слово делать отдельную регулярку, можно «склеить» несколько слов в одну.
Вообще ваш вариант имеет право на жизнь, меня смущает только то, как определить на какую часть оригинальной фразы сработал фильтр — бывает полезно для отбраковки ложных срабатываний.
Вообще ваш вариант имеет право на жизнь, меня смущает только то, как определить на какую часть оригинальной фразы сработал фильтр — бывает полезно для отбраковки ложных срабатываний.
0
Мелькнула в голове мысль.
Для фильтрации мата можно использовать матан-капчу. Схема следующая.
Если в сообщении обнаружено подозрение на мат, пишется предупреждение, и просьба решить матан-капчу. На каждое подозрительное слово — одна матан-капча. Уровень подозрительности при фильтрации можно повысить. Пользователь ставится перед выбором: или решай матан-пример, или убирай матерные слова.
То есть, тут работает принцип — у нас мат возможен. Но только для тех, кто готов пошевелить мозгами, чтобы его в чистом виде протолкнуть.
Думаю, поток тупого немотивированного мата резко снизится, останется только «грамотный» мат, написанный для пущщей экспресси.
Для фильтрации мата можно использовать матан-капчу. Схема следующая.
Если в сообщении обнаружено подозрение на мат, пишется предупреждение, и просьба решить матан-капчу. На каждое подозрительное слово — одна матан-капча. Уровень подозрительности при фильтрации можно повысить. Пользователь ставится перед выбором: или решай матан-пример, или убирай матерные слова.
То есть, тут работает принцип — у нас мат возможен. Но только для тех, кто готов пошевелить мозгами, чтобы его в чистом виде протолкнуть.
Думаю, поток тупого немотивированного мата резко снизится, останется только «грамотный» мат, написанный для пущщей экспресси.
+6
А вот этот фильтр смотрели? Весьма интересно работает.
0
cpansearch.perl.org/src/ILYAS/Lingua-RU-Antimat-1.00/Antimat.pm
Только для utf8 придётся перекодировать.
Только для utf8 придётся перекодировать.
0
В свое время нашел где-то регулярку:
$pattern = "\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[ёiлeеюийя]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[yя]\w{0,10}|\w{0,8}[её][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeё]([еeё\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[ё]([ё\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}";
$string = 'Да вы, бля, все суки охуевшие совсем ебанулись, вашу мать, пидорасня хренова.';
echo mb_eregi_replace($pattern, '[у нас не ругаются матом]', $string);
На выходе получаем: Да вы, [у нас не ругаются матом], все [у нас не ругаются матом] [у нас не ругаются матом] совсем [у нас не ругаются матом], вашу мать, [у нас не ругаются матом] хренова.
$pattern = "\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[ёiлeеюийя]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[yя]\w{0,10}|\w{0,8}[её][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeё]([еeё\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[ё]([ё\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}";
$string = 'Да вы, бля, все суки охуевшие совсем ебанулись, вашу мать, пидорасня хренова.';
echo mb_eregi_replace($pattern, '[у нас не ругаются матом]', $string);
На выходе получаем: Да вы, [у нас не ругаются матом], все [у нас не ругаются матом] [у нас не ругаются матом] совсем [у нас не ругаются матом], вашу мать, [у нас не ругаются матом] хренова.
+4
Цензура это зло, вместо того чтоб фильтровать слова, лучше просто «фильтровать неадекватов». И я не говорю о банах и прочих карательных мерах, я говорю о превентивных методах. В хорошем коллективе, никакие фильтры не нужны, ибо в таковых народ сам «фильтрует свой базар», всё что нужно это задать «нужный ритм».
+2
Скажем так, мы тоже так думали до достижения 1000+ человек в одном чате…
+1
Я регулярно сижу на форумах с 1000+ человек (именно активных) фильтры мата срабатывают дай бог раз в неделю. Добиться этого удалось очень просто, администрация просто задала ритм общения в вежливом ключе, и народ подхватил. Когда регистрируется новый пользователь, то он видит что тут приличное место, и ведёт себя прилично. (Исключения бывают только в случае конфликтов, когда пользователь нервничает и злится, тогда ему плевать на культуру и он матерится, таких надо «остудить», это не всегда просто, но всегда возможно.)
0
А где можно попробовать?
Просто интересно, выдержит ли система большой загиб?
Просто интересно, выдержит ли система большой загиб?
+1
По опыту многолетнего модерирования общегородской локалки с чатом на базе DC++ скажу, что абсолютно любые матфильтры обходятся на ура. Слишком навороченные регулярки только мешают обычным пользователям. Если в чате есть дибилы, то ничто не поможет, кроме бана по ip.
0
в украинском языке ещё сложнее. у нас есть такие слова как «роблять» (делают на русском), «розробляти» (разрабатывать). очень много будет ложных срабатываний.
0
Несколько лет жил в студенческом общежитии, был у нас irc-сервер. Было прям как вы описали: мат, ругань, баны и т.п. Баны помогали плохо, так как ник можно сменить, а внешний айпи был один на всю общагу. Люди делали запароленные каналы, чтобы пообщаться спокойно, эти пароли регулярно вскрывали, каналы захватывали… В общем, обычное такое студ.общежитие. Потом я поехал учиться за границу. Студ. городок, десяток общаг, больше тысячи студентов в локальной сети (в русской общаге было меньше сотни), тоже irc-server. На каналах нет операторов, нет даже chanserv-а, но банить никого не нужно — все общаются спокойно и доброжелательно. Кроме чата был свой news-сервер с большим трафиком, но и там не возникало нужды кого-либо банить.
+2
+10
Это как детское воспитание. Если ребенку еще в детском садике объяснить что слова такие-то и такие-то нехорошие и их употребление — это неуважение и не только к другим, но и к себе, то и по мере взросления он этих слов будет употреблять не много и не часто. А если у человека матерное слово это просто просто «часть речи» (предлог или союз), то никакие модерации и даны по IP не спасут. Он будет считать, что он прав а остальные нет.
Это как детское воспитание. Если ребенку еще в детском садике объяснить что слова такие-то и такие-то нехорошие и их употребление — это неуважение и не только к другим, но и к себе, то и по мере взросления он этих слов будет употреблять не много и не часто. А если у человека матерное слово это просто просто «часть речи» (предлог или союз), то никакие модерации и даны по IP не спасут. Он будет считать, что он прав а остальные нет.
0
Запретный плод сладок, потому и у нас так получается, что если за мат получишь Бан, то большинство проявляет спортивный интерес. А там никто никого не банит, вот и не матерятся в той степени, в которой это у нас.
0
не люблю я такие полуалгоритмы
пользы от них никакой
больше проблем
пользы от них никакой
больше проблем
0
А я пользуюсь вот такими «регулярками» .*ху(й|и|я|е|ли|ле).*
-1
Мат иногда бывает в тему.
0
спасибо автору за эту статью, особенно за «Расстояние Левенштейна», очень полезная штука, зуб даю что пригодится не раз.
0
НЛО прилетело и опубликовало эту надпись здесь
250 слов в студию!
+1
Я всегда смогу найти способ написания матерного слова, который поймёт человек, но не поймёт парсер :)
+1
в этом посте я увидел больше мата, чем на всём хабре за месяц. отлично, отлично, господа борцы с матом.
+1
Дабы отсекать всякие извращения с заменами букв посреди слова, нужно принудительно транслировать их в язык превалирующий в данной фразе и выдавать именно в транслированном виде(просто получать их транскрипцию в этот язык). Например: Я пошел купить hleba => Я пошел купить хлеба.
Таким образом отсекутся слова с замененными схожими буквами и их проще будет проверять, и после транслирования они уже не будут матами. Но будет проблема со всякими именами, аббревиатурами и тд.
Таким образом отсекутся слова с замененными схожими буквами и их проще будет проверять, и после транслирования они уже не будут матами. Но будет проблема со всякими именами, аббревиатурами и тд.
0
мои попытки написания мат-фильтра в свое время споткнулись на слове «витебляне», после чего фильтр был благополучно заброшен
0
я на одном проекте решал так:
1. разбиваем строку по пробелам
2. проверяем слова на принадлежность к белому списку слов
3. если пусто, то проверяем регуляркой
4. если пусто, проверяем по доп базе написаной ручками
после нескольких месяцев тестирования и заполнения баз, эффект отличный.
один минус, ресурсоемко :(
1. разбиваем строку по пробелам
2. проверяем слова на принадлежность к белому списку слов
3. если пусто, то проверяем регуляркой
4. если пусто, проверяем по доп базе написаной ручками
после нескольких месяцев тестирования и заполнения баз, эффект отличный.
один минус, ресурсоемко :(
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем фильтр «плохих» слов