ナイーブベイズでネガポジ判定をする.
30 Oct 2012
ポジ:twitterは良いものです. ポジ:twitter最高やん. ポジ:facebookも悪くはない. ポジ:facebookは最高に良い. ネガ:twitterは最高ではない. ネガ:twitterは悪いのだ. ネガ:facebookは良くない. ネガ:facebookはもうダメだ.そして,形態素解析をして,整理します.
ポジ:twitter 良い ポジ:twitter 最高 ポジ:facebook 悪い ない ポジ:facebook 最高 良い ネガ:twitter 最高 ない ネガ:twitter 悪い ネガ:facebook 良い ない ネガ:facebook ダメ次にポジティブなツイート数(Np),ネガティブなツイート数(Nn)を数えます. また,ポジティブの中に含まれる単語の数(Nword,p)を全単語について数えます.ネガティブも同様に数えます.
Np= 4 Nn = 4 Ntwitter,p = 2 Ntwitter,n = 2 Nfacebook,p= 2 Nfacebook,n= 2 N最高,p = 2 N最高,n = 1 N良い,p = 2 N良い,n = 1 N悪い,p = 1 N悪い,n = 1 Nない,p = 1 Nない,n = 2 Nダメ,p = 0 Nダメ,n = 1そして,ポジティブな確率(Pp),ネガティブな確率(Pn),ポジティブという条件のもとでwordを含む確率(qword,p),ネガティブという条件のもとでwordを含む確率(qword,n)を求めます.(ホントはもっと複雑です.)
Pp = Np / (Np + Nn) = 4/(4+4) = 0.50 Pn = Nn / (Np + Nn) = 4/(4+4) = 0.50 qtwitter,p = Ntwitter,p / (Ntwitter,p + Nfacebook,p + N最高,p +N良い,p + N悪い,p + Nない,p + Nダメ,p ) = 2/10 = 0.20 qtwitter,n = Ntwitter,n / (Ntwitter,n + Nfacebook,n + N最高,n +N良い,n + N悪い,n + Nない,n + Nダメ,n ) = 2/10 = 0.20おんなじように,全単語について求めます.
qfacebook,p= 0.20 qfacebook,n = 0.20 q最高,p = 0.20 q最高,n = 0.10 q良い,p = 0.20 q良い,n = 0.10 q悪い,p = 0.10 q悪い,n = 0.10 qない,p = 0.10 qない,n = 0.20 qダメ,p = 0.00 qダメ,n = 0.10これで学習段階は終了です.ここでは例えば以下のようなツイートがネガティブなツイートかポジティブなツイートか判定してみます.
facebookもtwitterも悪くない.最高に良い.
Pp * Pd|p ∝ qp * qtwitter,p * qfacebook,p * q悪い,p * qない,p * q最高,p * q良い,p = 0.50 * 0.20 * 0.20 * 0.10 * 0.10 * 0.20 * 0.20 = 8.0 × 10-6 Pn * Pd|n ∝ qn * qtwitter,n * qfacebook,n * q悪い,n * qない,n * q最高,n * q良い,n = 0.50 * 0.20 * 0.20 * 0.10 * 0.20 * 0.10 * 0.10 = 4.0 × 10-6この結果から
facebookもtwitterも悪くない.最高に良い.というツイートはポジティブなツイートであることがわかります. ただ,変なこと書いているかも知れません.間違ってれば,教えてくれると嬉しいです. 参考 : 言語処理のための機械学習入門 (自然言語処理シリーズ) [単行本]
comments powered by Disqus < apacheに不正アクセス?