NLTK之朴素贝叶斯分类器

来源:互联网 发布:哈工大大数据集团 国企 编辑:程序博客网 时间:2024/06/05 19:24

转载请标明出处:http://blog.csdn.net/wuzqchom/article/details/51264231

由于学习需要,最近开始接触NLTK,使用最简单的Naive Bayes Classifier,但是写代码过程中各种错误和不顺,现将其记录于此。

之前并不知道分类器传的是什么参数,于是闷着头瞎写,结果总是报错

TypeError: 'tuple' object does not support item assignment

郁闷了一段时间,终于弄清楚分类器传的参数:

[

({"word1":value1,"word2":value2..."wordn":valuen},label),

({"word1":value1,"word2":value2..."wordn":valuen},label),

...

]

这是一个三层复合结构,首先它是一个list,第二层是一个元组,最里面是一个字典,还不明白?

我们看一个简单的例子。

假设我们有训练数据如下:

("房间太小,台灯古老",-1)

("房间比较宽大,走廊很大",+1)

分词之后我们得到单词集合

["房间",“太小”,“台灯”,“古老”,“比较”,“宽大”,“走廊”,“很大”](手工分词,仅为说明)

我们最后得到的要传的参数如下:

[

({"房间":True,“太小”:True,“台灯”:True,“古老”:True,“比较”:False, “宽大”:False,“走廊”:False,“很大”:False},-1

({"房间":False,“太小”:False,“台灯”:False,“古老”:False,“比较”:True, “宽大”:True,“走廊”:True,“很大”:True},+1

]

注意:这里字典的元素是整个语料单词的set元素个数,假如只是传本句训练语料的个数最后准确率只有0.24,而用上述方法NB方法可以达到0.83,至于上面的True和False可以用词频代替,实验效果差别不大。




0 0
原创粉丝点击