「単語の袋」アプローチを使用したトピック検出のための素朴なベイジアン
-
03-10-2019 - |
質問
私は、特定のドキュメントまたは単語のストリームのトピックを見つけるために、素朴なベイゼアのアプローチを実装しようとしています。これを探すことができるかもしれない素朴なベイジアンアプローチはありますか?
また、私は進むにつれて辞書を改善しようとしています。最初は、トピックにマッピングする単語がたくさんあります(ハードコーディング)。すでにマッピングされている単語以外の単語の発生に応じて。そして、これらの単語の発生に応じて、それらをマッピングに追加したいので、トピックにマッピングする新しい単語について改善し、学習します。また、単語の確率を変更します。
どうすればこれを行う必要がありますか?私のアプローチは正しいですか?
実装に最適なプログラミング言語はどれですか?
解決
ナイーブベイズの既存の実装
おそらく、素朴なベイズを使用したドキュメントの分類をサポートする既存のパッケージのいずれかを使用する方が良いでしょう。
Python -Pythonベースを使用してこれを行うには 自然言語ツールキット(NLTK), 、を参照してください ドキュメント分類 自由に利用可能なセクション NLTKブック.
ルビー - ルビーがあなたのものの方がもっとある場合、あなたは 分類器 宝石。検出するサンプルコードは次のとおりです ファミリーガイの引用が面白いのか不快であるか.
Perl -Perlにあります アルゴリズム:: naivebayes パッケージにサンプル使用スニペットを備えたモジュール 概要.
C# -C#プログラマーは使用できます nbayes. 。プロジェクトのホームページには、単純なスパム/非スパム分類器用のサンプルコードがあります。
ジャワ -Javaの人々は持っています Classifier4J. 。トレーニングとスコアリングコードスニペットを見ることができます ここ.
キーワードからのブートストラップ分類
キーワードのセットから始めたいと思っているようです 特定のトピックをキューすることが知られています そして、それらのキーワードを使用します 分類器をブートストラップします.
これはかなり賢いアイデアです。論文を見てください キーワード、em、縮小を使用したブートストラップによるテキスト古典 McCallum and Nigam(1999)。このアプローチに従うことで、ブートストラップされたナイーブベイズ分類器を使用して、ハードコーディングされたキーワードを単独で使用して66%に使用することで得た45%から分類精度を改善することができました。彼らのデータのために、後者は人間のレベルの合意に近いため、人々は72%の時間でドキュメントラベルについて互いに同意しました。