概述

本文采用的是词集模型。

词集模型:将每个单词出现与否作为一个特征,即忽略了单词出现的次数,从而将句子转化为单词向量后,该向量中只有0和1;对应的是词袋模型,将考虑单词出现的次数,从而得到的单词向量,除了0和1还有大于1的整数。

相关概念:

文档:是训练集合,包含了多个句子

句子:对应一个词向量,向量的长度与词汇表的长度相同,元素为1代表对应位置词汇表中的单词出现,否则不出现

单词(词条):句子中的一个词,对应词向量中的一个元素

词汇表:包含了文档中所有可能出现的单词,但不重复。

从训练文本中计算条件概率p(x|c)和先验概率p(c)

说明:c即文本分类的取值,如正常邮件和垃圾邮件;x即某个单词

1、利用文档构建词汇表,假设长度为n,n即文档不重复单词的个数

如下文档(假设每行为一个句子的单词的切分),构成的词汇表为【one, two, three, four,five, six,seven】

单词

单词

单词

单词

Lable

one

two

three

four

0

two

three

four

five

0

three

four

five

six

1

four

five

six

seven

1

上面假设了每个句子一样长,实际上不一定相同,但并不影响这个理解过程

2、根据构建的词汇表将文档转化为训练矩阵m*n,其中m为句子的个数,n为词向量的长度

上述文档转化后的词向量为:

1 1 1 1 00 0

0 1 1 1 10 0

0 0 1 1 11 0

0 0 0 1 11 1

3、计算概率(假设为二分类)

如下为标量:

p(c=0)=0.5   label为0的句子的个数/句子的总数m

p(c=1)=0.5   label为1的句子的个数/句子的总数m

p(wi|c=0) 词向量中第i个单词在Label=0的句子中出现的概率:从训练矩阵中将Label=0的行向量都取    出来,将所有行的第i列加起来作为分子,将所有元素都加起来(其实就是一堆1相加)作为分母,相除可得

p(one|c=0)=1/8 p(two|c=0)=1/4 p(three|c=0)=1/4    p(four|c=0)=1/4     p(five|c=0)=1/8 p(six|c=0)=0  p(seven|c=0)=0

p(wi|c=1)  词向量中第i个单词在Label=1的句子中出现的概率:从训练矩阵中将Label=1的行向量都取出来,将所有行的第i列加起来作为分子,将所有元素都加起来(其实就是一堆1相加)作为分母,相除可得

p(one|c=1)=0 p(two|c=1)=0 p(three|c=1)=1/8   p(four|c=1)=1/4     p(five|c=1)=1/4 p(six|c=1)=1/4  p(seven|c=1)=1/8

如下为向量:

p0V=【p(w1|c=0),p(w2|c=0),p(w3|c=0),…,p(wn|c=0)】=[1/8  1/4  1/4 1/4  1/8  0  0 ]

P1V=【p(w1|c=1),p(w2|c=1),p(w3|c=1),…,p(wn|c=1)】=[0  0  1/8 1/4  1/4  1/4 1/8 ]

对一个句子进行分类

先将该句子转化为词向量V

该句子为0类的概率:Sum(V.dot(p0V)),即将V中每个元素与p0V中对应的每个元素相乘并求和

该句子为1类的概率:Sum(V.dot(p1V)),即将V中每个元素与p1V中对应的每个元素相乘并求和

比较两个概率值,哪个大则属于哪一类

假设有如下句子[one five tree two seven],转换为句子向量为[11 1 0 1 0 1]

(说明:这个模型是不考虑单词之间的关系的以及先后顺序的)

P(c=0)=1/8*1+1/4*1+1/4*1*1/4*0+1/8*1+0*0+1*0=6/8

P(c=1) =  0 *1+ 0*1+  1/8*1+1/4*0 + 1/4*1+  1/4*0+ 1/8*1=4/8

所以该句子为0类

