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 条评论
登录 后参与评论

相关文章

来自专栏King_3的技术专栏

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

3763

组和分组卷积

考虑一个正方形。它是对称的吗?它是如何对称的?它有多少对称性?它有什么样的对称性?

28610
来自专栏互联网大杂烩

Python 异常值分析

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

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

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

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

3516
来自专栏生信技能树

比较不同的对单细胞转录组数据聚类的方法

背景介绍 聚类之前必须要对表达矩阵进行normalization,而且要去除一些批次效应等外部因素。通过对表达矩阵的聚类,可以把细胞群体分成不同的状态,解释为什...

66612
来自专栏趣学算法

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

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

1072
来自专栏华章科技

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

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

2803
来自专栏琦小虾的Binary

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

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

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

【机器学习笔记之一】深入浅出学习K-Means算法

摘要:在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。 ...

2869
来自专栏逍遥剑客的游戏开发

纹理投影测试

1847

扫码关注云+社区