1

多項式単純ベイズ分類器に関する scikit-learn のチュートリアルを見て、試してみました。

これをテキスト文書の分類に使用したいのですが、NB の問題点は、NB がその P(document|label) をすべての独立した機能 (単語) の積として扱うことです。今、私は P(document|label) = P(wordX|wordX-1,wordX-2,label) * P(wordX-1|wordX-2,wordX-3,ラベル)。

この言語モデルを実装し、これに基づいて分類を実行するように NB 分類器を拡張できるものを scikit Learn がサポートする場所はどこですか?

4

1 に答える 1

4

CountVectorizerトライグラムを抽出します ( を使用ngram_range=(3, 3))。テキスト特徴抽出のドキュメントでこれが紹介されています。次に、MultinomialNB変換された特徴マトリックスで以前とまったく同じように使用します。

これは実際にはモデリングであることに注意してください。

P(ドキュメント | ラベル) = P(単語X、単語X-1、単語X-2 | ラベル) * P(単語X-1、単語X-2、単語X-3 | ラベル) * ...

それはどのくらい違いますか?さて、その最初の項は次のように書くことができます

P(単語X、単語X-1、単語X-2 | ラベル) = P(単語X | 単語X-1、単語X-2、ラベル) * P(単語X-1、単語X-2 | ラベル)

もちろん、他のすべての用語もそのように書くことができるので、最終的には次のようになります (簡潔にするために、下付き文字とラベルの条件付けを削除します)。

P(X | X-1, X-2) P(X-1 | X-2, X-3) ... P(3 | 2, 1) P(X-1, X-2) P(X -2, X-3) ... P(2, 1)

ここで、P(X-1, X-2) は P(X-1 | X-2) P(X-2) と書くことができます。したがって、これらすべての項についてこれを行うと、

P(X | X-1, X-2) P(X-1 | X-2, X-3) ... P(3 | 2, 1) P(X-1 | X-2) P(X -2 | X-3) ... P(2 | 1) P(X-2) P(X-1) ... P(1)

したがって、これは実際にはトライグラム、バイグラム、およびユニグラムを使用するのと似ています (ただし、バイグラム/ユニグラムの用語を直接推定するわけではありません)。

于 2013-06-27T02:55:32.927 に答える