<div id="js_content">
<p>朴素贝叶斯分类最适合的场景就是文本分类了,无论是情感分析还是文档分类及垃圾邮件识别,都是朴素贝叶斯最为擅长的地方,其也成为了自然语言处理 NLP 方向的重要工具。<br></p>
<h3>文本到向量</h3>
<p>既然说到了 NLP,那么就不得不提及从文本到向量的转换。我们都知道,计算机是比较擅长处理数字类型的数据的,而对于字符类型数据往往都需要转换成数字类型,再进行相关运算。在自然语言处理领域同样如此,拿到文本后,我们需要先把文本转化成向量,然后再做处理。</p>
<p>为现在较为流行的文本转向量的方式有两种,词袋和词频逆文档。在应用这两种方式的时候,都是需要有一个词典库的。这个就相当于,如果你想分析金融领域的文本,那么这个词典库中包含的单词就应该是与金融相关的;如果你想分析教育领域的文本,那么词典库应该是与教育相关的。</p>
<p>为了方便起见,我这里设置一个简单的词典库如下</p>
<p>词典库 [“我们”,“跑步”,“早饭”,“吃”,"去","出发","早上"]</p>
<h2>词袋模型</h2>
<p>词袋模型又可以理解为 count vector,就是查看词典库中的词语出现在文本中的次数,出现几次就标注为数字几</p>
<p>文本1:早上去跑步</p>
<p>文本2:我们吃早饭去跑步</p>
<p>文本3:我们出发吃早饭我们跑步</p>
<p>首先把三个文件进行单词分割,可以表示成如下形式:</p>
<p>文本1:早上|去|跑步</p>
<p>文本2:我们|吃|早饭|去|跑步</p>
<p>文本3:我们|出发|吃|早饭|我们|跑步</p>
<p>下面就可以查看各个文本中出现词库里单词的数量了</p>
<p>文本1:</p>
<blockquote>
<p>早上去跑步<br>(0,1,0,0,1,0,1)</p>
</blockquote>
<p>文本2:</p>
<blockquote>
<p>我们吃早饭去跑步<br>(1,1,1,1,1,0,,0)</p>
</blockquote>
<p>文本3:</p>
<blockquote>
<p>我们出发吃早饭我们跑步<br>(2,1,1,1,0,1,0)</p>
</blockquote>
<p>至此,通过词袋模型,我们已经成功的将一个文本,转换成了向量的形式。</p>
<p>当然也可以看到词袋模型的缺点,它抛弃了文档中的前后逻辑,语义结构等信息,仅仅以词语出现的次数作为评判标准。</p>
<p>正是为了解决这一缺点,又出现了词频逆文档模型(TF-IDF)</p>
<h2>词频逆文档</h2>
<p>词频逆文档又称为 TF-IDF,TF 就是词频的意思,为 IDF 则为逆向文档频率的意思。</p>
<p>TF:计算一个单词在文档中出现的频次</p>
<p>IDF:指一个单词在文档中的区分度,该模型认为一个单词出现的文档数越少,则越能够通过该单词区分不同的文档,IDF 越大就代表单词的区分度越高。</p>
<p>计算方式:</p>
<p>TF = 单词出现的次数/该文档的总单词数</p>
<p>IDF = log(文档总数/该单词出现的文档数+1)</p>
<p>TF-IDF = TF * IDF</p>
<p>这样你应该可以看出,一些出现频率很高的指向词,比如你我他等,虽然 TF 会很高,但是 IDF 的值会很低,所以它们的 TF-IDF 值也不高。而我们通过经验也可以知道,通过你我他这些词是很难区分不同文档的,即它们的重要性比较低。</p>
<h3>情感分析</h3>
<p>本节所有的数据集到保存在 GitHub 上</p>
<blockquote>
<p>https://github.com/zhouwei713/DataAnalyse/tree/master/Naive_Bayes</p>
</blockquote>
<p>下面我们就开始进入今天的实战部分,首先来看一个例子,根据用户评论,分析是正向评论还是负向评论。</p>
<p>我们先来看下语料库</p>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-dc239001d5f475f3f101ebb0a4d31191"></p>
<p>分别是停用词,测试数据集,训练数据集(负向评论和正向评论)</p>
<p>停用词:在文本分析领域,一般都会把一些经常出现的但是又没有实际意思或者不影响语义的词语去除掉,就是停用词</p>
<p>测试数据集:我们看下它长什么样子</p>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-aeb9f7c954005711218c7b525681b76e"></p>
<p>在标签中的就是测试数据,而 label 则表示该评论的正负向,能够看出1是正向的,0是负向的。</p>
<p>训练集:</p>
<p style="text-align: center"><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-ec1e7ee9c5d814e3cb0f71e64314661a"></p>
<p>数据格式也是类似的,文本保存在标签当中。</p>
<h2>提取文本</h2>
<p>我们首先要做的就是对语料库做处理,提取出我们需要的文本内容</p>
<p>我们先处理测 |
|