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

Поиск:

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

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



С посещаемостью этого форума вопрос о том, чтобы новую систему потестить не встанет smile За месяц можно столько извращенских написаний собрать, что потом уже трудно будет придумать что-то новое.
PM WWW ICQ   Вверх
Domestic Cat
Дата 23.1.2005, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



1. Парсим стринг по чарам. Берем 1 чар и сиздаем объект Pair содержащий char, int[] положения в исходной строке (если мы впоследствии переведем ya->я то нужно помнить две позиции а не одну) и булиновый флаг.
а. Пробелы выбрасываем сразу (то есть даже Пару под них не создаем), т.к. можно ведь написать
f u c k
и потом он ни под один регексп не подойдет.
б. Выбрасываем все "очевидные" знаки пунктуации: ? , .
в. Записываем все подряд в массивлист.
г. При этом переводя в нижний регистр.

2. Нужны есессно свои методы поиска, т.к. регеспы при всем желании на массиве объектов не заработают.

3. Теперь ищем неочевидную гадость со знаками / | \ ^ * типа б/|я. Заменяем на нужные буквы.
Незаменяемые символы выбрасываем.

4. Переводим весь инглиш в русский как в транслите.

5. Переводим 1234567890@$%& <> - например п1д0р
Незаменяемые символы выбрасываем.

6. Имеем рашн текст, по которому ищем все известные нам корни если нашли, заменяем в Парах флаг на ТРУЕ.

7. Теперь проходим по массиву и для тех Пар у которых ТРУЕ берем индекс и заменяем символ в стринге по этому индексу на *.


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

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


Un salsero
Group Icon


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

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



Код

chiffreText="k03eeee/|";

char chiffre[];
chiffre[0]=k;
chiffre[1]=0;
chiffre[2]=3;
chiffre[3]=e;
chiffre[4]=e;
chiffre[5]=e;
chiffre[6]=e;
chiffre[7]=/;
chiffre[8]=|;



int[][] key;// массив из интервалов. индекс соответствует индексу в plainText, интервал - интервалу в chiffreText
plainText=Хитрый_алгоритм_нормализации_текста(chiffreText, key);
//plainText теперь = "козел";



char plain[];
plain[0]=к;
plain[1]=о;
plain[2]=з;
plain[3]=е;
plain[4]=л;


key[0][0]=key[0][1]=0; //первая последняя буква совпадают интервал =0 к=k
key[1][0]=key[1][1]=1; //первая последняя буква совпадают интервал =0 о=0
key[2][0]=key[2][1]=2; //первая последняя буква совпадают интервал =0 з=3

key[3][0]=3; key[3][1]=6; // интервал =3 3-6 в оригинале е=eeee
key[4][0]=7; key[4][1]=8; // интервал =1 7-8 в оригинале л=/|



Ну вот теперь регэкспом по plain'y и с помощью key выцепляем интервал слова козел
В нормализованном он 0-4, следовательно в оригинале:
key[0][0] - key[4][1]; == 0-8


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


Эксперт
****


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

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



Ээээ .... че козлом ругаешься ? smile


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

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


Un salsero
Group Icon


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

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



Domestic Cat Да ты что? smile smile Просто отправилось раньше времени smile


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


Эксперт
****


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

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



Цитата(sergej @ 22.1.2005, 20:39)
Ну вот теперь регэкспом по plain'y


Дык регесп на char[] не працюе smile


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

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


Un salsero
Group Icon


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

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



Ну ё-маё!
Код


char plain[];
String plainText = new String(plain);


Это же только схема smile Псевдокод так сказать


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


Эксперт
****


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

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



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


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

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


Un salsero
Group Icon


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

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



Я добавил в самый низ smile


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


Эксперт
****


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

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



Аа, торможу.

Цитата
Я добавил в самый низ smile


Да это понятно, я ж про регексп - там есть методы start, end.


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

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


Un salsero
Group Icon


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

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



Лана smile до завтра smile


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


Эксперт
****


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

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



Единственное что мне тут не нравится - нужно возиться с массивами. Придется
1. искать слово
2. брать его границы
3. смотреть в инт[][]
4. заменять
Тогда как на Парах можно было бы, сделав метод поиска самим, избежать этого.


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

PM   Вверх
Domestic Cat
Дата 23.1.2005, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот кое что сделал, пока только убирает слова из словаря + знаками пунктуации / вайтспейсом ее не обдуришь. Словари задаются в текстовых файлах с соотв. названиями и окончаниями, задается также язык (русский/английский). Пока фильтруются только слова и выбрасывается пунктуация, а также затираются повторяющиеся буквы если они входят в состав матерного слова; нужно добавить транслит и символы типа /|, 4, 1, ...

Пример:
Цитата
This fffUUuUUUccckkKaaa this piece of s-h-i-t he f*u*c*k*e*d me up!

->>>

This ***************aaa this piece of *-*-*-* he ********e*d me up!





Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  Filter.zip


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

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


Leprechaun Software Developer
****


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

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



Цитата(Domestic @ 23.1.2005, 05:19)
Пробелы выбрасываем сразу

Все, гребля не прошла smile
Цитата(Domestic @ 23.1.2005, 05:19)
При этом переводя в нижний регистр.

А вот bJIR пройдет smile


Цитата(Domestic @ 23.1.2005, 05:19)
т.к. можно ведь написать f u c k и потом он ни под один регексп не подойдет.

Надо ввести запрещенную последовательность токенов.


--------------------
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   Вверх
Domestic Cat
Дата 23.1.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(LSD @ 23.1.2005, 03:39)
Все, гребля не прошла smile

Ну так запишем слова типа "гребля" и "подстрахуй" в отдельный словарь и их трогать не будем.


Цитата(LSD @ 23.1.2005, 03:39)
А вот bJIR пройдет

Опять-таки, записываем в словарь j| = л ; правда с R не пройдет, но ведь все возможные истолкования в любом случае не уловишь, да и кому будет охота материться когда для этого нужно будет выдумывать малопонятные символы?


Цитата(LSD @ 23.1.2005, 03:39)
Надо ввести запрещенную последовательность токенов.

Я решил отбрасыванием вайтспейса.



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

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

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

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


 




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


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

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