昨晚上发现了snownlp这个库,很开心。

首先简单介绍一下这个库可以进行哪些文本挖掘。snownlp主要可以进行中文分词(算法是Character-Based Generative Model)、词性标注(原理是TnT、3-gram 隐马)、情感分析(官网木有介绍原理,但是指明购物类的评论的准确率较高,其实是因为它的语料库主要是购物方面的,可以自己构建相关领域语料库,替换原来的,准确率也挺不错的)、文本分类(原理是朴素贝叶斯)、转换拼音、繁体转简体、提取文本关键词(原理是TextRank)、提取摘要(原理是TextRank)、分割句子、文本相似(原理是BM25)。官网还有更多关于该库的介绍,在看我这个文章之前,建议先看一下官网,里面有最基础的一些命令的介绍。官网链接:https://pypi.python.org/pypi/snownlp/0.11.1。

下面正式介绍实例应用。主要是中文文本的情感分析,我今天从京东网站采集了249条关于笔记本的评论文本作为练习数据,由于我只是想练习一下,没采集更多。然后人工标注每条评论的情感正负性,情感正负性就是指该条评论代表了评论者的何种态度,是褒义还是贬义。以下是样例

其中-1表示贬义,1表示褒义。由于snownlp全部是unicode编码,所以要注意数据是否为unicode编码。因为是unicode编码,所以不需要去除中文文本里面含有的英文,因为都会被转码成统一的编码(补充一下,关于编码问题,我还是不特别清楚,所以这里不多讲,还请对这方面比较熟悉的伙伴多多指教)。软件本身默认的是Ascii编码,所以第一步先设置软件的默认编码为utf-8,代码如下:

1、改变软件默认编码

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

2、然后准备数据

import pandas as pd #加载pandas

text=pd.read_excel(u'F:/自然语言处理/评论文本.xlsx',header=0) #读取文本数据

text0=text.iloc[:,0] #提取所有数据

text1=[i.decode('utf-8') for i in text0] #上一步提取数据不是字符而是object,所以在这一步进行转码为字符

3、训练语料库

from snownlp import sentiment #加载情感分析模块

sentiment.train('E:/Anaconda2/Lib/site-packages/snownlp/sentiment/neg.txt', 'E:/Anaconda2/Lib/site-packages/snownlp/sentiment/pos.txt') #对语料库进行训练,把路径改成相应的位置。我这次练习并没有构建语料库,用了默认的,所以把路径写到了sentiment模块下。

sentiment.save('D:/pyscript/sentiment.marshal')#这一步是对上一步的训练结果进行保存,如果以后语料库没有改变,下次不用再进行训练,直接使用就可以了,所以一定要保存,保存位置可以自己决定,但是要把`snownlp/seg/__init__.py`里的`data_path`也改成你保存的位置,不然下次使用还是默认的。

4、进行预测

from snownlp import SnowNLP

senti=[SnowNLP(i).sentiments for i in text1] #遍历每条评论进行预测

5、进行验证准确率

预测结果为positive的概率,positive的概率大于等于0.6,我认为可以判断为积极情感,小于0.6的判断为消极情感。所以以下将概率大于等于0.6的评论标签赋为1,小于0.6的评论标签赋为-1,方便后面与实际标签进行比较。

newsenti=[]

for i in senti:

if (i>=0.6):

newsenti.append(1)

else:

newsenti.append(-1)

text['predict']=newsenti  #将新的预测标签增加为text的某一列,所以现在text的第0列为评论文本,第1列为实际标签,第2列为预测标签

counts=0

for j in range(len(text.iloc[:,0])): #遍历所有标签,将预测标签和实际标签进行比较,相同则判断正确。

if text.iloc[j,2]==text.iloc[j,1]:

counts+=1

print u"准确率为:%f"%(float(counts)/float(len(text)))#输出本次预测的准确率

运行结果为:

准确率还可以,但还不算高,原因是我考虑时间原因,并且我只是练习一下,所以没有自己构建该领域的语料库,如果构建了相关语料库,替换默认语料库,准确率会高很多。所以语料库是非常关键的,如果要正式进行文本挖掘,建议要构建自己的语料库。在没有构建新的语料库的情况下,这个83.9357%的准确率还是不错了。

以上是我这次的学习笔记,和大家分享一下,有不足之处请大家批评指正。我还是一个刚涉世数据挖掘、机器学习、文本挖掘领域不久的小白,有许多知识还是比较模糊,但对这数据挖掘很感兴趣。希望能多结识这方面的朋友,共同学习、共同进步。

