Инициатор томской идеи о фильтрации мата считает интернет большим забором

Пишем фильтр «плохих» слов

Инициатор томской идеи о фильтрации мата считает интернет большим забором

Многие из вас наверняка не раз бывали в публичных многопользовательских чатах. Будь то форум, вебчат или чат-сервер в локалке провайдера, идеального порядка можно достичь лишь при малом количестве пользователей (не более сотни, на мой взгляд).

Когда сообщество разрастается, возникают примерно одни и те же проблемы: мат, спам и флуд — один скучающий индивид каждую минуту постит «Все в кантру!», другой матерится по поводу и без и все в таком духе. Идеального мат-фильтра до сих пор не изобретено.

Но мы этим заниматься и не будем, рассмотрим реализацию необходимого минимума.

Мат

Конечно же мы на нем разговариваем, кто же спорит :). С моей точки зрения мат может иметь место для красного словца или выражения пущей экспрессии. Но далеко не все столь легко его воспринимают и с этим необходимо мирится (или создавать свое сообщество а-ля «матерись сколько влезет»).

Особенно неприглядно выглядит поток слабомотивированного мата от не слишком умных / воспитанных граждан. Ну это оставим на их совести. Русский язык очень богат возможностями слово и фразообразования, поэтому матерных конструкций придумать можно очень много — порой диву даешься. Так что мы (пока) не будем пытаться бороться с этими явлениями.

Решение в лоб — фильтр по словарю. Сам словарь, думаю, не составит большого труда собрать. У меня вышло где-то 250 слов :). Но первые же опыты показывают — это метод не дает положительного результата. Юзеры обучаются обходить его крайне быстро, видя неудачи пары первых погорельцев.

Как они это делают? В основном вариантов несколько:

  • Замена согласных на парные созвучные им (например «х» на «к»);
  • Замена букв на аналогично выглядящие латинские («п» — «n», «и» — «u»);
  • Смешение кириллицы и транслита;
  • Употребление псевдографики.

На помощь приходят регулярные выражения.

Создадим таблицу замены символов с учетом вышесказанного.

(
  'а' => ['а', 'a', '@'],
  'б' => ['б', '6', 'b'],
  'в' => ['в', 'b', 'v'],
  'г' => ['г', 'r', 'g'],
  'д' => ['д', 'd', 'g'],
  'е' => ['е', 'e'],
  'ё' => ['ё', 'е', 'e'],
  'ж' => ['ж', 'zh', '*'],
  'з' => ['з', '3', 'z'],
  'и' => ['и', 'u', 'i'],
  'й' => ['й', 'u', 'y', 'i'],
  'к' => ['к', 'k', 'i{', '|{'],
  'л' => ['л', 'l', 'ji'],
  'м' => ['м', 'm'],
  'н' => ['н', 'h', 'n'],
  'о' => ['о', 'o', '0'],
  'п' => ['п', 'n', 'p'],
  'р' => ['р', 'r', 'p'],
  'с' => ['с', 'c', 's'],
  'т' => ['т', 'm', 't'],
  'у' => ['у', 'y', 'u'],
  'ф' => ['ф', 'f'],
  'х' => ['х', 'x', 'h', 'к', 'k', '}{'],
  'ц' => ['ц', 'c', 'u,'],
  'ч' => ['ч', 'ch'],
  'ш' => ['ш', 'sh'],
  'щ' => ['щ', 'sch'],
  'ь' => ['ь', 'b'],
  'ы' => ['ы', 'bi'],
  'ъ' => ['ъ'],
  'э' => ['э', 'е', 'e'],
  'ю' => ['ю', 'io'],
  'я' => ['я', 'ya'],
)

* This source code was highlighted with Source Code Highlighter.

