23 апр. 2018 г.
В данном посте решается задача обнаружения мата в комментариях. Впринципе можно сделать с помощью stop words. Эти списки есть в открытом доступе. Но, как правило, списки неполные. И уж точно не учитывают все возможные словоформы
В итоге многие матерные слова все равно идут мимо фильтра. На помощь приходят анализаторы. Всего мне попалось 2 анализатора, которые работают неплохо(смотрел варианты на php).
Достаточно простой парсер. Но работает, в целом, неплохо
https://github.com/vearutop/php-obscene-censor-rus
Более сложный и расширенный. Разарбатывался с 2005г. Основная логика работы - составляется гигантское регулярное выражение. В него включены различные словоформы и исключения к ним.
https://github.com/rin-nas/php-censure
Комментариев на сайте много и все их вручную проверять совсем не хочется. В итоге пришел к такому решению:
Коментарий разбивается на слова и каждое слово проверяется по списку стоп слов. Если находится стопслово, комментарий банится автоматически.
Далее весь текст передается автоматичесим анализаторам. В итоге решил использовать оба.
Если коментарий не прошел проверку, то ставим статус pending и отправляем на премодерацию.
На этом пока все. Спасибо за внимание!