语义分析之情感分析

纸上得来终觉浅,一直苦于没有小项目来看看锻炼下自己,相信很多初学编程的同学也一样,那就是不知道自己到底学的怎么样,而且也觉得没有一个实际的项目来帮助提高自己的实际动手能力,理论总是美好的,在实际的项目中会碰到这样那样的小问题,而且每一个问题都不是书上全部讲到的,就比如我将记录下来的,流程似乎很简单,但是实际操作起来却有很多的小问题,比如说文件的打开以及格式问题啊,数据的输出显示不出来字符啊,等等小问题的一步一步的解决,解决问题是一件很专注很认真的事情,也是一件有意思的事情。
很高兴这次有这样的机会,这次是一位同学,他需要对上前条评论,每个评论打分,来看看正负面情绪的比重,流程很简单:1:首先是平台从网上爬取这上千条评论,2:对这上千条评论做出出来,整合在一个文件中,3:对文件里面的每一条评论打分,然后吧每条评论的分数与评论结合在一起,一一对应起来。然后保存在文件中
流程很简单,但是操作起来小问题不断,以下是做情感分析的相关代码:
这一部分是对评论的处理:

import pandas as pd

inputfile = r'D:\数据分析实战\原始数据\JD_data.xlsx'
outputfile = r'D:\数据分析实战\原始数据\comment1.txt'

data = pd.read_excel(inputfile)
data = data[u'评论内容']
pd.set_option('display.width', 1000,  'max_colwidth',500,'max_rows',1000) 
# 设置字符显示宽度及最大行数,可以参考pandas官方文档
#一开始对于文件的处理,输出的字符大概只有50个字左右,而且上千条评论是是显示不全的,所以中间是以省略号输出的
#这里就是使之全部一字不落的输出到文档中。
f = open(outputfile, 'w',encoding='utf-8')
#最后一个是设置的字体的样式,格式是个很大问题,有些格式是无法显示的,所以单独的文件格式的处理显得较为麻烦,这里#再文件打开的时候就对其进行文件格式的选择,这样就可以避免一些相关问题。
f.write(str(data)) #要以字符串的形式把评论写入txt中
f.close()

#下面是对每一条评论输出相应的情感分析结果
#这里用的Bosonnlp包,其官方文档有详细的解释,用法上面已经介绍的很详细了。

from __future__ import print_function, unicode_literals
import json
import requests
outputfile = 'D:\数据分析实战\原始数据\emotion_analysis.txt'
HEADERS = {'X-Token': 'WIVbbNqJ.24834.jhOxYg7JLa8B'}
SENTIMENT_URL = 'http://api.bosonnlp.com/sentiment/analysis'
file = open(outputfile, "ab")
with open('D:\数据分析实战\原始数据\comment1.txt', 'rb') as f:
    docs= [line.decode('utf-8') for line in f if line]
    #这里已经可以独处按数值标记的评论了。
 
for i in range(0, 3, 1):#这里修改数值可以随意生成
    data = json.dumps(docs[i])
    response = []
    response.append(requests.post(SENTIMENT_URL, headers=HEADERS,
                            data=data.encode('utf-8')))
    #先建一个空的list再把生成的数据对应的加入到这个list里面
    #再把这个list数据跟data一一对应的加入到字典里面。
    response_with_data=dict(zip(response, data))
    #zip是将data与response生成一一对应的元组,再结合成一个列表,这里对于zip函数的处理也是一个需要注意的地方。
    #强制转化成了字典
    for each in response_with_data:
        for ec in each:
            file.write(ec)#这里将情感分析数据写入文件中
            print(ec)#你也可以根据这个输出结果copy
f.close()
#我的初衷是想输出一个结合评论及分数一起的文档,但是挺起来很容易的事情,实现起来困难还是不晓得,如果哪位大神有想法,可以在下面附上自己的代码,十分感谢,不吝赐教。

希望可以好好习得cs。

你可能感兴趣的:(pytho)