Фильтр "плохих слов"

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

Да, я знаю, что от таких фильтров легко избавиться ... но клиент будет, будет клиент !!! :-)

Сайт должен будет отфильтровать как английские, так и итальянские слова, но для итальянского я могу попросить своих коллег помочь мне с созданным сообществом списком "parolacce" :-) - подойдет электронное письмо.

Спасибо за любую помощь.

Фильтрация непристойности ... плохая идея или действительно плохая идея?

stephenbayer 22.10.2008 17:18

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

nailitdown 02.09.2010 08:28

связанные: programmers.stackexchange.com/questions/143405/…

David Cary 28.06.2012 07:21

Однако очень немногие фильтры могут обнаружить слова «Shiτ» и «fucκ». Даже StackOverflow.

Theodore R. Smith 03.08.2013 00:25

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

Cam Jackson 09.08.2013 12:28

Это отлично подходит для веб-образовательного программного обеспечения, позволяющего помечать ответы учащихся, которые «содержат ненормативную лексику», которые затем могут быть переданы учителям для проверки. Я создал карту сворачивания ASCII, в которой вручную сопоставил все 65 000+ кодовых точек Unicode с их ближайшим визуальным эквивалентом ASCII, если таковой существует. Затем я сделал то же самое для всех перестановок последовательностей из 2, 3 и 4 символов, используя механизм визуального сходства, чтобы свернуть их до ближайшего односимвольного эквивалента (например, "\ / \ /" = "W", "| - |" = "H", "| _" = "L"), а затем использовал алгоритм иерархической временной памяти для их мгновенного распознавания.

Triynko 10.02.2015 23:14

После долгих поисков и сбора: github.com/alvations/expletives/tree/master

alvas 16.04.2017 09:50

Привет @triynko Если вы готовы поделиться кодом, мне было бы интересно. Интересная идея.

Robert Lugg 31.08.2019 20:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
51
8
97 415
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Остерегайтесь кбюттические ошибки.

"Apple made the clbuttic mistake of forcing out their visionary - I mean, look at what NeXT has been up to!"

Hmm. "clbuttic".

Google "clbuttic" - thousands of hits!

There's someone who call his car 'clbuttic'.

There are "Clbuttic Steam Engine" message boards.

Webster's dictionary - no help.

Hmm. What can this be?

HINT: People who make buttumptions about their regex scripts, will be embarbutted when they repeat this mbuttive mistake.

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

Ed S. 12.05.2009 05:44
Ответ принят как подходящий

Я не видел ни одного указанного языка, но вы можете использовать его для PHP, он будет генерировать RegEx для каждой введенной работы, так что даже намеренные орфографические ошибки (например, @ss, i3itch) также будут обнаружены.

<?php

/**
 * @author [email protected]
 **/

if ($_GET['act'] == 'do')
 {
    $pattern['a'] = '/[a]/'; $replace['a'] = '[a A @]';
    $pattern['b'] = '/[b]/'; $replace['b'] = '[b B I3 l3 i3]';
    $pattern['c'] = '/[c]/'; $replace['c'] = '(?:[c C (]|[k K])';
    $pattern['d'] = '/[d]/'; $replace['d'] = '[d D]';
    $pattern['e'] = '/[e]/'; $replace['e'] = '[e E 3]';
    $pattern['f'] = '/[f]/'; $replace['f'] = '(?:[f F]|[ph pH Ph PH])';
    $pattern['g'] = '/[g]/'; $replace['g'] = '[g G 6]';
    $pattern['h'] = '/[h]/'; $replace['h'] = '[h H]';
    $pattern['i'] = '/[i]/'; $replace['i'] = '[i I l ! 1]';
    $pattern['j'] = '/[j]/'; $replace['j'] = '[j J]';
    $pattern['k'] = '/[k]/'; $replace['k'] = '(?:[c C (]|[k K])';
    $pattern['l'] = '/[l]/'; $replace['l'] = '[l L 1 ! i]';
    $pattern['m'] = '/[m]/'; $replace['m'] = '[m M]';
    $pattern['n'] = '/[n]/'; $replace['n'] = '[n N]';
    $pattern['o'] = '/[o]/'; $replace['o'] = '[o O 0]';
    $pattern['p'] = '/[p]/'; $replace['p'] = '[p P]';
    $pattern['q'] = '/[q]/'; $replace['q'] = '[q Q 9]';
    $pattern['r'] = '/[r]/'; $replace['r'] = '[r R]';
    $pattern['s'] = '/[s]/'; $replace['s'] = '[s S $ 5]';
    $pattern['t'] = '/[t]/'; $replace['t'] = '[t T 7]';
    $pattern['u'] = '/[u]/'; $replace['u'] = '[u U v V]';
    $pattern['v'] = '/[v]/'; $replace['v'] = '[v V u U]';
    $pattern['w'] = '/[w]/'; $replace['w'] = '[w W vv VV]';
    $pattern['x'] = '/[x]/'; $replace['x'] = '[x X]';
    $pattern['y'] = '/[y]/'; $replace['y'] = '[y Y]';
    $pattern['z'] = '/[z]/'; $replace['z'] = '[z Z 2]';
    $word = str_split(strtolower($_POST['word']));
    $i=0;
    while($i < count($word))
     {
        if (!is_numeric($word[$i]))
         {
            if ($word[$i] != ' ' || count($word[$i]) < '1')
             {
                $word[$i] = preg_replace($pattern[$word[$i]], $replace[$word[$i]], $word[$i]);
             }
         }
        $i++;
     }
    //$word = "/" . implode('', $word) . "/";
    echo implode('', $word);
 }

