powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отфильтровать маты и нецензурные слова во входном тексте?
27 сообщений из 27, показаны все 2 страниц
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37757986
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

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

Как это лучше всего сделать? Возможно, есть готовая база нецензурных слов? Но как тогда быть со словоформами, такими как "поеб**ь", к примеру? Все словоформы есть в базе? Если нет, может, где-то есть готовая библиотека или класс у кого-нить, который правильно анализирует входящий текст (или слово), чтобы не отфильтровывать нормальные слова, такие как "застрахуй", "дебет" и т.д.?
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758000
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть достаточно простой подход.
1 - убрать незначащие символы из текста
2 - найти все подозрительные корни
3 - проверить на ложные срабатывания
4 - отправить письмо модератору

с английским, конечно, попроще.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758012
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существуют языки аналитические и синтетические . Русский язык относится к последним. Короче, нет такого алгоритма, чтобы мат не вставить. Это только в аналитических, типа английского можно.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758259
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz1 - убрать незначащие символы из текста
2 - найти все подозрительные корни
3 - проверить на ложные срабатывания
4 - отправить письмо модератору
Хочется на первых порах обойтись без модератора.
Понятно, что от всех матов не избавиться без модератора. При этом, мне кажется, процентов 90 отфильтровать можно.
Есть ли готовая библиотека для этого? И есть ли готовая база таких слов?

ShSergeСуществуют языки аналитические и синтетические. Русский язык относится к последним. Короче, нет такого алгоритма, чтобы мат не вставить. Это только в аналитических, типа английского можно.
Да, но минимизировать можно, поэтому и прошу помочь чем-то готовым, чтобы не писать с нуля типичную функциональность... Уверен, есть готовые решения
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758290
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal,
Можно попробовать примитивный Баесовский анализ:
- для начала вручную отмечать посты с матом и без, для набора обучающих данных. Ну или найти готовое, например насобирать из интернета матерных текстов и нейтральных.
- для обеих последовательностей рассчитать вероятность по парам или тройкам слов, например "еп твою мать" добавит по единичке к "eп твою" и "твою мать" .
- каждый пост разбивается на пары или тройки слов, и по ним через формулу баеса считается вероятность мат/не мат. Что больше, то и будет признаком.
- Для упрощения, вероятность считается просто как произведение вероятностей для всех пар ( еще точнее, сумма логарифмов во избежание слишком малых чисел ). чтобы не получать нулевую вероятность на незнакомых словах, используется лапласовское дополнение.
Даже на несколко сотен обучающих предложений можно получить 70 % точности, чем больше база тем лучше будет работать.
Если с английским нормально, можно погуглить на Naive Bayes Sentiment Analyses на предмет кода. Или послушать лекции отсюда
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758293
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролетевшийМожно попробовать примитивный Баесовский анализ
Я бы с удовольствием занялся такой интересной задачей, при этом, к сожалению, не могу себе этого позволить.
Неужели нет готовых модулей, классов, решений? И готовой базы слов?
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758297
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal,

Какая база? Там слов-то, кот наплакал...
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758300
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterКакая база? Там слов-то, кот наплакал...
Да ну? Велик и могуч... :) У меня сосед точно больше сотни знает :)
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758302
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalRelic HunterКакая база? Там слов-то, кот наплакал...
Да ну? Велик и могуч... :) У меня сосед точно больше сотни знает :)Корневых слов штуки 3, 4 не больше. А дальше regexp-ом полируем их производные.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758366
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этак можно стать специалистом по русскому мату )))
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37758719
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalЯ бы с удовольствием занялся такой интересной задачей, при этом, к сожалению, не могу себе этого позволить.
Собственно кодирования там пару десятков строк и часа 3 работы... вот только теорию знать надо, хотя бы статистику и теорию вероятности.
Неужели нет готовых модулей, классов, решений? И готовой базы слов? google.com . Не в смысле что искать в гугле, а что оно там "под капотом". Яндекс тоже очень активно балуется. Но почему то делиться не хотят, правда гугл и опубликовал свою базу для английских словосочетаний.
Есть проекты вроде nltk , и данных до одури, но все для английского и нескольких европейских языков.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37766677
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готовую библиотеку русского мата подавай. А самому "поеб**ь" не охота с этим? :):)

На пример так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public static String replMat(String text) {
        String html = text;
        
        html = html.replace("<", "&lt;");
        html = html.replace(">", "&gt;");

        Map<String,String> myMap = new HashMap<String , String>();

        myMap.put("\\s*х.й\\s*", "цензура");
...
...
...

        for (Map.Entry entry: myMap.entrySet()) {
            html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString());
        }

        return html;
    }
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37767302
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabГотовую библиотеку русского мата подавай. А самому "поеб**ь" не охота с этим? :):)

На пример так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public static String replMat(String text) {
        String html = text;
        
        html = html.replace("<", "&lt;");
        html = html.replace(">", "&gt;");

        Map<String,String> myMap = new HashMap<String , String>();

        myMap.put("\\s*х.й\\s*", "цензура");
...
...
...

        for (Map.Entry entry: myMap.entrySet()) {
            html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString());
        }

        return html;
    }


