【基于机器学习的餐馆评论文本分类分析】

餐馆评论的文本分析2 描述性统计分析 3 特征工程 4 模型与预测 5 总结6 参考文献
0 引言
本文利用语言 , 对餐馆的大众点评评论文本进行分析 。首先 , 通过数据清洗、中文分词以及特征工程完成数据的预处理 。对完成预处理的数据作了描述统计说明 。
其次 , 构建了逻辑回归、支持向量机和朴素贝叶斯三个分类器模型 , 计算召回率、精确度、F1和准确率等指标来评价它们的实际性能 。逻辑回归模型表现最好 , 准确率为85% , 可以用于实现对餐馆评论文本的精确分类 。
最后 , 基于处理好的数据利用关键字查询餐馆的名称 , 并通过可视化手段展示某个餐馆的评论、好评/差评比例、环境评分、口味评分、服务评分以及随时间变化的好评/差评线图等指标 。
1 数据预处理 1.1 数据集描述
本文研究使用的餐馆大众点评评论文本包含3个数据集:.csv、.csv、links.csv 。数据集字段信息及部分示例数据如表1-3 。
数据集包含 条餐馆数据
餐馆数目(有名称):
餐馆数目(没有名称):34115
餐馆数目(总计):
数据集包含 条评论数据、个用户
用户数目:
评分/评论数目(总计):
总体评分数目([1,5]):
环境评分数目([1,5]):
口味评分数目([1,5]):
服务评分数目([1,5]):
评论数目:
links数据集包含条数据
1.2 缺失值处理
对缺失值的处理主要是删除数据中的空值 。
查看数据集的缺失值 。
print(restaurants.isnull().sum(axis=0))
数据集name列有34115条缺失值 。因为后文有可视化分析 , 没有餐馆名称的数据直接删掉 。
查看数据集的数据集
print(ratings.isnull().sum(axis=0))
数据集总共条数据
评分有条缺失值
环境评分有条缺失值
口味评分有缺失值
服务评分有条缺失值
评论内容有条缺失值
首先删除数据集中餐馆名称为nan的 , 对应的数据集数据 。然后再删除评论内容中的缺失值 。
# 删除餐馆名称为nan的restId , 对应的ratings数据 , 要删除的id→id_with_missing_values# 根据id删除行data = http://www.kingceram.com/post/ratings.set_index('restId').drop(id_with_missing_values).reset_index()# 删除评论内容为nan的值data.dropna(axis=0, subset='comment', inplace=True)
处理完之后再查看数据集的缺失值 。
处理之后发现、、均有55个缺失值 , 对缺失值进行具体探查 。
# 查看rating_env列有缺失值的行null_rating_env = data[data['rating_env'].isna()]print(null_rating_env)
从图中可以看出、、是一起缺失的 , 所以直接删掉就好了 。
然后列还存在条缺失值 , 因为缺失值占据数据集的1/4 , 所以不能直接删除 , 初步的想法是对列进行填充 。
因为数据量太大了 , 对于我个人的电脑来说要运行很久 , 所以直接删除好了 。
1.3 异常值处理
同时呢我们观察到在数据集中存在环境、口味、服务的评分与总评分不符合的情况 , 例如对环境、口味、服务评分只有1-2分 , 但是总评分却是4分及以上 。可能是因为该餐馆在其他方面得到了更高的评价 , 例如价格、装修或者地理位置等 。这些低分的评价可能是由于个别顾客对某些方面的不满意而导致的 , 不能完全反映该餐厅的整体评价 , 或者是某些用户的评分标准与其他用户存在很大差异 , 导致他们给的评分与整体评分相差较大 。会影响对评论文本的情感分析 , 需要进行处理 。