snownlp 原理_使用snownlp进行情感分析相关推荐

  1. 使用snownlp对京东购物评论进行情感分析

    使用snownlp对京东购物评论进行情感分析 目的:利用snownlp包,对京东评论进行情感分析 涉及: mysql,snownlp,pandas等工具包 代码结构如下: 注意: jd_comment ...

  2. 基于snownlp及朴素贝叶斯的情感分析——以大众点评网评论为例

    「情感分析」是对带有感情色彩的主观性文本进行分析.处理.归纳和推理的过程.按照处理文本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析.其中,前者多用于舆情监控和信息预测,后者可帮助用 ...

  3. python爬取京东商品数据要先登录_京东商品评论情感分析|文本数据预处理

    本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意.所以对于文本 ...

  4. wordcloud里面设置mask加载不出来词频_一条龙搞定情感分析:文本预处理、加载词向量、搭建RNN

    IMDB Sentiment Classification from scratch Author: Beyond Time: 2019.04.26 情感分析是上手NLP的最简单的任务之一,它就是一个 ...

  5. rostcm6情感分析案例分析_电商评论情感分析

    并可以实现云图的可视化.7.2 R的实现这里需要安装几个必须包,因为有几个包安装比较复杂,这里给了链接http://blog.csdn.net/cl1143015 ... 82731大家可以参看这个博 ...

  6. 实体词典 情感词典_基于词典的情感分析——简单实例

    基于词典的情感分析方法非常容易被理解,主要利用情感词判断一句话或者一篇文章的情感倾向,下面的程序利用BosonNLP情感词典(从https://bosonnlp.com/dev/resource 下载 ...

  7. python 情感分析实例_基于Python的情感分析案例

    **情感分析 **又称为倾向性分析和意见挖掘 它是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程 其中情感分析还可以细分为情感极性 倾向 分析 情感程度分析 主客观分析等. 情感极性分析的 ...

  8. 基于SnowNLP的购物评论文本情感分析及准确率验证

    因论文涉及到SnowNLP情感分析的内容,于是对该内容进行了学习,但发现网上的资源发布更新不及时,大多数文章均发布于18年及以前.由于python版本的迭代,使得以往的资源代码有所出入,因此我对于Sn ...

  9. python微博评论情感分析_基于Python的微博情感分析系统设计

    2019 年第 6 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Python 的微博情感分析系统设计 王 欣 周文龙 (武汉工程大学邮电 ...

  10. python微博文本分析_基于Python的微博情感分析系统设计

    基于 Python 的微博情感分析系统设计 王欣 ; 周文龙 [期刊名称] < <信息与电脑> > [年 ( 卷 ), 期] 2019(000)006 [摘要] 微博是当今公众 ...

最新文章

  1. java服务写在哪里_JavaService
  2. UILocalNotification详解
  3. Jquery_JQuery之DataTables强大的表格解决方案
  4. jvm(6)-Class字节码文件结构总结
  5. 更改VS的运行主窗体
  6. 回溯应用-- 0-1背包问题
  7. 计组之数据运算:12、加法器设计
  8. MFC工程按USB插口显示所有USB设备及插口(包括安卓)
  9. Java设计模式透析之 —— 组合(Composite)
  10. POJ 1330 最近公共祖先LCA(Tarjan离线做法)
  11. displaytag.properties
  12. 【C语言】模块化编程-通俗易懂
  13. 区块链开发入门教程【加精】
  14. 图片实现裁剪功能vue-img-cutter
  15. 数学基础知识(公式)不用学太深,了解基本公式即可,遇到问题再查吧。
  16. 最新国产电源厂家及具体型号pin-to-pin替代手册发布
  17. 企业数字化转型--银行数字化转型的战略设计与技术管理
  18. 利用hive源码解析sql查了哪些表哪些字段
  19. [附源码]Python计算机毕业设计SSM基于Java的流浪动物救助系统(程序+LW)
  20. BCG界面库在VC工程中的应用步骤

热门文章

  1. 手机怎么修改浏览器的html,手机设置默认浏览器
  2. BIEE 11g去掉图形阴影
  3. 联想小新13pro锐龙版网卡_诠释极致性价比 联想小新Pro 13标压锐龙版笔记本评测...
  4. 〖Python 数据库开发实战 - MySQL篇⑤〗- 为大家推荐几款经典的数据库可视化工具
  5. 计算机原理实验交通灯自动控制系统设计,微机原理交通灯控制系统设计实验..doc...
  6. 计算机算力英语怎么说,MIT警告深度学习正逼近算力极限,突破瓶颈会让人类成为上帝?...
  7. 像中文的罗马音字体复制_罗马音字体复制下载
  8. 解决可视化界面的时候灰屏【已解决】
  9. python实现定位附近的_c#教程之使用GPS经纬度定位附近地点(某一点范围
  10. git2.23.0下载git2.25.0下载git2.27.0下载百度云