朴素贝叶斯模型因为其简单实用,在分类中有广泛的应用。结合文本分类的传统模型-词袋模型,进行简单分类,效果还不错。
比如,输入:
‘这个孩子不好,昨天生气打人了, 糟糕’,分类结果为: neg,0.6577
'这个孩子虽然 打人 ,但非常优秀' ,分类结果为:pos,0.7067
第一步,首先建立词袋对象
Sublime Text显示非常漂亮。
我们看,词袋对象word_tags一共三个成员:
bags :词袋,用词典,key:word项,value:word在类别中出现的次数
counts: word的总数量
unk : 表示未见过的词语
然后,定义了相关成员,关键函数包括:
update_bags(self,key,value):模型训练过程中,更新词袋的对象和计数
get_word_frequency(self,key): 获取词项对应的词频
然后,定义Bayes模型对象:
包括训练和预测两个函数。
之后,来定义情感分类对象:
Sentiment_analysis通过预处理数据以后,调用Bayes_model进行训练和预测。
最后,进行训练和分类:
效果还不错:
('neg', 0.657748544497328)
('pos', 0.7067436447326716)
以上只是简单验证,完整的处理还应包括文本的预处理,词频统计算法的修改,统计和可视化,但这些不是本文重点,略过。
如果需要完整代码请留言。