Wednesday, March 14, 2018

Telegram-бот. Цензура чата (часть 2)

 

Вступление

В рамках очередного хакатона был создан gdg-censor-bot (тыц). Бот удаляет из сообщений матерные слова. После длительного тестирования появилось много вопросов, которые будут изложены ниже. Подробнее можно почитать в прошлой статье.

Вопросы

1. Виды информации

В чатах люди не только пишут текст. Люди обмениваются картинками, ссылками, видео, аудиозаписями, стикерами. Бот работает только с текстом. Нагляднее возможности бота:
  • ✅ цензура текста;
  • ⛔️ цензура аудио;
  • ⛔️ цензура видео;
  • ⛔️ цензура изображений.
Как быть, если пользователь отправить изображение нецензурщины или аудио с матерными словами?

2. Транслитерация

Для того чтобы исключить возможность заменять кирилицу аналогичными латинскими символами, была введена транслитерация. т.е. для бота теперь слово «debil» равнозначно слову «дебил». Этот алгоритм работает хорошо. Тем не менее введение транслитерации добавило проблем:
  • в слове facebook бот стал распознавать слово "eb" равнозначного русскому глаголу "еб". В результате цензурирования получается слово fac...ook
  • в транслитерации нет единого трактования букв «я», поэтому люди пишут «blyad», «bliad» и «bljad'»
Что делать с транслитерацией пока непонятно. Самый простой вариант — убрать.

3. Ссылки

Бот обрабатывает ссылки, как текстовую информацию. Если в адресе ссылки есть бранное слово — бот его вырежет. Нецензурные слова в ссылках могут появляться двумя способами:
  1. Владелец сайта сознательно создает ссылку типа: «http://news.ru/не-бзди-все-будет-хорошо.html»
  2. Ссылка может генерироваться программным путем. Наглядный пример:
  3. Ссылка может вести пользователя на ресурс, где потенциально много нецензурной речи. Непонятно, как к этому вообще относиться. 🙂

4. Разделители в словах

Бота легко можно обойти, добавив разделители. Пример: «п_р_и_д_у_р_о_к», «деби лойд».
Что делать с разделителями? И вообще нужно ли с ними что-то делать?

5. Иностранные маты

Что делать с иностранными матами?
От более очевидных матов «довбойоб», «ïбанько» из Украины, «ébate» из Хорватии
до менее очевидных "pulte hore" из Норвегии или "kutas" из Польши.

6. Маты и ругательства

Есть много слов, которые не являются матами, но носят строго негативный оттенок:
  • «придурок»;
  • «дебилойд»;
  • «чмошник».
Тут все понятно — бот их цензорит. Проблема в том, что есть еще больше слов, которые в зависимости от контекста носят негативный, нейтральный или положительный оттенки:
  • «трахнуть» (в смысле ударить / в смысле - половое действие);
  • «дегенерат» (медицинский диагноз / оскорбление);
  • «проститутка» (древнейшая профессия / оскорбление).
Что делать с такими словами - совершенно непонятно!

7. Unicode символы

Для многих букв русского языка есть аналоги в таблице unicode символов:




Пример:
  • «прⓤдⓨрок»;
  • «д𝔼б𝓾лойд»;
  • «ч𝙈ош𝘏ик».
Как быть в этом случае?

8. Мат как часть слова

Пример:
  • «застрахуй»;
  • «оглобля»;
  • «потреблять»;
  • «сабля».
Тут бот использует белый список, который запрещает боту цензурировать слова, часть которых является нецензурным словом. Этот алгоритм тоже имеет недостаток. Бот пропустит такие слова:
  • «страхуйщик»;
  • «рублядь».
Это маловероятно, но возможно.

9. Сокращения

А еще маты можно сокращать:
  • «збс»;
  • «пздц»;
  • «блть».
В принципе, эти сокращения тоже можно добавить в словарь матов. Этот вопрос решается легче всех остальных, но тоже чреват последствиями.

Итого

Цензура — сложный вопрос.
Он заставляет задуматься о том, что вообще есть «хорошо» или «плохо» в широком смысле.
Такие слова, как «лопух» или «заднеприводный» легко могут быть использованы как оскорбления, а такие слово как «жесть» или «дичь» — внезапно будут означать что-то плохое или неприличное.

Стоит ли вообще заниматься цензурированием? ДА! Тестирование показало, что бот определяет 99,9% нецензурных слов. Людям лень придумывать обход матов и они выбирают посто не материться!

Хотите потестировать?

Просто присоединяйтесь к группе:
https://t.me/GDGCensorChat

Тут можно свободно тестировать все мыслимые и немыслимые бранные слова.

О том, что такое томита-парсер, можно почитать в части 3.