Теперь нужно сделать из нашего словаря библиотеку регулярных выражений. В принципе их можно конструировать и налету. Принцип анализа прост: на месте буквы может быть любая последовательность из таблицы. Чтобы народ не хитрил вставляя пробелы, точки и т.п. между буквами для обхода фильтра — их появление между буквами тоже учитываем. Ну и чтобы не было ложных срабатываний будем отрабатывать только слово целиком, без учета словообразования сложных конструкций. Да, последнее конечно несколько снижает эффективность фильтра, но все-таки видоизмененные слова уже не очень-то и мат, а основную массы базовых слов и фраз мы можем отрезать словарем. В принципе если срабатывание фильтра необходимо только для скрытия неприглядных слов (а не для немедленного бан-хаммера :)), то это условие можно отбросить. В итоге для всем известного слова из трех букв регулярка будет выглядеть примерно следующим образом: m/(?:|\W)((?:х|x|h|к|k|}{)\W*[уyu]\W*[йuyi])(?:$|\W)/ig;
В общем суть проста: делаем словарь, из него генерируем библиотеку регулярок и применяем их в нашем фильтре. Недостатки подхода:

  • Необходим большой словарь;
  • Не учитывается морфология русского языка;
  • Возможны ложные срабатывания («Куй железо пока горячо!»)

Т.е. в общем-то это не панацея, но определенный эффект сдерживания имеет.

Спам и флуд

Флуд или бессмысленный поток символов, смайлов, предложений может порядком надоедать. Спамом в нашем контексте мы также будем считать разновидность флуда, повторяющиеся фразы вроде «Фсе ф кантру! Создано на x.x.x.x» или «Народ, заходим на мою супер мегастраничку link». Впрочем эти явления больше характерны для чатов.

Отслеживать все это дело можно чисто механически, без применения какого-либо семантического анализа текста — а есть простые методы это сделать? С флудом повторяющимися символами и смайлами в общем-то все понятно: подсматриваем в живом чате самые частые схемы флуда и используя квантификаторы их моделируем. Лишь некоторые примеры: /(.)\\1{15,}/is; /(.

{3,})\\1{5,}/is; /(|\r|\r)\\1{3,}/is; Сложнее дело обстоит с повторами фраз. Подход в лоб довольно примитивен: сравниваем n-последних сообщений пользователя и в случае совпадений «срабатываем». Первейший способ сопротивления — добавляем пробелы в строку, меняем количество знаков препинания (точек, восклицательных знаков).

Впрочем, мы ведь можем сделать нормализацию строки, учитывающую такие изменения: например, просто убираем все лишнее. Однако, тут нас ждет неудача со второй волной сопротивления: фразу начинают слегка менять, добавлять междометия, вводные слова и т.п. Вот тут уже пригодятся алгоритмы нечеткого сравнения.

Например можно вычислять Расстояние Левенштейна.

Реализация этого алгоритма не очень сложна и есть на большинстве популярных языков, а в php так вообще присутствует нативно. Фактически, он возвращает разницу строк в количестве правок, необходимых для получения второй строки из первой.

Далее дело техники: определяем минимальный размер сообщения, на который стоит реагировать, считаем расстояние и если оно не превышает, например, 20% от длины сообщения, то считаем его повтором! Все просто. Длину сообщения и порог расстояния подбираем эмпирически, чтобы не мешать обычным пользователям. Этот метод, конечно же, поможет только в противодействии скучающих индивидов, рассылающих все вручную (отсюда и малые правки, и повторяемость фраз). Если же пользователь шлет разнородные сообщения с пугающей скоростью, то скорее всего это спам-бот и тут нужны другие подходы или действия живого модератора.

Мат в интернете: виртуальная борьба с реальной проблемой

Инициатор томской идеи о фильтрации мата считает интернет большим забором
МОСКВА, 30 июл — РИА Новости.

Обсуждения новых инициатив российских законодателей по расширению ограничений в интернете — а именно намерение главы комитета по вопросам семьи, женщин и детей Елены Мизулиной блокировать доступ к интернет-сайтам с нецензурной лексикой — выявили два принципиально разных подхода к проблеме: следует ли бороться с виртуальной средой распространения мата — интернетом, или все же нужно бороться с реальным падением общего уровня культуры общения в стране, порождающим терпимость к употреблению ненормативной лексики.

Одна из наиболее показательных дискуссий на эту тему состоялась во вторник во время “круглого стола” в Госдуме.

Чего хотят законодатели

Первый зампред комитета Госдумы по вопросам семьи женщин и детей Ольга Баталина считает, что необходимо подумать о дополнительных правовых мерах регулирования поведения в интернете.

“Все то, что является оскорбительным в реальной жизни, является оскорбительным и в интернете. Если для этого (борьбы с оскорбительными проявлениями — ред.) необходимы дополнительные правовые нормы, давайте подумаем о них”, — сказала Баталина.

