質問
あまり技術的ではありませんが...開発中の新しいサイトに悪い言葉フィルターを実装する必要があります。したがって、データベースにフィードするための「良い」悪い言葉のリストが必要です...ヒント/方向性はありますか?Googleで周りを見回してみると、 これを見つけました 1 つ、それは始まりですが、それ以上ではありません。
はい、この種のフィルターは簡単に逃れられることはわかっています...しかし、クライアントの意志はクライアントの意志です!!!:-)
サイトでは英語とイタリア語の両方をフィルタリングする必要がありますが、イタリア語については、コミュニティが作成した「パロラッチェ」のリストを同僚に手伝ってもらうことができます :-) - 電子メールで十分です。
助けていただきありがとうございます。
解決
言語が指定されていませんでしたが、これを 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>
他のヒント
気づく 凡庸な間違い.
「Apple は、自社の先見の明のある人を強制的に排除するという重大な間違いを犯しました。つまり、NeXT が何をしようとしていたかを見てください!」
ふーむ。「クラブティック」。
Google「clbuttic」 - 何千ものヒット!
自分の車を「クラブティック」と呼ぶ人がいます。
「Clbuttic Steam Engine」の掲示板があります。
ウェブスターの辞書 - 役に立ちません。
ふーむ。これは一体何でしょうか?
ヒント:regexなスクリプトについてお尻を作る人々は、この微妙な間違いを繰り返すとぶら下がっています。
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 は現在、このサービスを削除しています。
投稿に気付いた時点で削除し、過度に露骨な投稿をするユーザーはブロックすることをお勧めします。悪口を使わずに非常に攻撃的なことを言うことができます。ass (別名ロバ) という単語をブロックすると、ユーザーはフィルターを通過するために a$$ や /\55 などを入力するだけになります。
Clbuttic の間違いに +1。clbuttic のような単語が入らないように、「悪い単語」フィルターが正確な文字列だけをスキャンするのではなく、先頭と末尾の両方のスペース (例: " ass ") をスキャンすることが重要だと思います。 、クラビュート、バタート、ビュートなど。
ウィキペディアの手掛かりボット 不適切な単語フィルターがある場合は、そのソースを読んでください。
常にクライアントを説得して、悪口を投稿し続けるユーザーのセッションを開催し、それらをシステムに追加する簡単なソリューションを作成することができます。大変な作業ではありますが、おそらくコミュニティをより代表するものになるでしょう。
このトピックを調査する中で、必要なのは恣意的な置換を行う単なるリスト以上のものであると判断しました。私は、希望する「清潔さ」のレベルを特定できる Web サービスを構築しました。また、誤検知を特定する努力もします。ある単語はある文脈では悪くても、他の文脈ではそうではない場合があります。を見てみましょう http://フィルター言語.com