snownlp对天猫商品评论数据进行情感分析(附源码)

snowNLP介绍

SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。

以上是官方对snownlp的描述,简单地说,snownlp是一个中文的自然语言处理的Python库,支持的中文自然语言操作包括:

  • 中文分词
  • 词性标注
  • 情感分析
  • 文本分类
  • 转换成拼音
  • 繁体转简体
  • 提取文本关键词
  • 提取文本摘要
  • tf,idf
  • Tokenization
  • 文本相似

在本文中,我们将用实例重点介绍snownlp中的情感分析(Sentiment Analysis)的用法。

1.文本数据

这里我使用的是我之前爬取的天猫商品评论数据。爬取天猫商品评论的数据可以见我之前的一篇文章。(公众号:无知红,历史文章即可查看)

snownlp对天猫商品评论数据进行情感分析(附源码)_第1张图片

 对一部分文本进行了文本情感标注(手工标注),“1”——正面评价,“-1”——负面评价。

二、snownlp情感分析模块的使用

1.snownlp包的安装

直接在 cmd中执行以下代码。一如既往的简单。

pip install snownlp

2.导入情感分析模块

from snownlp import SnowNLP

from snownlp import sentiment

3.训练语料库

训练语料库,并保存在你指定的位置。”/neg.txt”文件是负面评价的文本集合,”/pos.txt”文件是正面面评价的文本集合。“sentiment.marshal”文件是你训练出来的模型文件。

sentiment.train('C:/.../Python/Python36-32/Lib/site-packages/snownlp/sentiment/neg.txt','C:/.../Python/Python36-32/Lib/site-packages/snownlp/sentiment/pos.txt')
sentiment.save('C:/.../Python/Python36-32/Lib/site-packages/snownlp/sentiment/sentiment.marshal')

4.情感分析

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

data1=[]
data2=[]
with open('content.csv')as f:
    f_csv = csv.reader(f)
    count = 0
    for row in f_csv:
        count = count + 1
        s = SnowNLP(row[0])
        print(count,":",s.sentiments)
        if s.sentiments>=0.5:
            data2.append('1')
            print("1")
        else:
            data2.append('-1')
        data1.append(row[1])

5.统计正确率,进行结果验证

rightP = wrongP = 0
for i in range(0,len(data1)):
    if data1[i]==data2[i]:
        rightP = rightP + 1
    else:
        wrongP = wrongP + 1

print("正确率为:", float(rightP)/float(len(data1)))

6.最终的结果

最终的正确率为0.859,还过的去。一般需要调整参数,或者语料库来提升准确率。

遇到的坑和解决方法

1.编码问题。snownlp只能读写utf-8编码方式的txt文件,如果文本数据不是utf-8编码,需要先转换编码,否则会报错。

2.语料库。自带的语料库有点坑,准确率很低,刚开始试了下 ,只有0.6左右,基本上就是瞎猜的水平。根本不适合做商品评论的情感分析。所以,尽量自己构建一个语料库吧。

snownlp还有很多的功能和用法,都很强大,这里篇幅有限,只简单介绍一下情感分析模块。

获取源码

由于排版问题,这里就没放完整的代码了。想要获取完整源代码:

关注微信公众号“无知红”,后台回复  “ snownlp  ” ,即可获取下载地址

 

你可能感兴趣的:(人工智能,情感分析,评论)