Депутат также полагает, что удержать людей от использования матерных слов ограничить одна лишь их внутренняя культура не сможет — необходима еще и законодательная ответственность в виде статей административного и уголовного кодекса.

При этом в настоящее время в Кодексе об административных правонарушениях (КоАП) уже есть статья 20.1., касающаяся мелкого хулиганства, что есть правонарушения, не повлекшего тяжких последствий, подпадающих под действие Уголовного кодекса.

Это вид правонарушений определяется как “нарушение общественного порядка, выражающее явное неуважение к обществу, сопровождающееся нецензурной бранью в общественных местах”.

Наказание — штраф до тысячи рублей или административный арест на срок до пятнадцати суток.

Когда ждать мат-фильтров в сети

Инициатор виртуального похода против нецензурщины Елена Мизулина заявила во вторник, что в осеннюю сессию в Госдуме пройдут большие слушания на эту тему.

“Законодательных инициатив в комитете нет. Мы не готовы их разрабатывать, потому как пока непонятно, что разрабатывать. Мы договорились, что проведем осенью в Думе парламентские слушания, где предложим презентовать различные варианты защиты детей в интернете”, — сказал она.

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

Таким образом, по словам депутата, они перейдут на следующий этап дебатов и тема будет перенесена на более высокий уровень.

Кроме того, по словам Мизулиной, законодательство РФ в целом необходимо систематизировать и кодифицировать, так как сегодня в разных законах идет речь об одном и том же, и законодательство в целом получается разбалансированным.

Что делать

Состоявшиеся обсуждения, впрочем, выявили, что значительное число представителей власти и общественных деятелей ясно видят, что вопрос не в интернете, а в общей атмосфере в обществе.

“Мы, наверное, должны, прежде всего, заботиться о том, чтобы воспитывать детей с самого начала. Воспитанные люди, обнаруживая нецензурную лексику, либо проигнорируют ее, либо уйдут сразу. Надо воспитывать людей, детей”, — сказал выступивший на “круглом столе” во вторник в Госдуме замруководителя Роскомнадзора Максим Ксензов.

Сенатор Руслан Гаттаров также высказал мнение, что нецензурную лексику нужно контролировать в реальной жизни, а не блокировать бесчисленное множество страниц в интернете. Он считает, что блокировка сайтов не является эффективным решением проблемы доступа детей к нецензурной лексике.

Сенатор предложил заняться вопросом оснащений школ реально работающими фильтрами, пропускающими детей лишь на проверенные интернет-ресурсы с доброкачественным содержанием.

Впрочем, по мнению представителя Российской ассоциации электронных коммуникаций (РАЭК) Ирины Левовой, одними фильтрами проблему не решишь.

Левова отметила, что именно родители определяют методы воспитания и границы доступной информации для своих детей, и вот в этом возможность фильтровать информацию сможет помочь родителям.

Удастся ли зачистить сеть от мата

Помимо возражений по поводу полезности введения ограничений в интернете как средства борьбы с матом, специалисты указывали также на технические и юридические сложности такого подхода.

Эксперт РАЭК Матвей Алексеев заявил, что отфильтровать мат в интернете в полностью автоматическом режиме невозможно, попытка организовать фильтрацию нецензурных выражений приведет к тому, что это скажется на оперативности и может замедлить работу технических систем интернета.

Известный интернет-специалист Игорь Ашманов обращает внимание на то, что вопрос блокирования интернет-ресурсов из-за содержания в них мата, мягко говоря, неоднозначен с юридической точки зрения. По его мнению, технически фильтровать информацию может и можно.

Но для этого нет юридических оснований, как минимум в вопросе определения круга нецензурной лексики. Словарь или список нецензурных выражений не может быть сформирован, из-за огромного количества вариаций написания и преобразования основных матерных слов.

Ранее Координационный центр национального домена в сети интернет пытался получить экспертно одобренный список нецензурных слов для включения их в стоп-лист доменных имен на русском языке.

Попытка кончилась ничем, потому что эксперты затруднились дать исчерпывающий список таких слов и ограничились рекомендацией составлять стоп-лист, исходя из здравого смысла.

Источник: https://ria.ru/20130730/953088800.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.