专栏首页机器学习AI算法工程机器学习实战,使用朴素贝叶斯来做情感分析

机器学习实战,使用朴素贝叶斯来做情感分析

前段时间更新了一系列基础的机器学习算法,感觉有些无味,而且恰好那时买了了国内某公司的云服务器,就打算部署一套文本处理的WEB API,顺别应用一下之前学习到的机器学习算法。(文末放出地址)

本文不会涉及过于复杂的数学原理,主要讲述如何提取特征与调用模型。

实现了的api

  • 分词 访问/cut?sentence=&method=,其中sentence参数指明需要分词的句子,method参数指明分词的方式。
  • 统计词频 访问/count?sentence=&=method=,其中的参数说明和分词的api一致。
  • 情感分析 访问/count?sentence=,因为目前是针对句子的,因此sentence的范围限制了在1~200词之间。

本文重点讲述情感分析的实现。

情感分析的实现

情感分析的应用是多种多样的,往大了说,可以用于国家对某个热点进行舆情监控,选举的选情分析,电商对产品的售后意向调查,往小了说还可以写一个脚本对你女神的微博进行关心,在女神不开心的时候及时送上关心。

至于情感分析的实现,在学术论文上均有提及,大致过程都可以分为提取情感极性词,将语句转化为向量,扔进你训练好的模型里

在这里我们针对实际情况做出一定的修改,提取情感极性词,必然是需要词典来参考的,虽然各大语言机构都有公开的词典,,但并不建议使用这些词典。其中一个原因是因为这些公开的词典太过书面化,和“礼貌”,不太接近日常生活。因此这这里我采用的是自定义词典,另外一点是,在提取关键词部分不仅仅是提取情感相关的词语,同时也使用其他日常用语,比如草泥马,虽然不像开心,伤心这样的情感极性词,但草泥马显然具有明确的情感偏向。

值得说明的是,我们既然在提取特征词的时候考虑到平常的词语,同样也就意味这一些乱七八糟的词语会混进来,所以我们在提取完特征词后,同时计算它们的词频,只取频率排名的前20%,(当然这个数字可以根据自己需要调整)。

挑选的出来的特征词就构成了[word1,word2,word3……],同时检测训练样本,若样本中出现了特征词,则该样本的特征向量对应位置置1,否则为0。

构成特征向量后,我选取的算法是朴素贝叶斯,关于其原理,可以查看

分类算法之朴素贝叶斯分类(Naive Bayesian classification)

至于为什么选取朴素贝叶斯,很大一个原因是因为朴素贝叶斯在垃圾邮件分类上有不错的效果,而确定一个句子属于那种情感,和判断一封邮件是否为垃圾邮件有异曲同工之妙。

在sklearn中,只要添加如下代码即可。

from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb = gnb.fit(feature, label)
result = gnb.predice(test)

上述api中涉及的分词操作均是使用 结巴分词 完成。

测试效果

下面测试用例又黄又暴力,未成年观众在家长的陪同下观看。

开源代码

https://github.com/MashiMaroLjc/dudulu

本文分享自微信公众号 - 大数据挖掘DT数据分析(datadw)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 通俗的将Xgboost的原理讲明白

    初看Xgboost,翻了多篇博客发现关于xgboost原理的描述实在难以忍受,缺乏逻辑性,写一篇供讨论。 观其大略,而后深入细节,一开始扎进公式反正我是觉得效...

    机器学习AI算法工程
  • Python 文本挖掘:使用情感词典进行情感分析(算法及程序设计)

    情感分析就是分析一句话说得是很主观还是客观描述,分析这句话表达的是积极的情绪还是消极的情绪。 原理 比如这么一句话:“这手机的画面极好,操作也比较流畅。不过拍照...

    机器学习AI算法工程
  • 基于微软案例数据库数据挖掘知识点总结(结果预测篇)

    前言 本篇文章主要是继续前几篇Microsoft决策树分析算法、Microsoft聚类分析算法、Microsoft Naive Bayes 算法,算法介绍后,经...

    机器学习AI算法工程
  • 分析 | 中美意见领袖对中美贸易战的观点态度,大数据告诉你

    前言 目前,中美贸易战逐步升级,这一事件引发了国际社交媒体的热烈讨论。美国政界意见领袖群体在中美贸易战中究竟关心什么?中国社交媒体意见领袖的核心关注哪些领域?在...

    灯塔大数据
  • Python——关于排序算法(冒泡法)

    前一阵发的一篇《关于多线程的应用》,本来要去某站爬取几个T的资源,爬了几百G以后重感冒,就休息了一周。未料再次开动时,网站已然设置了反爬机制

    Ed_Frey
  • 情感计算:让机器更加智能

    在人们的认知中,机器与人的分界线是机器是否具有情感。举个例子,如果一对情侣吵架,而有一方显得过于冷漠,那么另一方很有可能向对方说出类似于「你是一个没有情感的机器...

    机器之心
  • 如何获取接口返回数据

    在自动化测试中常常遇到接口测试,或是使用的数据需要从接口返回,那么如何来实现这种情况?

    Peter Shen
  • SAP错误消息调试之七种武器:让所有的错误消息都能被定位

    Jerry在2018年开始用中文在微信公众号平台上写作之前,在SAP官方社区上总共写了639篇英文博客。

    Jerry Wang
  • ASP.NET Core on K8S深入学习(10)K8S包管理器Helm

    本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。

    Edison Zhou
  • 多因子模型之因子(信号)测试平台----因子值的处理(二)

            我们知道,一个因子值的处理大致分为三个步骤,去极值、标准化、中性化,上次我们对因子值进行了去极值和标准化,这一次,我们主要讲一讲中性化,也就是n...

    钱塘小甲子

扫码关注云+社区

领取腾讯云代金券