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