Модераторы: 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   Вверх
chipset
Дата 22.1.2005, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А прикол в том что каждый третий захочет помочь нашей системе со словарным запасом... 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:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



smile Можно удафф.ком прогнать smile smile


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


Эксперт
****


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

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



Цитата(sergej @ 21.1.2005, 15:36)
Предлагаю во первых открыть для проекта новую тему в "наших проектах". Кто откроет, тот и будет рулить 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:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Говорю же, если кто серьёзно решит. Просто помогать я смогу, а ещё один проект тянуть - нет.
Хотя ужасть как хочется smile


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


Leprechaun Software Developer
****


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

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



Давайте пока попробуем накидать общую концепцию, а там посмотрим как и на чем реализовывать. Как вам мое предложени по поводу схемы анализа. У меня пока нет полной ясности по поводу не регистрозависимого анализа, а в остальном вроде вопросов у меня нет.
sergej.z
Расскажи поподробнее про "кластерингм документов в последнее время занимаюсь с использованием онтологий. ну и wordprocessings всякие тоже туда принадлежат". А то я только онтологию знаю и то как раздел философии smile

P.S. Поскольку тему начал Се ля ви, предалгю его и назначить крайним за все это дело smile
Цитата
Инициатива наказума исполнением!
smile smile 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   Вверх
chipset
Дата 22.1.2005, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



LSD
ИМХО, должен быть словарь матерных слов (бл*) и словарь защищеных слов (гребля, сабля и т.д.).
Далее, один из вариантов: определяем последовательность из буквы которые находятся недалеко друг от друга (f_u_c_k), проверяем - соответствует ли словарю защищеных слов и если нет - ... smile
Естественно всё это заоптимизируется и т.д и т.п..
Кстати: предлагаю модераторам снять ограничения на мат в этом топике smile

Это сообщение отредактировал(а) chipset - 22.1.2005, 15:15


