2012-02-09 11 views
1

私はテキストチャットシステムを構築しています。私は、禁止された単語/フレーズをチェックする機能を追加したい。禁止された単語を確認する

私は考えることができる、そしてそれはおそらく最良の方法かもしれないと信じていないことができる唯一の技術はすべての単語をループのために行うと、テキスト内の一致を検索することです。多くの言葉が追加されると、信じられないほど遅くなるようです。

私はAS3を使用していますが、ほとんどの言語の回答が役に立つと思われます。

は、世話をする リー

答えて

3

をpythonでAS3辞書や辞書を使用してちょうど単語が辞書にあるかどうかを確認します。すべての言葉を読まないとわかる方法はありません。

+0

YEah、これを投稿した後、私は、テキスト内の単語を配列または辞書と比較してテストすることが、禁止された単語を個別にテストするよりも優れていることに気付きました。アイデアWeasel –

+1

を確認していただきありがとうございます。辞書はより良い選択です - それはハッシュテーブルとして実装され、より速く動作します。 – WeaselFox

+0

私の答えをチェックする - これを行うより速い方法があります。 – weltraumpirat

1

これは、答えよりもコメントですが、コメントは長さが限られており、大きな問題がここにあります。

私はあなたが根本的に間違った質問をしていると信じています!

確かに辞書とブラックリストは、あなたのシステムのユーザーに受け入れられるだろう禁止したい単語やフレーズを強調表示するでしょうか?あなたのシステムのユーザーが不快に感じるテキストがありますか?誰が決める?

たとえば、住む人々hereに問題があるか、実際に住んでいる人はhereでしょうか。 this football/soccer teamをサポートしている場合はどうなりますか? This personはおそらく英国を訪れることはありません。

あなたはアナグラムとスラングの問題に入ります。 FCUKは、イギリスのハイストリートブランドです(と私は確信しています)。そして、pr0n(リンクなし!)または​​があります。

れる本当の問題 - どのように私は、一般的に受け入れられない言語を使用してから、システムを使用している人々を停止していますか?それはプログラミング問題よりもデザイン/社会工学の問題です。私は、このサイトには単語/フレーズのフィルタリングがあるとは思わないが、誰にも犯罪を引き起こすことはない。

ここにアイデアがあります。ユーザーには何が受け入れられるかが決まります。レピュテーションベースのシステムを使用します。ユーザーが行動しているユーザーに投票を許可し、違反の原因となるユーザーを投票します(投票のフィードバックをユーザーに与えて、自分のやり方を修正できるようにするオプション付き)。そして、否定的な評判。

+0

こんにちは、ありがとうございます。これは、クライアントのためのアダルトチャットシステムなので、彼は許可されているかどうかを絶対的かつ具体的に制御したいと考えています。 –

+0

@LeeLoftiss:クライアントに、これがうまくいかない方法を教える必要があると思います。 http://tonguetiedtim.com/slang-words-for-penis(NSFW)には毎日の言葉も含まれています。例えば、英国政府の場合、議員は「民間会員の法案」を掲げることができます。 – Skizz

2

あなたは一度だけテキストを解析するために持っていると、単一の正規表現にあなたの辞書内のすべてのエントリを、連結考えてみましょう。私はいくつかのテストをしましたが、それは言葉を置き換えるよりもずっと速くなるでしょう。

function censorWithDictionary (dict:Dictionary, text:String) : String { 
    var reg : String = ""; 
    for (var key:Object in dict) 
    { 
     reg += reg=="" ? "" : "|";  // add an "or" for multiple search words 
     reg += "\\b"+dict[key]+"\\b"; // only whole words 
    } 

    var regExp : RegExp = new RegExp (reg, "gi"); 
    return text.replace (regExp, "----"); 
} 
+0

いいね!私は確かにこれを道路の下で使用するでしょう – WeaselFox

+0

ありがとう。これは素晴らしく見えます。それ自体が正規表現であるエントリを扱うのだろうか? –

+0

部分的なもの、はい。それらはすべて1つの大きなRegExpの一部になるので、あなたは多様な行や '^ $ 'のものを使うことはできません。しかし、メタキャラクタや文字クラスを使用すると効果があります。 – weltraumpirat

2

私はゲームサイトを運営しており、手動でモデレートされていないチャットシステムを導入したいと考えていました。私たちは "禁止された言葉"の道を進み、本当にうまくいっています。

私はそれらをカウントし、我々は今、チャットメッセージが通過はったときに我々は時間をかけて単語を追加したためにどのIがオンラインで見つけ何か由来(ただ)79禁止用語のリストを持っています。

我々は物事を確認する方法は、我々はすべてのスペースとなしアルファベット文字を除去することにより、全体チャットメッセージを連結して、残っているもので禁止された単語を検索していることです。私たちが作っ

重要な決定は、以下のとおりです。

  1. あなたがそれらを少し信用するまでの人がチャットを投稿してはいけません
  2. 彼らのメッセージを拒否した理由を人々に伝えるないでください(当社のサイト上で、彼らは を持っています)
  3. 5「悪い」のメッセージを3つのゲームをプレイし、我々は自動的に私たちは、私たちができるよう
  4. をスキャンし、それを通して得たすべてのチャットを毎日出したレポートを電子メールで送信
  5. あなたをブロックしていると他のユーザーが投稿されたメッセージに苦情を言います。もしそうなった場合、メッセージは自動的に削除され、後で確認することができます。

1 + 3 + 5ほとんどない今起こると、それはいても素晴らしく動作します - 「!私はそれは暑いたい」時に

のようなメッセージが

拒否されています(手がかりは願いの "sh"部分であり、 "it"です)が、それでも頻繁に起こることはありません。

関連する問題