Лихо не пинайте, я только учусь.
Недавно понадобилось мне подключить мой проект (сайт на WordPress, Телеграм-канал, ВК группу) к фильтру матов и озадачился я предложениями, которые выдает интернет. Поэтому решил проанализировать те, что смог найти и составить личный список, который, надеюсь поможет коммунити Хабра.
Спойлер: найдено всего два сервиса и если знаете еще, то пишите в комментариях.
Сначала о том, какие трудности были
Проблема 1: напиши код сам
Когда пытаешься найти в Яндексе, Гугле и даже Мейле с Бингом сервис для фильтрации матов, то поисковики выдают все, что можно, но только не то, что нужно. Это и "как написать простой фильтр матов", и "скрипт плохих слов", и "BERT — state-of-the-art" и прочее подобное начиная с 2009 года публикации, что нужно хорошенько сдобрить молотком и напильником.
Проблема 2: заполни словарь сам
Возьмем инструкцию по донатам для Твича. Сама инструкция понятная, но это же сколько нужно точечно проработать разных вариаций комбинациями вроде Плохие слова: wc:д__а
- тут слово начинающееся с "д" и заканчивающееся на "а" будет помечено звездочками. Это сколько же таких вариантов надо прописать?
В более простых случаях нужно просто наполнить словарь своими словами. Однако я пытался и понял, что придется указывать не только именительный падеж и число, но и все варианты, типа такого: мухо-сабля, мухо-саблю, мухо-саблями, мухо-саблей (© Breaking Bad). Все это помножить на шестнадцать.
Проблема 3:
Это, что называется, моя личная драма, но хотелось бы найти сервис, который можно было бы подключать из одной точки. То есть чтобы не приходилось отдельно настраивать слова и режимы в телеге, отдельно в ВК, отдельно настраивать на сайте. Потому что это и удорожание и трата времени на настройку. Ведь хочется войти на одном сервисе, заполнить разово все стоп-слова и пользоваться везде.
Актуальность
Судя по тому, каков опрос о востребованности фильтров в старой статье Хабра, сообщество разделилось в далеком 2014 примерно пополам.
С другой стороны, сегодня тот же ВК не стоит на месте и вводит в действие нейросеть, которая борется с оскорблениями. На Пикабу родился и сразу умер пост про "Сделайте фильтр матов". Внутренние фишки в Твичах, Одноклассниках, Стимах - все это показатель, что кому-то да требуется фильтрация.
Следовательно вопрос: а чего тогда найти-то сложно такой сервис? Хорошо, я могу включить в ВК и пусть он как-то своим алгоритмом защищает, но что делать с сайтом и Телеграмом?
Найденные сервисы
Сервисов на самом деле не много. Всего два и на поиск убил часов 5, причем не из поисковиков прямо, а как-то левыми путями, через ссылки на сайтах. Если кто-то найдет еще, добавляйте в комментарии.
WebPurify
Есть плагины под 6 CMS
Есть тестовый период
Цена за месяц на момент обзора $15 - за один язык, $50 - за большее кол-во.
двойные буквы, слитые слова, подстановку @ или * в английских запрещенных словах неплохо распознает
двойные буквы, слитые слова и замену на символы в русских словах не всегда распознает, но все же бывает, но транслит не видит
Ответ возвращается TRUE или FALSE, что в общем-то для последующей обработки не самое удобное, но на голяк и так хорошо.
Есть статистика (жирный плюс за визуал)
Есть индивидуальный черный список и белый список
Есть предварительное тестирование запросов в админке
Принимает GET и POST запросы, отдает XML, JSON
В меньшем тарифе за $5 нет API, а в том, что за 15 ограничение на один домен или IP, что в общем-то предостаточно, если все пропускать через один узел, но один язык - недостаточно. Так что раскошеливаемся на почти 4000 в месяц.
Круто то, что есть API. Считай, можно все пропускать через него и будет одинаковый результат. Сложилось впечатление, что у ребят есть опыт и дело прёт, потому что и 6 CMS и отдельные фильтры матов для фото и для видео, ну и сайт более презентабельный, чем у следующего по списку.
LF-сервис
Нет плагинов под CMS, модулей, ботов
Вместо тестового периода есть демо-форма и промо-баланс, а также функция предварительной оценки стоимости проверки.
Стоимость проверки образуется из стоимости обращения и стоимости за знак: проверка 1000 знаков одним запросом будет стоить 15 копеек, за 100 рублей получится проверить 667 сообщений сноска 1. При включении глубокой проверки - в два раза дороже.
двойные буквы в английских словах не распознает, а слитые слова, подстановку @ или * неплохо распознает
двойные буквы, слитые слова, транслит и замену на символы в русских словах неплохо распознает
Ответ от API возвращается с примерным положением слова в тексте и его длиной. То есть на своей стороне можно как-то подсветить для модератора слово.
Можно предлагать свои слова в общую библиотеку и помечать в демо-форме, если слово не было найдено.
Принимает только POST запросы, отдает только JSON
Ограничение на 1 запрос в 3 секунды с одного источника и на 1000 символов за одно обращение.
сноска 1 - это расчеты на основании данных под демо-формой - подогнал текст под 1000 знаков
Особо порадовало то, что есть разделение на словари: защита детства, русские тяжелые маты, английские тяжелые маты и русские террор-слова и их можно подключать отдельно. Правда, во фразе "застрахуй два корабля и получишь два рубля" сервис помечает слово "корабля", а также пару запрещенных организаций не нашел.
Вообще, по распознаванию английских/русских слов, этот сервис можно назвать обратным к WebPurify: ищет лучше русские, а английские хуже. Дизайн сервиса не воодушевил - много букв.
Итого
С одной стороны, WebPurify за 4000 в месяц дорого, если считать что у меня за день сообщений 300 если наберется, то хорошо.
Экономика заставляет считать. Будем считать исходя из многосложного тарифа LF-сервиса, потому что вот так. Иначе не сравнишь. Долго голову ломал, какая формула, но картина следующая.
300 обращений * (500 символов * (0.0001 руб за символ + 0.00015 руб за символ при глубокой проверке) + 0.05 руб за обращение) * 30 дней = 1575 рублей в месяц
В реальности выглядит так: в первые сутки (даже часов 15, наверное) использования, промо-баланс просел на 45 рублей.
Чисто с финансовой точки зрения, если у кого-то больше 1000-2000 текстов в сутки, можно сразу идти на WebPurify, чтобы потом под API другого сервиса не переписывать и людей не переучивать.
С точки зрения качества проверок, с учетом гибкости человечьей речи, я бы раздал баллов примерно поровну, может с небольшим перевесом в сторону российского сервиса из-за чуть лучшего распознавания.
С точки зрения удобства WebPurify лучше, но это мое личное мнение из-за статистики в админке, белого и черного списка и тестирования запросов в админке.
В обоих случаях модератор обойдется дороже, а если в день меньше 10-20 текстов проходит через вас, то можно вообще не париться, если эти тексты не представляют из себя газетные статьи.