--------------------
Цитата(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, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



smile smile
  • Первым делом текст следует нормализовать.
    т.е пробежаться, выкинуть все знаки, оставив только буквы. (позиции однако надо запоминать отдельно).
    Пример: Сейчас мы это используем на форуме. Для проверки соответствия быстрой цитаты и участника. особенно в опере, где возвращаемый выделеммый текст очень не похож на возвращаемое сообщение.
  • Пробелы, табы оставляем для разделения слов.
  • Теперь, нормализуем буквы. Т.е заменяем похожие латинские на русские. Знаки некоторые кстати и их сочетания тоже похожи на буквы так и заменяем |-|-| будет ж.
  • Весь текст в нижний регистр.
  • Теперь у нас прекрасный текст в котором можно искать. stammer-ом прходимся по словам делим на подозрительные и не подозрительные. Конечно альтернативно можно и весь словарь загнать smile
  • После этого проверяем подозрительные на исключения - иначе слово - мат. Исключения как раз "са". не так уж много приличных русских слов с "".
  • В добавку ищем в тексте удалив пробелы.


Как Альтернатива можно пробелы сразу удалять, а потом искать подозрительные корни. Найдя восстанавливать слово, проверять в словаре.





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


Эксперт
****


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

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



sergej.z, а где в твоем алгоритме средства для распознования слов типа: "f^u_c^k"?
Добавлено @ 17:05
Вижу..


--------------------
Цитата(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, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(LSD @ 22.1.2005, 14:02)
ergej.z
Расскажи поподробнее

Там много рассказывать smile

Берётся онтология - дерево или граф. Как повезёт. Скорее на хватит просто таксономии, потому что онтологические связи я в алгоритме(пока) не учитываю.
Цитата
поездки
/        \
перемещение    проживание
    /        \                /        \
самлёт поезд      отель квартира


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


Каждый узел рассматривается ка концепт. для каждого документа создаётся вектор из концептов.

v(i)= |поездки|перемещение|проживание|самлёт|поезд|отель|квартира|
i - порядковый номер документа
Теперь мы пробегаем по документам и изменяем значение компоненты вектора, если находим в тексте
подходящее словосочетание.

Например
"Гостинница Россия" -> v(i)[отель]++
"Ту 154" -> v(i)[самлёт]++
итд.

Затем мы редуцируем количество компонентов в векторах хитрым алгоритмом коллег из Karlsruhe.
Таким образом сокращаем кол-во измерений в нашем документном пространстве.
То, что получилось кластеруем каким нибудь K-means'ом.

Вот вкратце и всё smile

Извиняюсь, но я многих терминов по русски не знаю, так что мог где нить чушь написать smile


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


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


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

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



Цитата(LSD @ 22.1.2005, 15:02)
Поскольку тему начал Се ля ви, предалгю его и назначить крайним за все это дело smile
Цитата
Инициатива наказума исполнением!

Ок, давайте порулю я. :-)

sergej.z
Схема хорошая. Надо решить, на каких этапах всё делать регэкспами, а где можно и вручную(для быстроты)...

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

Итак, фазы:
1.
Цитата(sergej @ 22.1.2005, 16:57)
Первым делом текст следует нормализовать.
т.е пробежаться, выкинуть все знаки, оставив только буквы. (позиции однако надо запоминать отдельно).

2.
Цитата(sergej @ 22.1.2005, 16:57)
Пробелы, табы оставляем для разделения слов.

3.
Цитата(sergej @ 22.1.2005, 16:57)
Теперь, нормализуем буквы. Т.е заменяем похожие латинские на русские. Знаки некоторые кстати и их сочетания тоже похожи на буквы так и заменяем |-|-| будет ж.

4.
Цитата(sergej @ 22.1.2005, 16:57)
Весь текст в нижний регистр.

5.
Цитата(sergej @ 22.1.2005, 16:57)
Теперь у нас прекрасный текст в котором можно искать. stammer-ом прходимся по словам делим на подозрительные и не подозрительные. Конечно альтернативно можно и весь словарь загнать

6.
Цитата(sergej @ 22.1.2005, 16:57)
После этого проверяем подозрительные на исключения - иначе слово - мат. Исключения как раз "са". не так уж много приличных русских слов с ""

7.
Цитата(sergej @ 22.1.2005, 16:57)
В добавку ищем в тексте удалив пробелы


Думаю, это должен быть класс без конструктора и все его медоды должны быть статичными и более того - private`ными, кроме одного, который возвращает уже отфильтрованный текст. В качестве входного параметра можно ему передавать объект JavaBean с библиотекой регэкспов и, собственно, слово, на которое мы заменяем весь мат.
JavaBean (не Enterprise, конечно) - в свою очередь может быть интерфейсом к файлу, к БД или вообще наполняться программой извне через setter`ы - это уже как usr`у будет удобней.

Какие будут встречные предложения? Прежде всего - относительно того, на каких фазах мы пользуемся RegExp`ами...

P.S. sergej.z вот только я не понял - что такое stammer?...
Добавлено @ 17:40
Да, собственно, все его методы этого главного класса должны соответствовать фазам. :-)


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

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


Un salsero
Group Icon


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

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



stammer оставляет от слова лишь его корень.
обрезаются приставки и окончания. посмотрим действие на практике...

RegExp можно применять в конце не стандартизированный текст. ИМХО в ручную лучше регулировать мелочи можно

Добавлено @ 17:56
Надо еще функцию, которая возвращает процент мата в тексте.

PS:
Сейчас в голову пришло:
Заменять мат можно на "Гав, гав" как у старика Хоттабыча smile smile smile


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


Leprechaun Software Developer
****


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

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



Цитата(sergej @ 22.1.2005, 16:57)
Весь текст в нижний регистр.

Таким макаром мы исключим весь текс типа: nJIaksa.spb.

На мой взгляд надо текст разбить на атомарные единицы: токены. А далее анализировать: если токен состоит из букв одного алфавита, то просто анализировать его, независимо от регистра. Если нет, то надо попробовать его транслитерировать (тут есть над чем поработать). Все возможные варианты транслитерации сохраняются, как возможные варианты толкования токена. А затем они анализируются по словарю.
Так же надо анализировать возможные варианты когда сами токены не несут орицательной нагрузки, но вот их последовательность имеет негативный смысл:
Цитата(chipset @ 22.1.2005, 17:04)
f^u_c^k
Вообщем полный: RFC!


--------------------
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
Дата 22.1.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(LSD @ 22.1.2005, 18:34)
текс типа: nJIaksa.spb.

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

LSD На практике не знаю, можно ли будет такой анализатор реализовать.
Особенно
Цитата
возможные варианты толкования токена

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


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


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


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

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



smile
Мне вот тут вдруг стало непонятно другое - ну перелопатили мы текст, всё вбили в нижний регистр, да ещё и пробелы убрали - отфильстровали мат - и что с этим месивом делать? Это ведь всё восстановить в нормальном виде ещё надо...

Это сообщение отредактировал(а) Се ля ви - 23.1.2005, 01:01


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

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


Un salsero
Group Icon


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

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



см. пункт 1
Цитата
(позиции однако надо запоминать отдельно).

каждая буква в стандартизированном массиве соответстует индексу в настоящей мессаге. Его мы запоминаем.
Это сделсть очень легко, если например вести параллельный массив.
Добавлено @ 01:08
По индексам и находим нехорошие слова.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
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   Вверх
LSD
Дата 23.1.2005, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(Domestic @ 23.1.2005, 13:22)
Ну так запишем слова типа "гре" и "подстрахуй" в отдельный словарь и их трогать не будем.

Тогда начнет прокатывать "гре ".

Цитата(Domestic @ 23.1.2005, 13:22)
да и кому будет охота материться когда для этого нужно будет выдумывать малопонятные символы?

Еще как охота будет, это же такой азартный спорт smile

Цитата(Domestic @ 23.1.2005, 13:22)
все возможные истолкования в любом случае не уловишь

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

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


--------------------
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, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(LSD @ 23.1.2005, 04:44)
Тогда начнет прокатывать "гре ".


Ну тут уже надо учить программу понимать смысл предложения, а иначе не получится. Ведь можно тогда ругаться : греБЛЯ!!!


Цитата(LSD @ 23.1.2005, 04:44)
Еще как охота будет, это же такой азартный спорт smile


Ну это уже будет ерунда, особенно если убрать основное.


Цитата(LSD @ 23.1.2005, 04:44)
Конечно, но надо дать возможность администратору самому добавлять новые извороты пользователей в фильтр.


В аттачменте словари задаются в отдельных текстовых файлах - добавляй что хочешь.


Цитата(LSD @ 23.1.2005, 04:44)
И не надо зацикливаться на русском и английском, есть и другие языки, это тоже надо учесть.


Тут проблем нет, за секунду можно добавить. Единственное что требуется - словари.


Цитата(LSD @ 23.1.2005, 04:44)
Я считаю что важнее разработать нормальную, хорошо расширяемую систему анализа и фильтрации текста, а не пытаться предусмотреть сейчас все варианты.


А предложенный вариант - это не система фильтрации текста?
1. Переводим все в нижний регистр.
2. Выбрасываем "безопасные" символы типа . , и пробелы, из которых мат не составишь
3. Повторяющиеся буквы убираем (точнее, они сохраняются как children в предшествующей Pair, чтоб убрать слова типа CcccRRRAAAPP)
4 В зависимости от языка трансформируем часто применяемые обозначения/транслит в буквы
5. Заменяем слова из словаря на ****
Без словарей тут не обойтись.
Кроме того, все возможные варианты все равно не отловим. С каждой новой проверкой добавляются тормоза, потому нужно остановиться на отлавливании основного.


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

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


Un salsero
Group Icon


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

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



Тормоза - финя.
Проверок можно разных сделать и несколько раз по тексту пробежаться.
Почему бы непрогить несколько вариантов параллельно?

LSD, Где твой алгоритм?


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


Leprechaun Software Developer
****


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

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