if ($_GET['act'] == 'list')
 {
    $link = mysql_connect('localhost', 'username', 'password', '1');
    mysql_select_db('peoples');
    $sql = "SELECT word FROM filters";
    $result = mysql_query($sql, $link);
    $i=0;
    while($i < mysql_num_rows($result))
     {
        echo mysql_result($result, $i, 'word') . "<br />";
        $i++;
     }
     echo '<hr>';
 }
?>
<html>
    <head>
        <title>RegEx Generator</title>
    </head>
    <body>
        <form action='badword.php?act=do' method='post'>
            Word: <input type='text' name='word' /><br />
            <input type='submit' value='Generate' />
        </form>
        <a href = "badword.php?act=list">List Words</a>
    </body>
</html>

В день оргии ig-pay atin-lay. Urse-cay ords-way are-ar ill-stite-quay eadable-ray. (бывший владелец AOL ник Itshay).

plinth 12.05.2009 05:07

ты имеешь в виду "в день оргет-фей"

Raiyan 22.05.2015 19:28

Это отличная ссылка, спасибо вам за это. В приложении, однако, я не уверен, как изменить "гамбургер" на "[h H] [a ​​A @] [m M] [b B I3 l3 i3] [u U v V] [r R] [g G 6] [e E 3] [r R] "поможет фильтровать ненормативную лексику.

JVE999 24.02.2020 20:21

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

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

+1 к ошибке Clbuttic, я думаю, что для фильтров «плохих слов» важно сканировать как начальные, так и конечные пробелы (например, «ass»), а не только точную строку, чтобы у нас не было таких слов, как clbuttic , clbuttes, buttert, buttess и т. д.

И не блокируйте город Сканторп.

TRiG 25.11.2009 22:01

К сожалению, это не избавляет от проклятий в начале абзаца или около знаков препинания. Если бы у меня был абзац, состоящий из «(плохое слово)!», Он не прошел бы ваш тест.

proudgeekdad 23.02.2011 00:51

Изучая эту тему, я определил, что нужно нечто большее, чем просто список с произвольными заменами. Я создал веб-сервис, который позволяет вам определять желаемый уровень «чистоты». Он также пытается идентифицировать ложные срабатывания, то есть когда слово может быть плохим в одном контексте, но не в другом. Взгляните на http://filterlanguage.com

URL недоступен.

Lenin 13.12.2012 15:44

Википедия ClueBot имеет фильтр плохих слов, прочтите его источник.

http://en.wikipedia.org/wiki/User:ClueBot/Source#Score_list

Shutterstock имеет репозиторий Github с список плохих слов, используемым для фильтрации.

Вы можете проверить это здесь: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

Хотя это многовато - "Мистер Хэндс" явно оскорбительный.

UpTheCreek 17.09.2015 21:08

Французская БД плохая ...

Cocorico 05.02.2016 12:25

Если кому-то нужен API, Google в настоящее время предоставляет индикатор плохого слова.

http://www.wdyl.com/profanity?q=naughtyword

{
response: "false"
}

Обновление: Google удалил эту службу.

Похоже, больше не проявляет активности.

Nick 14.06.2016 15:36

Поскольку этот список не работает, raw.githubusercontent.com/RobertJGabriel/Google-profanity-wo‌ rds /… - это вариант.

Tony 11.09.2019 15:40

Другие вопросы по теме