Не очень технический, но ... Мне нужно реализовать фильтр плохих слов на новом сайте, который мы разрабатываем. Итак, мне нужен список "хороших" плохих слов, чтобы накормить мою базу данных ... любыми подсказками / указаниями? Глядя вокруг с Google Я нашел это один, и это начало, но не более того.
Да, я знаю, что от таких фильтров легко избавиться ... но клиент будет, будет клиент !!! :-)
Сайт должен будет отфильтровать как английские, так и итальянские слова, но для итальянского я могу попросить своих коллег помочь мне с созданным сообществом списком "parolacce" :-) - подойдет электронное письмо.
Спасибо за любую помощь.
объедините это с проверкой орфографии, если вы получите больше орфографических ошибок после цензуры, вы где-то напутались и можете с этим справиться
связанные: programmers.stackexchange.com/questions/143405/…
Однако очень немногие фильтры могут обнаружить слова «Shiτ» и «fucκ». Даже StackOverflow.
Всем, кто говорит, что это бессмысленно и / или глупо, следует учитывать, что такая фильтрация может быть полезна как часть более крупной системы. Да, вероятно, это плохая идея - искать / заменять или автоматически отклонять исключительно на основе черного списка, но можно использовать фильтр, например, для отправки отправленного пользователем контента для ручного утверждения / модерации. Или, возможно, его можно использовать, чтобы предупредить пользователя перед отправкой, что он может быть забанен, если он разместит оскорбительный материал.
Это отлично подходит для веб-образовательного программного обеспечения, позволяющего помечать ответы учащихся, которые «содержат ненормативную лексику», которые затем могут быть переданы учителям для проверки. Я создал карту сворачивания ASCII, в которой вручную сопоставил все 65 000+ кодовых точек Unicode с их ближайшим визуальным эквивалентом ASCII, если таковой существует. Затем я сделал то же самое для всех перестановок последовательностей из 2, 3 и 4 символов, используя механизм визуального сходства, чтобы свернуть их до ближайшего односимвольного эквивалента (например, "\ / \ /" = "W", "| - |" = "H", "| _" = "L"), а затем использовал алгоритм иерархической временной памяти для их мгновенного распознавания.
После долгих поисков и сбора: github.com/alvations/expletives/tree/master
Привет @triynko Если вы готовы поделиться кодом, мне было бы интересно. Интересная идея.





Остерегайтесь кбюттические ошибки.
"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.
Я открыл эту ветку с намерением добавить тот же ответ ... а потом понял, что давным-давно дал вам за это голос :)
Я не видел ни одного указанного языка, но вы можете использовать его для 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).
ты имеешь в виду "в день оргет-фей"
Это отличная ссылка, спасибо вам за это. В приложении, однако, я не уверен, как изменить "гамбургер" на "[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] "поможет фильтровать ненормативную лексику.
Вы всегда можете убедить клиента провести сеанс с пользователями, просто постоянно публикующими брань, и найти простое решение, чтобы добавить их в систему. Это большая работа, но она, вероятно, будет более репрезентативной для сообщества.
Я бы посоветовал просто удалять сообщения, когда вы о них узнали, и блокировать пользователей, которые чрезмерно откровенны в своих сообщениях. Можно говорить очень оскорбительные вещи, не используя нецензурных слов. Если вы заблокируете слово осел (он же осел), люди будут просто вводить $$ или / \ 55 или что-то еще, что им нужно ввести, чтобы пройти через фильтр.
+1 к ошибке Clbuttic, я думаю, что для фильтров «плохих слов» важно сканировать как начальные, так и конечные пробелы (например, «ass»), а не только точную строку, чтобы у нас не было таких слов, как clbuttic , clbuttes, buttert, buttess и т. д.
И не блокируйте город Сканторп.
К сожалению, это не избавляет от проклятий в начале абзаца или около знаков препинания. Если бы у меня был абзац, состоящий из «(плохое слово)!», Он не прошел бы ваш тест.
Изучая эту тему, я определил, что нужно нечто большее, чем просто список с произвольными заменами. Я создал веб-сервис, который позволяет вам определять желаемый уровень «чистоты». Он также пытается идентифицировать ложные срабатывания, то есть когда слово может быть плохим в одном контексте, но не в другом. Взгляните на http://filterlanguage.com
URL недоступен.
Википедия ClueBot имеет фильтр плохих слов, прочтите его источник.
Shutterstock имеет репозиторий Github с список плохих слов, используемым для фильтрации.
Вы можете проверить это здесь: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words
Хотя это многовато - "Мистер Хэндс" явно оскорбительный.
Французская БД плохая ...
Если кому-то нужен API, Google в настоящее время предоставляет индикатор плохого слова.
http://www.wdyl.com/profanity?q=naughtyword
{
response: "false"
}
Обновление: Google удалил эту службу.
Похоже, больше не проявляет активности.
Поскольку этот список не работает, raw.githubusercontent.com/RobertJGabriel/Google-profanity-wo rds /… - это вариант.
Фильтрация непристойности ... плохая идея или действительно плохая идея?