Вот мои приблизительные наметки по поводу данного фильтра.
Критика приветствуется smile

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


--------------------
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, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Как я понял суть в том чтобы была возможность подключать произвольные фильтры/токенайзеры.

1. Зачем нужны токенайзеры, я не понял.
2. Подключать фильтр - идея хорошая, если бы речь шла о фильтрации различных типов слов; например одинт фильтр - для мата, другой - для слов с сексуальной окраской, и т п. Опыт показывает что в основном нужен антиматовый фильтр. Потому фильтры-плагины идея конечно гут, но зачем она тут не представляю.
Действие фильтров не обязательно складывается. Это если б один фильтр отдсекал слова "дурак" и "козел", а второй слово - "гад", то да. Но чтобы отловить мат нужно сначала как-то преобразовать исходный текст. Суть состоит в наиболлее оптимальном выборе алгоритма. Если же алгоритм разный то после действия одного фильтра действие другого практически равно 0.

------------
Единственный кто стянул мой код - ну как, есть замечания?


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

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


Un salsero
Group Icon


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

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



Цитата(Domestic @ 23.1.2005, 16:52)
Единственный кто стянул мой код - ну как, есть замечания?

Ага, не компилируется smile
Но это мои проблемы. Сейчас некогда решать...

Цитата(Domestic @ 23.1.2005, 16:52)
Если же алгоритм разный то после действия одного фильтра действие другого практически равно 0.

Это будет видно. тем более, что я предлагаю использовать не последовательно, а параллельно.
На вуходе массивы - keys как я описывал. Просто не один, а несколько.
Потом решаем (чего нить придумаем), какие интервалы фильтровать.
PS:
Дело в том что наши концепты (мой, твой и LSD) практически друг другу не мешают, но дополняют smile


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


Эксперт
****


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

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



Цитата(sergej @ 23.1.2005, 08:59)
Ага, не компилируется smile


Т.к. нужна 1.5. Переделать в 1.4?




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

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


Leprechaun Software Developer
****


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

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



Цитата(Domestic @ 23.1.2005, 18:03)
Т.к. нужна 1.5. Переделать в 1.4?

Если нет веских причин использовать 1.5, то конечно лучше переделать. Ниже 1.4 имхо не стоит делать, т.к. там регекспов нет.

Цитата(sergej @ 23.1.2005, 17:59)
Дело в том что наши концепты (мой, твой и LSD) практически друг другу не мешают, но дополняют

Пока попробуем довести до ума каждый свой вариант (у меня даже не все классы пока есть) а там решим.

Цитата(Domestic @ 23.1.2005, 17:52)
1. Зачем нужны токенайзеры, я не понял.

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

Цитата(Domestic @ 23.1.2005, 17:52)
2. Подключать фильтр - идея хорошая, если бы речь шла о фильтрации различных типов слов; например одинт фильтр - для мата, другой - для слов с сексуальной окраской, и т п. Опыт показывает что в основном нужен антиматовый фильтр. Потому фильтры-плагины идея конечно гут, но зачем она тут не представляю.

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


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


Un salsero
Group Icon


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

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



Цитата(Domestic @ 23.1.2005, 17:03)
Т.к. нужна 1.5. Переделать в 1.4?

Да, будет лучше.

Цитата(LSD @ 23.1.2005, 17:44)
Пока попробуем довести до ума каждый свой вариант (у меня даже не все классы пока есть) а там решим.


smile

ИМХО лучше умно в кучу собрать.


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


Leprechaun Software Developer
****


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

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



Цитата(sergej @ 23.1.2005, 19:02)
ИМХО лучше умно в кучу собрать.

Есть идеи как? Я пока не вижу как, хотя код Domestic Cat пока не смотрел.


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


Un salsero
Group Icon


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

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



Это должен рулевой решать. Там надо всё сравнивать искать пути. Короче работа smile


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


Эксперт
****


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

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



sergej.z, а там у тебя в подписи не мат ? smile

Пока ишшо идея - нуна предосмотреть вариант козел.



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

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


