4

テキストが主に特定の言語を使用しているかどうかを推定できる単純なアルゴリズムまたはオープン ソース ライブラリ (PHP) を探しています。Pythonに関連する次の回答が見つかりました。これはおそらく正しい方向に進んでいます。しかし、PHP ですぐに使えるものは魅力的です。

もちろん、n-gram estimator のようなものを実装するのはそれほど難しくありませんが、参照データベースも必要です。

実際に解決する問題は次のとおりです。私は WordPress ブログを運営していますが、現在スパムが殺到しています。ブログはドイツ語で書かれており、事実上すべてのトラックバック スパムは英語です。私の考えは、英語のように見えるすべてのトラックバックをすぐにスパムすることです。ただし、タイプミスや引用をスパムしたくないので、マーカー ワードは使用できません。

私の解決策:

この質問への回答を使用して、単純なストップワード比率でドイツ語を検出するソリューションを実装しました。リンクがある場合、コメントには少なくとも 25% のドイツ語のストップワードが含まれている必要があります。したがって、「クールな記事」のように、ストップワードがまったくないものにコメントすることはできますが、リンクを張る場合は、適切な言葉を書く必要があります。

残念ながら、NLTK のストップワードは正しくありません。リストには、ドイツ語には存在しない単語が含まれています。そこで、スノーボールリストを使用しました。Perl 正規表現オプティマイザーを使用して、リスト全体を 1 つの正規表現に凝縮し、preg_match_all() を使用してストップワードをカウントしました。フィルター全体は 25 行で、リストから正規表現を生成する Perl コードの 3 分の 1 です。それが野生でどのように機能するか見てみましょう。

ご協力いただきありがとうございます。

4

2 に答える 2

1

あなたが探しているのは言語検出アルゴリズムではなくスパム分類子であるという@Thomasに同意します。それにもかかわらず、この言語検出ソリューションは十分にシンプルで、すぐに使用できると思います。基本的に、さまざまな言語のストップ ワードの数を数え、ドキュメント内でストップ ワードの数が多い言語を選択すると、単純でありながら非常に効果的な言語分類子が得られます。

ここでの最良の部分は、情報を処理するために標準のストップワード リストとnltkなどの処理パッケージを使用できるため、ほとんど何もコーディングする必要がないことです。ここでは、Python とnltkを使用してゼロから実装する方法の例を示します。

これが役立つことを願っています。

于 2013-06-13T19:33:37.280 に答える
0

英語を認識したいだけなら、とても簡単なハックがあります。投稿の文字を確認するだけなら、英語は完全に純粋な ASCII の範囲に含まれる数少ない言語の 1 つです。それはハックですが、そうでなければ非常に難しい問題をかなり単純化したものだと私は信じています。

有効性についての私の推測では、フランスとドイツのいくつかのブログでエンベロープの計算を簡単に行うだけで、~85% になるでしょう。

于 2013-06-13T19:27:05.110 に答える