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


# 筛选rating_env、rating_flavor、rating_service评分为3分以下 , rating评分为3分及以上的数据data1 = known_rating[(known_rating['rating_env'] < 3) & (known_rating['rating_flavor'] < 3)& (known_rating['rating_service'] < 3) & (known_rating['rating'] >= 4)]
# 筛选rating_env、rating_flavor、rating_service评分为3分以上 , rating评分为3分以下的数据data2 = known_rating[(known_rating['rating_env'] >= 3) & (known_rating['rating_flavor'] >= 3)& (known_rating['rating_service'] >= 3) & (known_rating['rating'] < 4)]
所以对于列异常值和异常值本文采取的处理方法是对所有维度的评分进行加权 , 并将其作为综合评分使用 。这样可以更准确地反映顾客的整体评价 , 避免过于依赖单个维度(例如总评分)而导致评估不准确或误导 。
权值的设置是自定义的 , 该赋权过程可以用公式表示如下:
=0.4×+0.2×+0.2×+0.2×
其中表示计算出的综合评分 , 其为0-5的数值 。

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

文章插图
利用综合评分的分值可以划分评论数据为好评数据和差评数据 , 设置值为[0,3]的评论为差评 , 值为[4,5]的评论为好评 , 将结果保存到列 , 其中“1”代表好评 , “0”代表差评 。
# 计算总的得分rating_2data['rating_2'] = data['rating_env']*0.2 + data['rating_flavor']*0.2 + data['rating_service']*0.2 + data['rating']*0.4# 划分好评和差评data['evaluation'] = data['rating_2'].apply(lambda x: 0 if x < 4 else 1)
1.4 短句及特殊字符删除
评论字段中字符长度较小的数据 , 利用价值小 。将评论文本中字符长度小于10的数据删除 。
data = http://www.kingceram.com/post/data[data['comment'].apply(len)>= 10]
还有一些特殊字符如英文、数字、表情符号、字符串等 , 对于特殊字符采用正则表达式re进行剔除 , 这个在去停用词部分处理 。
1.5 中文分词、去停用词
中文文本与英文文本之间的差别很大 , 在中文表达中没有作为分隔符的空格出现 , 同时具体的汉字表达的意思也是极不明确的 , 单个词语更不能十分准确地表达意思 。因此需要先对文本进行分词操作 , 然后对分词后的结果逐一进行表示 。本文使用的是jieba分词技术来进行中文文本分词 。
文本在经过分词之后存在很多像“的”、“了”、“吧”、“啊”、“这”等一些无实际意义的语气词、代词、介词等 , 还有标点符号、特殊符号等都称为停用词 。这类词不仅会提升模型的复杂性还会影响分类效果 , 所以需要过滤这些无意义的词 , 从而减少文本的噪音 , 增大关键词密度 , 提高文本分类的准确率和主题分析的效率 。
基于前人的研究成果 , 本文搜集了一些停用词典 , 主要包括哈工大停用词典、百度停用词典、四川大学机器智能实验室停用词库以及中文停用词表 , 将它们合并去重最后得到包含 1893个停用词的停用词典 。
值得注意的是 , 由于本研究的数据量过大 , 在分词过程中将数据集划分为10个批次 , 对每个批次都进行了去停用词的处理 , 将结果依次保存为文件 , 最后将10个文件合并 。