Фильтр «плохих слов» [закрыто]

Не очень технически, но ... Я должен внедрить фильтр плохих слов в новый сайт, который мы разрабатываем. Так что мне нужен «хороший» список плохих слов, чтобы прокормить мою БД ... любым намеком / направлением? Оглядываясь с помощью Google, я нашел это , и это начало, но не более того.

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

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

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

23.08.2008 19:17:34
Фильтрация непристойности ... плохая идея или действительно плохая идея общения?
stephenbayer 22.10.2008 13:18:36
объедините это с проверкой орфографии, если вы получаете больше орфографических ошибок после цензуры, вы где-то
nailitdown 2.09.2010 04:28:01
Однако очень немногие фильтры могут обнаружить слова «Shiτ» и «fucκ». Даже не StackOverflow.
Theodore R. Smith 2.08.2013 20:25:05
Всем, кто говорит, что это бессмысленно и / или глупо, подумайте, что этот вид фильтрации все еще может быть полезен как часть большей системы. Да, это, вероятно, плохая идея - найти / заменить или автоматически отклонить, основываясь исключительно на черном списке, но фильтр можно использовать, например, для отправки пользовательского контента на утверждение или модерацию вручную. Или, возможно, его можно использовать, чтобы предупредить пользователя перед отправкой, что он может быть забанен, если он публикует оскорбительные материалы.
Cam Jackson 9.08.2013 08:28:11
Это отлично подходит для образовательного программного обеспечения в Интернете, чтобы пометить ответы учащихся, которые «содержат ненормативную лексику», которые затем могут быть переданы учителям для проверки. Я создал карту сворачивания ASCII, в которой я вручную сопоставил все 65 000+ кодовых точек Unicode с их ближайшим визуальным эквивалентом ASCII, если таковой существует. Затем я сделал то же самое для всех перестановок 2-, 3- и 4-символьных последовательностей, используя механизм визуального сходства, чтобы свернуть их до ближайшего односимвольного эквивалента (e..g "\ / \ /" = "W", "| - |" = "H", "| _" = "L"), а затем использовал иерархический алгоритм временной памяти для их мгновенного распознавания.
Triynko 10.02.2015 20:14:24
9 ОТВЕТОВ
РЕШЕНИЕ

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

<?php

/**
 * @author unkwntech@unkwndesign.com
 **/

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>
39
24.07.2011 17:41:18
В день-день или день-день. Урс-Кей ил-путь - плохой луч света. (бывший владелец AOL ник Ицхай).
plinth 12.05.2009 01:07:43
ты имеешь в виду "на день-день orget-fay"
Raiyan 22.05.2015 16:28:31
Это отличная ссылка, спасибо за это. В приложении, однако, я не уверен, как изменить "гамбургер" на "[ч H] [a ​​A @] [м М] [b B I3 l3 i3] [u U v V] [r R] [g G 6] [e E 3] [r R] "поможет фильтровать ненормативную лексику.
JVE999 24.02.2020 17:21:27

Остерегайтесь грубых ошибок .

«Apple сделала грубую ошибку, вытеснив их провидца - я имею в виду, посмотрите, что задумал NeXT!»

Хм. "Clbuttic".

Google "clbuttic" - тысячи просмотров!

Есть кто-то, кто называет его машину "clbuttic".

Есть доски объявлений "Clbuttic Steam Engine".

Словарь Вебстера - не поможет.

Хм. Что это может быть?

СОВЕТ: Люди, которые делают ложные предположения относительно своих сценариев регулярных выражений, будут смущены, когда они повторят эту неразборчивую ошибку.

58
5.04.2018 20:30:44
Я открыл эту ветку с намерением добавить этот же ответ ... а потом понял, что давным-давно дал вам голос за это :)
Ed S. 12.05.2009 01:44:41

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

1
23.08.2008 22:03:13

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

4
24.08.2008 01:23:18

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

4
30.08.2008 08:21:18
И не блокируйте город Сканторп.
TRiG 25.11.2009 19:01:49
К сожалению, это не избавляет от проклятий в начале абзаца или рядом с пунктуацией. Если бы у меня был абзац, состоящий из «(плохого слова)!», Это провалило бы ваш тест.
proudgeekdad 22.02.2011 21:51:30

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

-2
2.09.2010 04:23:08
URL был недоступен.
Lenin 13.12.2012 11:44:44

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

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

2
2.09.2010 04:29:39

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

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

37
9.03.2012 05:28:18
Это немного, хотя - "Мистер Хэндс", очевидно, оскорбительный.
UpTheCreek 17.09.2015 18:08:12
Французская БД плохая ...
Cocorico 5.02.2016 09:25:20

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

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

{
response: "false"
}

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

7
25.01.2017 07:45:40
Кажется, больше не активен.
Nick 14.06.2016 12:36:58
Поскольку этот список недоступен, raw.githubusercontent.com/RobertJGabriel/Google-profanity-words/… является опцией.
Tony 11.09.2019 12:40:42