友之介的つぶやきブログ

PCやらプログラムやらぶつぶつ言ってます

ナイーブベイズ

機械学習 はじめよう」のベイジアンフィルタを参考にナイーブベイズを実装してみました。

gihyo.jp



ついでだったので、他の方もやっていた、形態素解析mecabに変えてみました。

 

# coding: utf-8
import MeCab

partsDic = {}
for par in [u"名詞", u"動詞", u"形容詞", u"副詞", u"連体詞", u"感動詞",]:
    partsDic[par] = True

def split(sentence):
    sentence = sentence.encode("utf-8")
    tgr = MeCab.Tagger("")
    node = tgr.parseToNode(sentence)
    nodes = []
    while node:
        if partsDic.has_key(unicode(node.feature, "utf-8").split(",")[0]):
            nodes.append(unicode(node.surface, "utf-8").lower())
        node = node.next

    return nodes


コメントにもありましたが一番目のが正しいカテゴリに分類されないみたいです。
理由は色々ありますがbowだと出現確率が少ないものは、期待する結果にならないみたいですね。