前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人工智能算法通俗讲解系列(五):朴素贝叶斯

人工智能算法通俗讲解系列(五):朴素贝叶斯

作者头像
Stanley Sun
发布2022-01-07 17:34:22
3760
发布2022-01-07 17:34:22
举报

如果你在管理一个网上的社区,或者你是社区中的一个成员,那么,你每天都能看到其他用户产生的很多内容。也许,你有会一个新奇的想法,想知道整个社区的人,在发布内容的时候是怎样的心情。做到这一点也许不难,可以采用最笨的办法,就是把所有的内容找出来,一条一条浏览,看大家写的内容是怎么样的。这是一件很累人的事情,也许内容太多,你花一辈子也看不完。如果有一个程序能帮你做这件事,那会大大提高效率。

今天,我给大家介绍一个算法,叫朴素贝叶斯。它可以帮你做这件事情。

1. 给内容打标签

进入算法之前,我们先看一些用户产生的内容。比如,比如社区里有一篇文章,文章下面有用户的一些评论。我们把用户评价的内容列出来,并且人工判断这些的情绪,给他们打上标签。为了简单起见,我们只把情绪划分为两种,0表示正面情绪,像肯定、夸奖、赞扬都属于正面情绪。1表示负面情绪,像怀疑、批评、辱骂等都属于负面情绪。

用户评论内容

情绪(0表示正面情绪, 1:负面情绪)

这篇文章有点意思。

0

蠢货!写的真烂!

1

楼主写的不错啊!

0

作者是个蠢货!

1

不错!

0

打标签的目的是让我们的程序进行学习,待它学会以后,就可以对新的用户内容做情绪判断了。

2. 建立词汇表

现在,我们建立一个词汇表。这个表里面包含了上面所有的词语。表里面词语的顺序我们要约定好,比如按拼音的顺序排列,当然,也可以按笔画或其它方式排列。

不错

蠢货

楼主

文章

写的

意思

有点

这篇

真烂

作者

我这里的词汇表是按拼音排序的。第一个是“啊”,这个字在第三个评论里出现过。第二个词是“不错”,也是在第三条里出现过。第三个词语是“蠢货”,它在第2条和第4条里出现过。词汇表里的每一个词都至少在一篇内容中出现过,也就是说,词汇表是所有词语的总和。

为了简单起见,我们这里不考虑分词的因素。比如,“真烂”到底应该是分成“真”和“烂”两个字还是合并在一起作为一个词呢?我们这个例子里就把它当成一个词来用。

3. 内容向量化

把每一条评论(或一篇内容)变成一个向量。向量是一个类似数组的结构,它的长度与词汇表长度相同。某个位置的词语,如果它在评论里出现过,则该位置就设定为1。如果没有出现过,就设为0。

第一条

0

0

0

0

0

0

1

0

1

1

1

0

0

比如,第一条“作者是个蠢货!” 词汇表中第一个字“啊”没有出现过,所以第一个元素是0。第二个词“不错”也没出现过,所以也是0。一直到第七个词语“文章”,才出现过,所以第七个元素是1。同样方法,第八个元素是0,第九个是1,等等。这就是一个向量。

用同样的方法把其它每一条评论变成向量,就成了下面的向量列表。

第一条

0

0

0

0

0

0

1

0

1

1

1

0

0

第二条

0

0

1

0

0

0

0

1

0

0

0

1

0

第三条

1

1

0

0

1

0

0

1

0

0

0

0

0

第四条

0

0

1

1

0

1

0

0

0

0

0

0

1

第五条

0

1

0

0

0

0

0

0

0

0

0

0

0

4. 计算

上面总共5条评论,有两条评论是负面情绪的评论。所以,我们可以得出结论

负面情绪出现的概率是 = 2/5 -------结论(1)

现在,我们把负面情绪的评论都列出来。

第二条

0

0

1

0

0

0

0

1

0

0

0

1

0

第四条

0

0

1

1

0

1

0

0

0

0

0

0

1

我们可以发现负面评论中,“蠢货”出现过2次,“个”出现过1次。“是”出现过1次。“写的”出现过1次,“真烂”出现过1次,“作者”出现过1次。

词语

出现次数

蠢货

2

1

1

写的

1

真烂

1

作者

1

这两句评论总共有7个词语,所以可以得出结论(2):在负面评论中,“蠢货”出现的概率是2/7,“个”出现的概率是1/7。“是”出现的概率是1/7。“写的”出现的概率是1/7. “真烂”出现的概率是1/7。“作者”出现的概率是1/7。

词语

出现的概率

蠢货

2/7

1/7

1/7

写的

1/7

真烂

1/7

作者

1/7

我们知道两个独立事件同时发生的概率等于各自发生的概率的乘积。----结论(3)

结合结论(2)结论(3),我们可以知道:

在负面评论里,“写的”和“真烂”两个词语同时出现的概率是 1/7*1/7=1/49。 ----结论(4)

这里需要说明一下,我们这时是假定每个词出现是随机的。实际上,并不完全随机。比如“写的”后面跟着“真烂”的概率,比跟着“作者”要高。因为第二种情况不是一个合理的句式。但是,为了简化模型,我们有意忽略词语之间的相关性。这样虽然会损失一些准确性,但是仍然会有不错的表现。正是有了这种简化,所以这个模型被冠以“朴素”的名义。叫朴素贝叶斯。

用同样的方法,可以得出结论:

在正面评论里,“写的”和“真烂”两个词语同时出现的概率是 = 1/9 * 0 = 0。 ----结论(5)

某句话,既是负面评论,又同时出现了“写的”和“真烂”两个字,这种情况出现的概率是

2/5 * 1/49 = 0.004

某句话,既是正面评论,又同时出现了“写的”和“真烂”两个字,这种情况出现的概率是

3/5 * 0 =0

所以,如果有人写了一个评论,为“写的真烂”,那它是负面评论的可能性(0.004)比是正面评论的可能性(0)更大,即,我们就可以判断这个评论为负面评论,即用户情绪为负面。这就是简单的情绪识别。

假设我们的程序,发现一个评论是“作者是个蠢货”,那它就会做如下分析:

1. 某句话,既是负面评论,又同时出现了"作者"、“是”、“个”、“蠢货”的概率是

2/5 * 1/7*1/7*1/7*2/7 = 0.000333

2. 某句话,既是正面评论,又同时出现了"作者"、“是”、“个”、“蠢货”的概率是

3/5 *

p1Vec = [0, 0, 2/7, 1/7, 0, 1/7, 0, 1/7, 0, 0, 0, 1/7, 1/7]

p0Vec = [1/9, 2/9, 0, 0, 1/9, 0, 1/9, 1/9, 1/9, 1/9, 1/9, 0, 0]

负面情绪时 => “作者是个蠢货”出现的概率是 2/7*1/7*1/7*1/7*1/7*1/7

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/03/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 给内容打标签
  • 2. 建立词汇表
  • 3. 内容向量化
  • 4. 计算
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档