《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用相关推荐

  1. (三)朴素贝叶斯运用——文本分类

    1.贝叶斯理论 当我们有样本(包含特征和类别)的时候,我们非常容易通过 p(x)p(y|x)=p(y)p(x|y) p ( x ) p ( y | x ) = p ( y ) p ( x | y ) ...

  2. 朴素贝叶斯网络matlab实现_基于朴素贝叶斯的文本分类方法实战

    基于朴素贝叶斯的文本分类方法 一.朴素贝叶斯原理的介绍 二.朴素贝叶斯分类器的代码实现 分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时会给出这个猜测的概率估计值.朴素贝叶 ...

  3. 七、朴素贝叶斯中文文本分类

    1.朴素贝叶斯中文文本分类 中文分词 停用词 朴素贝叶斯中文分类举例:新闻文档分类 朴素贝叶斯中文分类的具体过程:加载停用词.中文分词.文本向量化.模型训练和保存.模型的加载和预测. 2 中文分词 2 ...

  4. python朴素贝叶斯的文本分类_自给自足,完全手写一个朴素贝叶斯分类器,完成文本分类...

    Part 1: 本文解决的问题: 我在有这样的一个数据集,里面存放了人们对近期播放电影的评价,当然评价也就分成两部分,好评和差评.我们想利用这些数据训练一个模型,然后可以自动的对影评做出判断,到底是好 ...

  5. 基于朴素贝叶斯的文本分类算法

    基于朴素贝叶斯的文本分类算法 摘要:常用的文本分类方法有支持向量机.K-近邻算法和朴素贝叶斯.其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用.本文详细介绍了朴素贝叶斯的基本原理,讨论多项式模 ...

  6. 基于朴素贝叶斯实现文本分类

    基于朴素贝叶斯实现文本分类 数据集介绍 数据集为网上公开的新闻数据,其中数据集包含10个类别. 模型选择 贝叶斯分类 贝叶斯公式 朴素贝叶斯 拉普拉斯平滑引入 某个属性的条件概率为0,则会导致整体概率 ...

  7. 朴素贝叶斯基于朴素贝叶斯的文本分类算法

    朴素贝叶斯 以及 基于朴素贝叶斯的文本分类算法 参考文章: https://www.cnblogs.com/jorbin/articles/1915888.html

  8. 朴素贝叶斯文本分类java_基于朴素贝叶斯的文本分类算法

    基于朴素贝叶斯的文本分类算法 摘要:常用的文本分类方法有支持向量机.K-近邻算法和朴素贝叶斯.其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用.本文详细介绍了朴素贝叶斯的基本原理,讨论多项式模 ...

  9. 自然语言处理(NLP)编程实战-1.2 使用朴素贝叶斯实现情感分类

    内容汇总:https://blog.csdn.net/weixin_43093481/article/details/114989382?spm=1001.2014.3001.5501 课程笔记:1. ...

  10. 机器学习实战读书笔记(3)朴素贝叶斯

    贝叶斯定理 要理解贝叶斯推断,必须先理解贝叶斯定理.后者实际上就是计算"条件概率"的公式. 所谓"条件概率"(Conditional probability), ...

最新文章

  1. Java NIO 选择器(Selector)的内部实现(poll epoll)
  2. oracle的sequence是什么,关于Oracle的序列(Sequence)使用内容是什么呢?
  3. Vivado联合ModelSim仿真设置(附图步骤)
  4. hdu5399(找规律。。。)
  5. 如何发现 GitHub 上那些有趣好玩的项目?
  6. 【追一科技校招】AI浪潮已来,你不可错过的澎湃风口!
  7. 分布式数据层中间件详解:如何实现分库分表+动态数据源+读写分离
  8. PHP工程师学习计划
  9. COLOR_CODE
  10. 中国金控盐碱地水稻 国稻种芯-林裕豪:粮食安全两会热点
  11. “自贸云”+“自贸大数据”将加速辽宁自贸区建设与创新
  12. 误删注册表导致键盘不可用,NumLock一直亮着
  13. Linux中的数学运算
  14. 60、JAVA的map集合
  15. MFC--按键、按钮按下和弹起事件检测
  16. 好玩的Ipaddian
  17. 文件(file)操作
  18. android 百度唤醒,Android百度语音唤醒(has no license,错误码11002)
  19. 上传文件到服务器打不开,关于软件上传到服务器后出现图片打不开的解决方法...
  20. 六种常见WIFI部署场景

热门文章

  1. 4个超神工作表技巧,还不快学起来!
  2. 嵌入式系统功能需求分析_机械管理系统如何物料需求分析
  3. c语言合法自定义标识符_c语言合法标识符的要求是什么
  4. 超详细——matplotlib基础
  5. Github查看文件历史提交和修改记录
  6. 机器学习、深度学习需要哪些数学知识?✅
  7. 《南溪的目标检测学习笔记》——目标检测模型的设计笔记
  8. 剑指offer——2.实现Singleton模式
  9. 敏捷开发中史诗故事与用户故事的颗粒度
  10. 【编程珠玑】第四章 编写正确的程序