51

あまり技術的ではありませんが... 開発中の新しいサイトに悪い言葉のフィルターを実装する必要があります。したがって、データベースにフィードするための「良い」悪い言葉のリストが必要です...ヒント/方向性はありますか? グーグルで調べてみると、これが始まりでしたが、それ以上のものではありませんでした。

はい、この種のフィルターは簡単にエスケープできることは知っています...しかし、クライアントはクライアントの意志です!!! :-)

サイトは英語とイタリア語の両方の単語を除外する必要がありますが、イタリア語については、コミュニティで作成された「パロラッチェ」のリストを同僚に手伝ってもらうことができます :-) - メールで十分です。

助けてくれてありがとう。

4

9 に答える 9

59

clbuttic ミスに注意してください。

「Apple は、先見の明のある人を追い出すという巧妙な過ちを犯しました。つまり、NeXT が何をしてきたかを見てください!」

うーん。「クラブチック」。

Google "clbuttic" - 何千ものヒット!

自分の車を「clbuttic」と呼ぶ人がいます。

「Clbuttic Steam Engine」掲示板があります。

Webster の辞書 - 役に立ちません。

うーん。これは何ですか?

ヒント: 自分の正規表現スクリプトについて口論する人は、この口論的な間違いを繰り返すと困惑します。

于 2008-08-23T19:30:26.587 に答える
39

指定された言語は見当たりませんでしたが、これを 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>
于 2008-08-23T21:27:01.017 に答える
38

Shutterstock には、フィルタリングに使用される 不適切な単語のリストを含む Github リポジトリがあります。

ここで確認できます: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

于 2012-03-09T05:28:18.923 に答える
7

誰かが API を必要とする場合、Google は現在、悪い言葉のインジケーターを提供しています。

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

{
response: "false"
}

更新: Google はこのサービスを削除しました。

于 2012-08-03T18:52:48.000 に答える
4

投稿に気づいたら削除し、過度に露骨な投稿をしているユーザーをブロックすることをお勧めします。悪口を使わなくても、非常に不快なことを言うことができます。ass (別名ロバ) という単語をブロックすると、ユーザーは $$$ や /\55 など、フィルターを通過するために入力する必要があるものを入力するだけになります。

于 2008-08-24T01:23:18.280 に答える
4

Clbuttic の間違いに +1 を付けます。clbuttic のような単語が含まれないように、正確な文字列だけではなく、先頭と末尾のスペース (「 ass 」など) の両方をスキャンする「悪い単語」フィルターが重要だと思います。 、clbuttes、buttert、buttesなど。

于 2008-08-30T08:21:18.230 に答える
2

ウィキペディアの ClueBotには悪い単語フィルターがあります。そのソースを読んでください。

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

于 2010-09-02T04:29:39.020 に答える
1

あなたはいつでもクライアントに、常にexpletivesを投稿するだけのユーザーのセッションを持ち、それらをシステムに追加するための簡単なソリューションを作るように説得することができます。大変な作業ですが、おそらくコミュニティをより代表するものになるでしょう。

于 2008-08-23T22:03:13.503 に答える
-2

このトピックを調査する中で、必要なのは任意の置換を行う単なるリスト以上のものであると判断しました。私は、あなたが望む「清潔さ」のレベルを特定できる Web サービスを構築しました。また、誤検知 (つまり、単語があるコンテキストでは不適切で、他のコンテキストでは不適切である可能性がある場合) を識別する努力も行います。http://filterlanguage.comをご覧ください。

于 2010-09-02T04:23:08.740 に答える