用Python做数据商品情感分析(商品评论数据情感分析)
现在,我们得到了一些关于XX商品的评论信息的数据,我们需要对这些评论信息的数据进行情感分析;
分析步骤
- 机械压缩去词
- 短句过滤
- 情感分析
- 分词处理(jieba分词)
- 去除停用词
- LDA主题分析
具体过程
环境:Python3.6 + pandas0.24.2
以下文档中使用的文件可在网盘中下载:
comment.csv
链接:https://pan.baidu.com/s/1Q0kBcHRZEzHvYaZvzepYAQ 提取码:cbgh;
stoplist.txt
链接:https://pan.baidu.com/s/1RDs1B7fOJzKWRjB0FBBCxQ 提取码:e3f5;
首先读取数据
我的数据文件是在同级目录中
import pandas as pd
data_path = './comment.csv'
df = pd.read_csv(data_path, encoding='gbk')
之后,会获得一个变量名为df
的DataFrame(Pandas中的一种数据结构);
现在,我们可以先打印一下原始数据信息
;
print('原始数据信息:')
print(len(df)) # 长度
print(type(df)) # 数据类型
原始数据信息:
721
<class 'pandas.core.frame.DataFrame'>
------------------
清除缺失数据
因为我们的数据中可能存在一些缺失值,我们需要清除一下这些缺失值;
运行以下代码:
df = df.dropna() # 消除缺失数据 NaN为缺失数据
print('清除缺失数据后:')
print(len(df))
print(type(df))
print('------------------')
清除缺失数据后:
721
<class 'pandas.core.frame.DataFrame'>
------------------
数据去重
数据中可能存在一些重复的数据,我们需要去除重复数据;
运行以下代码:
df = pd.DataFrame(df.iloc[:, 0].unique()) # 去掉第一列的重复数据;iloc[:, 0]表示索引每一行的第一列;
print('去重数据后:')
print(len(df))
print('------------------')
去重数据后:
537
------------------
我们发现数据集中有多条重复数据已经被我们清除掉;
现在,我们已经得到一些有效数据;
定义机械压缩去词函数
评论信息中,有一些评论是这样的:“我喜欢喜欢喜欢喜欢喜欢喜欢喜欢这个手机!”;
我们需要对这样的内容进行去除重复字符,我们定义这样一个函数;
def str_unique(raw_str, reverse=False):
"""
比如:我喜欢喜欢喜欢喜欢喜欢喜欢该商品;去掉重复的“喜欢”
:param raw_str:
:param reverse: 是否转置
:return:
"""
if reverse:
raw_str = raw_str[::-1]
res_str = ''
for i in raw_str:
if i not in res_str:
res_str += i
if reverse:
res_str = res_str[::