python 情感分析 jieba

https://blog.csdn.net/liangyingyi1006/article/details/79303334

import pandas as pd
import numpy as np
import jieba
import warnings

warnings.filterwarnings(action=‘ignore’, category=UserWarning, module=‘gensim’)
outputfile=r’F:\数据分析与模型\毕业论文\代码\data\review_uniqe.txt’
data=pd.read_excel(‘F:\数据分析与模型\毕业论文\斯凯奇5、6个店铺评论(仅评论).xlsx’,header=None)#header=None的作用是在导入时不让第一行文本成为列索引,在导出时的作用是CSV文件里不包含列索引字段(如0,1,2,3等)
data=pd.DataFrame(data)

#文本去重
data=pd.DataFrame(data[0].unique())
data.to_csv(outputfile,index=False,header=None,encoding=‘UTF-8’)

#数据重新导入
data=pd.read_csv(outputfile, encoding = ‘utf-8’, header = None)

#分词
mycut = lambda s: ’ '.join(jieba.cut(s)) #自定义简单分词函数,以空格分词
data1=data[0].apply(mycut)
#因为无列名,只有0、1这样的列索引,所以dataframe直接调用data[0]
#data格式为Dataframe([35634 rows x 1 columns]),data[0]格式为Series(Name: 0, dtype: object,第一行评论index为0),data1为分词后的一个series,data1[0]取第一行

#去除停用词
stoplist=‘F:\数据分析与模型\毕业论文\代码\stoplist.txt’
stop = pd.read_csv(stoplist, encoding = ‘utf-8’, engine=‘python’,header = None, sep = ‘tipdm’)
#sep设置分割词,由于csv默认以半角逗号为分割词,而该词恰好在停用词表中,因此会导致读取出错
#所以解决办法是手动设置一个不存在的分割词,如tipdm。
stop = [’ ‘, ‘’,’\n’] + list(stop[0])#Pandas自动过滤了空格符
data2=data1.apply(lambda s: s.split(’ ')) # 返回一个由空格分割的列表[‘商品’,‘很棒’,‘快递’,…]
data3=data2.apply(lambda x: [i for i in x if i not in stop])#x是指data2
#逐词判断是否停用词,思路同上
#上面这句代码的语法是:列表推导式子。意思是说,如果i不在停用词列表(stop)中,就保留该词语(也就是最前面的一个i),否则就进行删除
#上面的这句代码中,把for i in x看做整体,把if i not in stop看做判断语句,把最前面的i看做满足if语句之后的执行语句即可。
#data2为series,如何将多个series合并为dataframe

#去除字数<某阈值的评论
data4=[]#33533条
for i in data3:
a=’’.join(i)#转为字符串
b=len(a)
if b>=4 and a!=‘用户填写评论’ and a!=‘初次评论’:
data4.append(a)
data5=pd.DataFrame(data4)

#重新分词、去重
data6=data5[0].apply(mycut)#data5[0]为series
data6=pd.DataFrame(data6.unique())
data6.to_csv(‘F:\数据分析与模型\毕业论文\代码\data\data_process_last.txt’,header=None,index=False,encoding=‘UTF-8’)
————————————————
版权声明:本文为CSDN博主「liangyingyi1006」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liangyingyi1006/article/details/79303334

你可能感兴趣的:(python 情感分析 jieba)