Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтр мата на Java 
:(
    Опции темы
Се ля ви
Дата 21.1.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Делаю форум для сайта http://www.inoSMI.Ru . Сайт посвящен переводам видной западной прессы о России - даёт представление о мнении элитной западной прессы (разделяемой, как мне кажется, очень многими) о нас.

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

Нужен фильтр, который бы мог заменять мат на "<слово удалено цензурой>" или что-то в этом роде - крайне желательно, что бы он был написан на Java...
Если не найду на Java, задам вопрос в более общий раздел форума - тогда, видимо, придётся заворачивать в веб-сервис или что-то наподобии этого...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Domestic Cat
Дата 21.1.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Ну вот простой вариант
Код

public class FFilter {
     protected static String[] forbidden = {"Microsoft", "corporation", "Windows"};

     public static String filter(String input) {
        for(int i = 0; i < forbidden.length; i++) {
          StringBuffer stars = new StringBuffer();
          for (int j = 0; j < forbidden[i].length(); j++) {
            stars.append("*");
          }
          input = input.replaceAll("(?i)"+forbidden[i], stars.toString());
        }
        return input;
     }

     public static final void main(String[] arg) {
       String test = "Visual Studio .NET 2003 Copyright Microsoft corporation";
       System.out.println(filter(test));
     }
}


Все дело в том чтобы загнать побольше слов, во всех возможных сочетаниях.



--------------------

PM   Вверх
Се ля ви
Дата 21.1.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



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

Поидее, мне нужно фильтровать не столько по написанию, сколько по звучанию - поэтому нужна функция на подобии запроса LIKE БД... Но специфическая...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Domestic Cat
Дата 21.1.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
Поидее, мне нужно фильтровать не столько по написанию, сколько по звучанию - поэтому нужна функция на подобии запроса LIKE БД... Но специфическая...


Дык регекспы покруче LIKE будут smile


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


Ну так на любом языке можно сделать :
fuck
f/\ck
f*u*c*k
Fuk
..... ad infinitum
В-первых тебе окончания слов не нужны, достаточно корень вырезать, а это сокращает словарь.
Во-вторых можно подумать как эти слова задать регекспами:
http://java.sun.com/docs/books/tutorial/ex...egex/index.html
то есть не задавать целиком слова / корни.


--------------------

PM   Вверх
Се ля ви
Дата 21.1.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Domestic Cat
RegExp`ы я знаю неплохо, хотя за ссылку спасибо всёравно :-)

Хорошо, допустим, можно сделать действительно на них (RegExp`ах) - идея хорошая, сгодится. Тогда нужен их список для всех слов русского мата... Где-нибудь что-то подобное есть?

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

Да, тогда всё упирается в написание такого массива - первая версия может быть написана за день-два достаточно муторного кропотливого труда, остальное доделывать по факту обнаружения ошибок...

Ещё, менее "дорогие" по времяни варианты?

Неужели никто не сталкивался до меня с такой проблемой? Не вверю... smile



--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Sun
Дата 21.1.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 8
Всего: 48



Насколько я знаю нормального решения для фильтра матов нет. Если искать по корню, то такие слова как "гребля", "сабля" и т.д. сильно пострадают.


--------------------
Account removed
PM MAIL   Вверх
Domestic Cat
Дата 21.1.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



smile А нечего про всякие гребли-сабли писать smile smile
Добавлено @ 14:52
http://www.relib.com/forums/topic.asp?id=810403


--------------------

PM   Вверх
sergejzr
Дата 21.1.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Domestic Cat, и по моему ИМХО тоже smile

Вот кое что. Движек на tcl'e + словарь smile

http://irc.tm-net.ru/soft/eggdrop/scripts/antimat.tar.bz2



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 21.1.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



ИМХО любой фильтр можно обойти, но с другой стороны если админ не спит, то второй раз то же фокус не пройдет. Так что основной поток мата можно отсечь.

Можно попробовать накидать примерный алгоритм:
1) разбиваешь текст на токены
2) ищешь все слова состоящие из смешанных букв, и в них заменяешь все латинские буквы на аналогичные русские буквы (как то икс на ха), и наоборот если требуется фильтр английского мата. Соответственно для каждого токена может быть несколько вариантов. Так же можно заменять псевдографику.
3) переводишь транслит
4) а теперь просто проходишься по списку токенов обычным фильтром

Реализовывать это конечно будет не просто, но после реализации алгоритма, основная проблема будет только в обучении фильтра, но в этом тебе форумчане помогут smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 21.1.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Давайте разработаем антимат на яве?
У меня тоже мысли имеются и кое какой опыт smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 21.1.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(sergej @ 21.1.2005, 21:40)
У меня тоже мысли имеются и кое какой опыт

Поделись.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 21.1.2005, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



В принципе кластерингом документов в последнее время занимаюсь с использованием онтологий. ну и wordprocessings всякие тоже туда принадлежат. Немного не то, но вполне применимо.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Се ля ви
Дата 22.1.2005, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Цитата(LSD @ 21.1.2005, 21:28)
Реализовывать это конечно будет не просто, но после реализации алгоритма, основная проблема будет только в обучении фильтра, но в этом тебе форумчане помогут

Цитата(sergej @ 21.1.2005, 21:40)
Давайте разработаем антимат на яве?
У меня тоже мысли имеются и кое какой опыт smile

Давайте вместе, канешь :-)


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
chipset
Дата 22.1.2005, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Цитата(sergej @ 21.1.2005, 10:40)
Давайте разработаем антимат на яве?
У меня тоже мысли имеются и кое какой опыт smile

А что? Неплохая идея... smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
sergejzr
Дата 22.1.2005, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Предлагаю во первых открыть для проекта новую тему в "наших проектах". Кто откроет, тот и будет рулить smile
Туда и идеи и релизы кладывать. На яве будет перспективно-кроссплаттформенно.
Я вообще удивляюсь, что ничего серьёзного в этом направлении нет....


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1169 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.