Как стать автором
Поиск
Написать публикацию
Обновить

Мой фильтр нецензурных выражений для «ВКонтакте»

В первом посте я хочу рассказать о своём «проекте». VeriComm — программа модератор. Идея создания такого приложения возникла у меня в апреле этого года. Серфил по просторам сообществ «ВКонтакте». В одном из N сообществ происходили перепалки двух сторон. И бедный модератор пытался уследить за всем. Почему бы не взять и не написать свою программу для модерации?

Я познакомился с такими словами как API, «Standalone-приложение», посмотрел примеры библиотеки для .Net C#. Google мне быстро выдал github.com/vknet/vk — у неё была документация, что меня очень порадовало.

Для начала я ознакомился с методами:

  • Авторизация
  • Получение списка групп где я имею права – модератора
  • Получение постов / комментариев на стене / фотографиях / обсуждениях

Затем необходимо было придумать логику удаления. Так как мы люди умные и хитрые, найдём же способ «кхм-кхм». Необходимо было написать не просто базу, содержащую элементы матов, но и сделать её «универсальной». Для этого я просто обрезал «нецензурные» слова до корня, чтобы при склонении их можно было отследить. А также создал их транслит-аналоги — vot tak. Но, опять же, вдруг там вставят пробел или любой другой символ типа !@#$%^&*()…

Первое

Если вставили пробел.

text.Trim(new char[] {' ', '!', '@', '#', '$', '%', '^', '&v*', '(', ')' })

Второе

Если один текст имеет разный регистр.

text.ToLower();

Наконец-то мы получили нашу «заготовку» — чистая строка. Проверяем каждый текст сообщения:

text.Contains();

Циклом задаем параметр, какую подстроку мы должны найти. Идём дальше!

Если нам нужно запретить ссылки от «грязной» рекламы, люди или боты, которые пишут ссылки на свои группы. Тут два пути: либо мы делаем всё так же и не беспокоимся, либо нам уже необходимо проверять по сайту, например: ()com.

Некоторые группы имеют свойство запрещать ссылки на другие группы или сайты. Так же можно определить сайты с тем или иным доменом. Тот же самый цикл, только сопоставление «имитатора» точки и домен @ com (.)ru и так далее.

В создании этой программы вроде бы ничего сложного нету. Используются обычные стандартные методы класса String и одна SDK. Как же сейчас работает проверка на не цензурные выражения?

Общим словом — никак. Как я думаю, она разделяет сообщение по словам — по пробелам. Только затем она проверяет:

If (mywords == Badword)


Никаких Contains. Проверка «ВКонтакте» работает, если слово написано правильно, без пробелов между буквами, без транслита. И конечно нечего тут говорить о проверке нежелательных ссылок в группе. А база со словами была очень мала: примерно 70% слов он пропускал, пришлось добавлять их вручную.

Мне кажется, это можно было бы сделать куда лучше.

Итог

Проект был придуман и разработан исключительно для саморазвития и моего интереса «смогу ли я». Я узнал, что такое API, «Standalone-приложение». И победил в конкурсе проектов IT-START, в городе Улан-Удэ.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.