Ага, и все словоформы забить. По всем словам. Зачем это делать, если это типовая задача, которую делали уже немерянное множество людей...
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37772860
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У каждого свои единици измерения нецензурщины. Кому достаточно и пару слов закрыть, а кому и пол словаря покажется мало.
Поищи в интернете сборник русского мата и загони его в хэштейбл. Делов то.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37772863
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabУ каждого свои единици измерения нецензурщины. Кому достаточно и пару слов закрыть, а кому и пол словаря покажется мало. Поищи в интернете сборник русского мата и загони его в хэштейбл. Делов то.
Слова теоретика? На любом популярном форуме есть куча желающих такие простые ограничения обойти. Сравнение по словарю обходится на раз.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37773070
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczjabУ каждого свои единици измерения нецензурщины. Кому достаточно и пару слов закрыть, а кому и пол словаря покажется мало. Поищи в интернете сборник русского мата и загони его в хэштейбл. Делов то.
Слова теоретика? На любом популярном форуме есть куча желающих такие простые ограничения обойти. Сравнение по словарю обходится на раз.
Короче, в русском - никак. Например, взять слово "омудень". Ну и?
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #37773074
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПС. Вспоминается частушка про дивную реку Неман.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38154334
Novel Novel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vetal, поделитесь как Вы решили данный вопрос? Столкнулся с данной проблемой и удивился, что не нашел никакой базы нецензурных выражений О_о
Был бы очень признателен за ответ!
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38154533
АлексейС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролетевшийVetal,
Можно попробовать примитивный Баесовский анализ:
- для начала вручную отмечать посты с матом и без, для набора обучающих данных. Ну или найти готовое, например насобирать из интернета матерных текстов и нейтральных.
- для обеих последовательностей рассчитать вероятность по парам или тройкам слов, например "еп твою мать" добавит по единичке к "eп твою" и "твою мать" .
- каждый пост разбивается на пары или тройки слов, и по ним через формулу баеса считается вероятность мат/не мат. Что больше, то и будет признаком.
- Для упрощения, вероятность считается просто как произведение вероятностей для всех пар ( еще точнее, сумма логарифмов во избежание слишком малых чисел ). чтобы не получать нулевую вероятность на незнакомых словах, используется лапласовское дополнение.
Даже на несколко сотен обучающих предложений можно получить 70 % точности, чем больше база тем лучше будет работать.
Если с английским нормально, можно погуглить на Naive Bayes Sentiment Analyses на предмет кода. Или послушать лекции отсюда

С задачей ТС и таким решением надо бы осторожнее, имхо. Классификатор поможет отделить потенциально негативные записи от позитивных и нейтральных, но конкретно мат он выделить не сможет. Для улучшения результата придётся выделять каждое матерное предложение вручную. Но и то будет очень много шума - характерных для негативных постов слов. Например: "Не очень умная статья, б**ть" и "е**я статья". "Статья" - попадёт в фильтр, так как будет часто повторяться во всех негативных постах. А sentiment analyses - вообще тема очень сложная. Чтобы уменьшить количество шума нужно дополнительно к негативному классификатору добавить позитивный, тогда слово "статья" - выпадет.

Думаю, что тут поможет подобранный вручную словарь из пары десятков матерных слов (думаю каждый знает хотя бы 10))) ). Даже учитывая всю мощь русского языка, вырезание по корню слов полученного словаря - отсечёт очень многие варианты. Ну и попробовать стемминг слов, это лишним не будет. У Lucene есть стеммеры для многих языков, в том числе для русского. (см. RussianStemmer)

А если всё-таки захочется писать простой классификатор-определятор - лично мне больше понравился delta tf-idf + n-граммы + стемминг слов. Но, опять же, не думаю, что он с матом хорошо совладает... хороший вопросец, кстати...
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38154568
АлексейС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейС,

Что-то я туплю, какой-то сумбур написал Х_Х Сорри.

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

Поэтому самое простое решение скорее всего будет лучше...
set[ {корень матного слова, например: "?б", "муд*"} и {stemming матных слов, включающий приставки и суффиксы, например: "на*б"} ], ну и входной текст разбиваем на стеммы (RussianStemmer), пытаемся найти ближайшее совпадение в множестве слов. А пропущенные слова в словарь добавляем вручную. N-граммы ("еп твою") - тут будут лишним усложнением, так как в большинстве случаев соблюдается предположение, что одно матное слово не зависит от соседних.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38154748
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поступайте как Абу, и будет у вас розочканя
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38154788
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal,

Для собранного(вручную,или в процессе опытной эксплуатации) словаря, применить морфологический анализ. Реализацию МА можно найти в нете 100%
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38155456
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, не смог пройти мимо.

Штирлиц напоролся на сук...
Код: plaintext
                         народное творчество
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38155513
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В понедельник посмеялся - удивил коллег ;)))))
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38156627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стишки Баркова можно загрузить в анализ.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38156933
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Себя от холода страхуя ,
В универмаге наверху я
Купил доху я на меху я.
Но видит Бог, дал маху я.
Доха не греет абсолютно.
...
Рейтинг: 0 / 0
Как отфильтровать маты и нецензурные слова во входном тексте?
    #38157059
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще нужно учитывать случаи безграмотного написания
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отфильтровать маты и нецензурные слова во входном тексте?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]