Un salsero
Group Icon


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

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





Цитата(Domestic @ 24.1.2005, 01:31)
нуна предосмотреть вариант

А что с ним?
Такое препроцессор должен убивать. (В смысле тэги хавать)


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


Эксперт
****


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

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



Дык если препроцессор не написать, кто есть их будет?


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

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


Un salsero
Group Icon


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

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



Вот смотри, как на этой страничке текст отображается, так после препроцессора и должно быть.
Текст в таком виде всё равно в каком то месте можно вычитать.


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


Эксперт
****


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

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



Хм. а инфа о стилях отдельных слов/параграфов где хранится?


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

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


Эксперт
****


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

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



Вообще хорошо было бы определиться что писать и как писать. Нужна ли поддержка других языков, может на уровне плагинов, насколько серьезно нужно бороться с матом. Скажем мой код + перевод в транслит и дописание трансляции особых символов убьет мат на 99% при наличии словарей и незнании постящего. Если же он знает о фиче, то тут убрать мат невозможно. Все варианты перебрать не сможем. Можно отдельные буквы цвтом выделять, формировать большие буквы из символов, и пр.




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

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


Опытный
**


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

Репутация: 9
Всего: 13



Почитайте комменты к статье smile smile smile Это для словаря.
PM MAIL   Вверх
Domestic Cat
Дата 24.1.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Zandr @ 24.1.2005, 03:49)
Почитайте комменты к статье smile smile smile Это для словаря.


smile


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

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


Опытный
**


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

Репутация: 9
Всего: 13



Если что - это не я smile
PM MAIL   Вверх
Се ля ви
Дата 24.1.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Domestic @ 23.1.2005, 05:19)
3. Теперь ищем неочевидную гадость со знаками / | \ ^ * типа б/|я. Заменяем на нужные буквы.
Незаменяемые символы выбрасываем.

Ещё ">" и "<" - что бы отсечь, например, слово ">|<опа"

Цитата(Domestic @ 23.1.2005, 05:19)
Выбрасываем все "очевидные" знаки пунктуации: ? , .

Я вот тут подумал - ведь эти знаки можно использовать для создания больших букв в сочетании с концами строк, например:
,
И

И вообще, с псевдо графикой можно огромедные буквы писать на десятки строк - их вообще не отловишь простыми алгоритмами... smile
Придётся, наверное, на них действительно забить. По крайней мере пока - нужно просто определять соответствие позиций в разных строках и если символы псевдографики находятся над-под друг-другом, обрезать их сразу, иначе можно будет писать:
\|/
/|\ опа, и т.д. - поэтому надо в парах отслеживать не только их непосредственный номер, но и номера в строке...

Хотя я посовещался с бывшим админом - пока матершинники не такие догадливые, такого ещё не было, поэтому это пока вобщем-то ждёт...

Это сообщение отредактировал(а) Се ля ви - 24.1.2005, 16:24


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

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


Un salsero
Group Icon


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

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



Сперва следует реализовать пусть маленькую, но 100% рабочую часть. A потом уже расширять.


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


Leprechaun Software Developer
****


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

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



У меня в процессе реализации возник вопрос: есть необходимость транслитерирования, но для буквы может быть несколько вариантов транслитерации. А если таких букв в слове несколько, то общее колиество вариантов транслитерации слова будет велико. Есть идеи как с этим бороться?


--------------------
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
Дата 3.2.2005, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(LSD @ 3.2.2005, 20:34)
А если таких букв в слове несколько, то общее колиество вариантов транслитерации слова будет велико. Есть идеи как с этим бороться?

стандартизировать текст smile



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


Leprechaun Software Developer
****


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

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



Цитата(sergej @ 3.2.2005, 23:47)
стандартизировать текст

Поясни.

P.S. Где можно надыбать азбуку транслита?


--------------------
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
Дата 4.2.2005, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(LSD @ 4.2.2005, 18:10)
стандартизировать текст


Посмотри мой алгоритм в самом начале smile

Цитата(LSD @ 4.2.2005, 18:10)
P.S. Где можно надыбать азбуку транслита?

