Сведения о вопросе

1234123213

00:41, 11th August, 2020

Теги

list   dictionary   profanity    

фильтр" плохие слова"

Просмотров: 521   Ответов: 9

Не очень технично, но ... .. Я должен внедрить фильтр плохих слов в новый сайт, который мы разрабатываем. Поэтому мне нужен список плохих слов "good", чтобы накормить мою БД... какой-нибудь намек / направление? Посмотрев вокруг с помощью google, я нашел вот это , и это начало, но не более того.

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

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

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



  Сведения об ответе

darknet

07:58, 16th August, 2020

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

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

Хм. "clbuttic".

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

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

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

Словарь Вебстера - никакой помощи.

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

HINT: люди, которые делают предположения о своих сценариях regex, будут а когда они повторяют эту ужасную ошибку, то впадают в отчаяние.


  Сведения об ответе

lesha

14:56, 26th August, 2020

Я не видел никакого указанного языка, но вы можете использовать его для 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>


  Сведения об ответе

PIRLO

21:18, 19th August, 2020

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

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


  Сведения об ответе

PROGA

07:45, 11th August, 2020

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

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

{
response: "false"
}

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


  Сведения об ответе

#hash

19:14, 1st August, 2020

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


  Сведения об ответе

lesha

00:01, 2nd August, 2020

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


  Сведения об ответе

lool

21:06, 1st October, 2020

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

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


  Сведения об ответе

$DOLLAR

01:34, 24th August, 2020

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


  Сведения об ответе

9090

01:02, 27th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться