NLTK之朴素贝叶斯分类器

由于学习需要,最近开始接触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 条评论
登录 后参与评论

相关文章

来自专栏琦小虾的Binary

Opencv中数据结构Mat的相关属性

Opencv中数据结构Mat的相关属性 前言: The class Mat represents an n-dimensional dense numeric...

35470
来自专栏zhisheng

学习算法之路

一个搞ACM的需要掌握的算法的sheet。 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10...

69050
来自专栏封碎

当今世界最为经典的十大算法 博客分类: 经典文章转载 算法数据结构网络应用数据挖掘J#

本文转载自July CSDN博客:http://blog.csdn.net/v_JULY_v/archive/2011/03/07/6228235.aspx

28620
来自专栏华章科技

干货:用Python进行数据清洗,这7种方法你一定要掌握

导读:数据清洗是数据分析的必备环节,在进行分析过程中,会有很多不符合分析要求的数据,例如重复、错误、缺失、异常类数据。

2K30
来自专栏Python数据科学

机器学习“特征编码”的经验分享:鱼还是熊掌?

我们拿到的数据通常比较脏乱,可能会带有各种非数字特殊符号,比如中文。下面这个表中显示了我们最原始的数据集。而实际上机器学习模型需要的数据是数字型的,因为只有数字...

48410
来自专栏互联网大杂烩

Python 异常值分析

异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视...

22820
来自专栏小樱的经验随笔

模拟退火算法从原理到实战【基础篇】

  模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达...

50360
来自专栏chenjx85的技术专栏

leetcode-137-Single Number II-第一种解法

70830
来自专栏程序员宝库

码农也要学算法

当“人工智能”、“AlphaGo”、“无人驾驶”、“智能投顾”等词语不断在人们视野中出现的时候,意味着我们正步入一个算法的时代。计算机通过提供给人类每天要面临的...

550100
来自专栏趣学算法

数据结构 第2讲 算法复杂性

该内容来源于本人著作《趣学算法》在线章节:http://www.epubit.com.cn/book/details/4825

14820

扫码关注云+社区

领取腾讯云代金券