|
|
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Пишем веб-портал. Там есть комментарии пользователей. Так вот, пользователи могут писать что угодно, в том числе маты. Хотим добавить в алгоритм добавления комментария в базу анализ этого самого комментария на предмет наличия нецензурных слов с заменой частей этих самых нецензурных слов звездочками. Как это лучше всего сделать? Возможно, есть готовая база нецензурных слов? Но как тогда быть со словоформами, такими как "поеб**ь", к примеру? Все словоформы есть в базе? Если нет, может, где-то есть готовая библиотека или класс у кого-нить, который правильно анализирует входящий текст (или слово), чтобы не отфильтровывать нормальные слова, такие как "застрахуй", "дебет" и т.д.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:32:38 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Есть достаточно простой подход. 1 - убрать незначащие символы из текста 2 - найти все подозрительные корни 3 - проверить на ложные срабатывания 4 - отправить письмо модератору с английским, конечно, попроще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:44:15 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Существуют языки аналитические и синтетические . Русский язык относится к последним. Короче, нет такого алгоритма, чтобы мат не вставить. Это только в аналитических, типа английского можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:51:28 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz1 - убрать незначащие символы из текста 2 - найти все подозрительные корни 3 - проверить на ложные срабатывания 4 - отправить письмо модератору Хочется на первых порах обойтись без модератора. Понятно, что от всех матов не избавиться без модератора. При этом, мне кажется, процентов 90 отфильтровать можно. Есть ли готовая библиотека для этого? И есть ли готовая база таких слов? ShSergeСуществуют языки аналитические и синтетические. Русский язык относится к последним. Короче, нет такого алгоритма, чтобы мат не вставить. Это только в аналитических, типа английского можно. Да, но минимизировать можно, поэтому и прошу помочь чем-то готовым, чтобы не писать с нуля типичную функциональность... Уверен, есть готовые решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 01:46:02 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Vetal, Можно попробовать примитивный Баесовский анализ: - для начала вручную отмечать посты с матом и без, для набора обучающих данных. Ну или найти готовое, например насобирать из интернета матерных текстов и нейтральных. - для обеих последовательностей рассчитать вероятность по парам или тройкам слов, например "еп твою мать" добавит по единичке к "eп твою" и "твою мать" . - каждый пост разбивается на пары или тройки слов, и по ним через формулу баеса считается вероятность мат/не мат. Что больше, то и будет признаком. - Для упрощения, вероятность считается просто как произведение вероятностей для всех пар ( еще точнее, сумма логарифмов во избежание слишком малых чисел ). чтобы не получать нулевую вероятность на незнакомых словах, используется лапласовское дополнение. Даже на несколко сотен обучающих предложений можно получить 70 % точности, чем больше база тем лучше будет работать. Если с английским нормально, можно погуглить на Naive Bayes Sentiment Analyses на предмет кода. Или послушать лекции отсюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 02:41:03 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
пролетевшийМожно попробовать примитивный Баесовский анализ Я бы с удовольствием занялся такой интересной задачей, при этом, к сожалению, не могу себе этого позволить. Неужели нет готовых модулей, классов, решений? И готовой базы слов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 03:03:15 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Vetal, Какая база? Там слов-то, кот наплакал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 03:22:29 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Relic HunterКакая база? Там слов-то, кот наплакал... Да ну? Велик и могуч... :) У меня сосед точно больше сотни знает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 03:25:11 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
VetalRelic HunterКакая база? Там слов-то, кот наплакал... Да ну? Велик и могуч... :) У меня сосед точно больше сотни знает :)Корневых слов штуки 3, 4 не больше. А дальше regexp-ом полируем их производные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 03:28:57 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Этак можно стать специалистом по русскому мату ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 08:21:16 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
VetalЯ бы с удовольствием занялся такой интересной задачей, при этом, к сожалению, не могу себе этого позволить. Собственно кодирования там пару десятков строк и часа 3 работы... вот только теорию знать надо, хотя бы статистику и теорию вероятности. Неужели нет готовых модулей, классов, решений? И готовой базы слов? google.com . Не в смысле что искать в гугле, а что оно там "под капотом". Яндекс тоже очень активно балуется. Но почему то делиться не хотят, правда гугл и опубликовал свою базу для английских словосочетаний. Есть проекты вроде nltk , и данных до одури, но все для английского и нескольких европейских языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 11:39:02 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Готовую библиотеку русского мата подавай. А самому "поеб**ь" не охота с этим? :):) На пример так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2012, 17:04:35 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
jabГотовую библиотеку русского мата подавай. А самому "поеб**ь" не охота с этим? :):) На пример так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Ага, и все словоформы забить. По всем словам. Зачем это делать, если это типовая задача, которую делали уже немерянное множество людей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2012, 01:42:56 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
У каждого свои единици измерения нецензурщины. Кому достаточно и пару слов закрыть, а кому и пол словаря покажется мало. Поищи в интернете сборник русского мата и загони его в хэштейбл. Делов то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 17:40:33 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
jabУ каждого свои единици измерения нецензурщины. Кому достаточно и пару слов закрыть, а кому и пол словаря покажется мало. Поищи в интернете сборник русского мата и загони его в хэштейбл. Делов то. Слова теоретика? На любом популярном форуме есть куча желающих такие простые ограничения обойти. Сравнение по словарю обходится на раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 17:43:02 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczjabУ каждого свои единици измерения нецензурщины. Кому достаточно и пару слов закрыть, а кому и пол словаря покажется мало. Поищи в интернете сборник русского мата и загони его в хэштейбл. Делов то. Слова теоретика? На любом популярном форуме есть куча желающих такие простые ограничения обойти. Сравнение по словарю обходится на раз. Короче, в русском - никак. Например, взять слово "омудень". Ну и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 21:13:24 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
ПС. Вспоминается частушка про дивную реку Неман. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2012, 21:22:32 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Vetal, поделитесь как Вы решили данный вопрос? Столкнулся с данной проблемой и удивился, что не нашел никакой базы нецензурных выражений О_о Был бы очень признателен за ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 01:28:46 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
пролетевшийVetal, Можно попробовать примитивный Баесовский анализ: - для начала вручную отмечать посты с матом и без, для набора обучающих данных. Ну или найти готовое, например насобирать из интернета матерных текстов и нейтральных. - для обеих последовательностей рассчитать вероятность по парам или тройкам слов, например "еп твою мать" добавит по единичке к "eп твою" и "твою мать" . - каждый пост разбивается на пары или тройки слов, и по ним через формулу баеса считается вероятность мат/не мат. Что больше, то и будет признаком. - Для упрощения, вероятность считается просто как произведение вероятностей для всех пар ( еще точнее, сумма логарифмов во избежание слишком малых чисел ). чтобы не получать нулевую вероятность на незнакомых словах, используется лапласовское дополнение. Даже на несколко сотен обучающих предложений можно получить 70 % точности, чем больше база тем лучше будет работать. Если с английским нормально, можно погуглить на Naive Bayes Sentiment Analyses на предмет кода. Или послушать лекции отсюда С задачей ТС и таким решением надо бы осторожнее, имхо. Классификатор поможет отделить потенциально негативные записи от позитивных и нейтральных, но конкретно мат он выделить не сможет. Для улучшения результата придётся выделять каждое матерное предложение вручную. Но и то будет очень много шума - характерных для негативных постов слов. Например: "Не очень умная статья, б**ть" и "е**я статья". "Статья" - попадёт в фильтр, так как будет часто повторяться во всех негативных постах. А sentiment analyses - вообще тема очень сложная. Чтобы уменьшить количество шума нужно дополнительно к негативному классификатору добавить позитивный, тогда слово "статья" - выпадет. Думаю, что тут поможет подобранный вручную словарь из пары десятков матерных слов (думаю каждый знает хотя бы 10))) ). Даже учитывая всю мощь русского языка, вырезание по корню слов полученного словаря - отсечёт очень многие варианты. Ну и попробовать стемминг слов, это лишним не будет. У Lucene есть стеммеры для многих языков, в том числе для русского. (см. RussianStemmer) А если всё-таки захочется писать простой классификатор-определятор - лично мне больше понравился delta tf-idf + n-граммы + стемминг слов. Но, опять же, не думаю, что он с матом хорошо совладает... хороший вопросец, кстати... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 13:20:31 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
АлексейС, Что-то я туплю, какой-то сумбур написал Х_Х Сорри. Классификация тут создаст лишнюю головную боль, имхо. Сначала с нахождением матных постов, потом с выделением конкретных - матных кусков текста, потом с шумом (например будет характерное слово для матных постов, но не характерное для нейтральных и положительных - слово "плохой" и словосочетание "я тебя") и всё-равно всё сведётся к словарю, подготовленному вручную. Поэтому самое простое решение скорее всего будет лучше... set[ {корень матного слова, например: "?б", "муд*"} и {stemming матных слов, включающий приставки и суффиксы, например: "на*б"} ], ну и входной текст разбиваем на стеммы (RussianStemmer), пытаемся найти ближайшее совпадение в множестве слов. А пропущенные слова в словарь добавляем вручную. N-граммы ("еп твою") - тут будут лишним усложнением, так как в большинстве случаев соблюдается предположение, что одно матное слово не зависит от соседних. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 14:04:14 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Поступайте как Абу, и будет у вас розочканя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 18:23:12 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Vetal, Для собранного(вручную,или в процессе опытной эксплуатации) словаря, применить морфологический анализ. Реализацию МА можно найти в нете 100% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 19:24:53 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
Извините, не смог пройти мимо. Штирлиц напоролся на сук... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 12:37:25 |
|
||
|
Как отфильтровать маты и нецензурные слова во входном тексте?
|
|||
|---|---|---|---|
|
#18+
В понедельник посмеялся - удивил коллег ;))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 13:07:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37758293&tid=2129954]: |
0ms |
get settings: |
21ms |
get forum list: |
33ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
56ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
123ms |
get tp. blocked users: |
3ms |
| others: | 321ms |
| total: | 599ms |

| 0 / 0 |