Их куча, все разные.



Добавлено @ 19:23
Вот наша:
http://forum.vingrad.ru/index.php?act=ST&f...ndpost&p=221352


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


Leprechaun Software Developer
****


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

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



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

Ты об этом? 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
Дата 4.2.2005, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Ну да smile


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


Leprechaun Software Developer
****


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

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



Цитата(sergej @ 4.2.2005, 19:17)
Вот наша:
http://forum.vingrad.ru/index.php?act=ST&f...ndpost&p=221352

Danke sehr.


--------------------
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
Дата 4.2.2005, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Bitte, bitte smile


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


Leprechaun Software Developer
****


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

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



Вот очередная версия, эта вроде работает smile
Принцип следующий:
  • текст разбивается на токены Tokeniser-ом, на выходе получаем массив Token-ов. Каждый Token содержит: первоначальный текст, позицию этого текста, словоформы (это возможные варианты написания этого токена после применения к нему транслитерации, удаления дублирующихся букв и т.п.), и рейтинг этого слова (чем выше тем хуже это слово.
  • по Token-ам прогоняются Transformer-ы, которые и порождают новые словоформы
  • ко всем Token-ам применяются FilterRule, которые изменяют рейтинг слова. рейтинг может не только повышаться, например фильтр разрешенных слов может для слова гребля обнулить рейтинг
  • далее Filter для тех слов рейтинг которых превышает заданный предел, заменяет их на знаки @#$%&*
Для практического применения там еще куча работы, но принцип ясен. Принимается:
  • критика
  • пожелания
  • советы
  • денежные переводы


Это сообщение отредактировал(а) LSD - 12.2.2005, 21:55

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


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


Un salsero
Group Icon


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

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



Сории, но я когда запускаю, весь ДОС - экран какими то значками заполняется....


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


Эксперт
****


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

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



Аналогично. Плюс я не пойму зачем рейтинг нужен smile


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

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


Leprechaun Software Developer
****


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

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



Цитата(sergej @ 12.2.2005, 19:22)
Сории, но я когда запускаю, весь ДОС - экран какими то значками заполняется....

Это потому, что при компиляции надо указать javac -encoding UTF-8. т.к. исходники именно в этой кодировке. Я выложил новую версию, ее можно просто запускать, она уже скомпилена. Файлы читаются и пишутся в родной кодировке ОС. В файле словаря слова нада разделять пробелами, табуляцией или переводом строки.
На данный момент подерживаются следующие преобразования: транслитерация (по винградовскому словарю), замена одинаково пишущихся английских символов на русские, и неких сочетаний спецсимвлов /| = Л, удаление повторяющися букв блииин = блин, разбиение слова на отдельные слова по типу символов (строчные, заглавные, цифры и т.д.) МногоеМОЖНОсказатьОднимСловом = многое можно сказать одним словом. Пока это все кодом, но если будет развиваться дальше, то надо будет вынести в файлы настроек или БД.

Цитата(Domestic @ 12.2.2005, 20:53)
Плюс я не пойму зачем рейтинг нужен

Надо же как-то отделять плохие слова от хороших smile . Можно например в фильтр включить не только мат но просто грубые слова, а исключать их в зависимости от настроек пользователя. В простейшем случае все можно свести к rating > 0.


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


Leprechaun Software Developer
****


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

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



Я произвел некоторые доработки, теперь преобразование замены унифицированно и задается в виде XML, словарь теперь тоже задается в XML, добавлено преобразование позволяющее проводить суперпозицию других преобразований.
Теперь осталось напролнить словарь и потестировать на реальных примерах. Мне нужна помощь по наполнению словаря, т.к. для каждого слова нужны или все словоформы (предпочтительно) или выделить общую часть.

Присоединённый файл ( Кол-во скачиваний: 52 )
Присоединённый файл  filter.jar


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


Новичок



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

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



Есть ли обновления этой темы?
PM MAIL   Вверх
tigraff
Дата 31.7.2016, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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