Фильтр матерных слов для сайта

23 Apr 2018

В данном посте решается задача обнаружения мата в комментариях. Впринципе можно сделать с помощью stop words. Эти списки есть в открытом доступе. Но, как правило, списки неполные. И уж точно не учитывают все возможные словоформы

В итоге многие матерные слова все равно идут мимо фильтра. На помощь приходят анализаторы. Всего мне попалось 2 анализатора, которые работают неплохо(смотрел варианты на php).

php-obscene-censor-rus

Достаточно простой парсер. Но работает, в целом, неплохо

https://github.com/vearutop/php-obscene-censor-rus

php-censure

Более сложный и расширенный. Разарбатывался с 2005г. Основная логика работы - составляется гигантское регулярное выражение. В него включены различные словоформы и исключения к ним.

https://github.com/rin-nas/php-censure

Логика работы

Комментариев на сайте много и все их вручную проверять совсем не хочется. В итоге пришел к такому решению:

Коментарий разбивается на слова и каждое слово проверяется по списку стоп слов. Если находится стопслово, комментарий банится автоматически.

Далее весь текст передается автоматичесим анализаторам. В итоге решил использовать оба.

Если коментарий не прошел проверку, то ставим статус pending и отправляем на премодерацию.

На этом пока все. Спасибо за внимание!