竞赛项目 酒店评价的情感倾向分析

news2024/11/25 11:27:38

前言

🔥 优质竞赛项目系列,今天要分享的是

酒店评价的情感倾向分析

该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

概述

本文基于7K条携程酒店评价数据为文本数据,将其导入到Keras的模型架构然后进行训练出一个可用于实际场所预测情感的模型。

项目所需模块

import tensorflow as tf  
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow.keras as keras
 # 导入jieba分词库
import jieba 
import re

数据

数据说明

7000多条携程酒店评论数据,5000多条正向评论,2000多条负向评论。

字段说明
  • 评论数目(总体):7766
  • 评论数目(正向):5322
  • 评论数目(负向):2444

在这里插入图片描述

数据处理

# 读取数据
data = pd.read_csv("/home/kesci/input/labelreview5456/ChnSentiCorp_htl_all.csv")
# 查看数据的前5项
data.head()

在这里插入图片描述

分词处理

# 去除标点符号和数字
# 要去除标点符号和数字,常用的办法就是使用正则表达式来处理,或者自行编写遍历替换函数

# 模式串
patten = r"[!\"#$%&'()*+,-./:;<=>?@[\\\]^_`{|}~—!,。?·¥、《》···【】:" "''\s0-9]+"  
re_obj = re.compile(patten)

# 替换函数--去除标点符号和数字
def clear(text):
    return re_obj.sub('', text)

# 将正则表达式替换函数应用于每一行
data["review"] = data["review"].apply(clear)
# 查看前5行替换结果

data["review"][:5]

在这里插入图片描述

采用精简处理,启用HMM(隐式马尔科夫网络)处理

def cut_words(words):
    return jieba.lcut(words) # 使用lcut分词

#apply函数对series的每一行数据进行处理
data["review"] = data["review"].apply(cut_words)
data["review"][:5]

在这里插入图片描述

停用词处理



    # 使用 中文停用词表 
    stop_words = "/home/kesci/work/stopwords-master/stopwords.txt"
    stop_list = [
        i.strip() for i in open(stop_words, encoding='utf-8').readlines()
    ]  #读取停用词列表


    def remove_stop(words):  #移除停用词函数
        texts = []
    
        for word in words:  # 遍历词列表里的每一个词
            if word not in stop_list:  # 若不在停用词列表中就将结果追加至texts列表中
                texts.append(word)
    
        return texts


    data['review'] = data['review'].apply(remove_stop)
    # 查看前5行
    data["review"][:5]



在这里插入图片描述

样本均衡

data["label"].value_counts().plot(kind = 'bar')
plt.text(0, 6000, str(data["label"].value_counts()[1]),
        ha = 'center', va = 'top')
plt.text(1, 3000, str(data["label"].value_counts()[0]),
        ha = 'center', va = 'top')
plt.ylim(0, 6500)
plt.title('正负样本的个数')
plt.show()

在这里插入图片描述

从柱状图可以看出,该数据集共7766条数据,其中正样本(label = 1)共有5322条,负样本(label = 0)共有2444条,没有重复数据

显然样本存在严重的不均衡问题,这里考虑两种样本均衡的策略
(1)欠采样,正负样本各2000条,一共4000条
(2)过采样,正负样本各3000条,一共6000条

为减少计算量和对比两种均衡策略的效果,这里采用先把整体数据进行处理,再做样本均衡采样

def get_balanced_words(size,
                       positive_comment=data[data['label'] == 1],
                       negtive_comment=data[data['label'] == 0]):
    word_size = size // 2
    #获取正负评论数
    num_pos = positive_comment.shape[0]
    num_neg = negtive_comment.shape[0]
    #     当 正(负)品论数中<采样数量/2 时,进行上采样,否则都是下采样;
    #     其中pandas的sample方法里的repalce参数代表是否进行上采样,默认不进行
    balanced_words = pd.concat([
        positive_comment.sample(word_size,
                                replace=num_pos < word_size,
                                random_state=0),
        negtive_comment.sample(word_size,
                               replace=num_neg < word_size,
                               random_state=0)
    ])
    #     打印样本个数
    print('样本总数:', balanced_words.shape[0])
    print('正样本数:', balanced_words[data['label'] == 1].shape[0])
    print('负样本数:', balanced_words[data['label'] == 0].shape[0])
    print('')
    return balanced_words
建立多层感知机分类模型

在这里插入图片描述
可以看到共有四层:平坦层共有1600个神经元,平坦层在这里可以看作为输入层。隐藏层共有256个神经;输出层只有1个神经元。全部必须训练的超参数有474113个,通常超参数数值越大,代表此模型越复杂,需要更多时间进行训练。

训练模型

在这里插入图片描述

网络检测率以及检测结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


    input_text = """
    去之前会有担心,因为疫情,专门打了电话给前台,前台小哥哥好评,耐心回答,打消了我的顾虑,nice!! 
    看得出有做好防疫情清洁消毒工作,前台登记反复询问,确保出行轨迹安全,体温测量登记,入住好评,选了主题房,设计是我喜欢的.
    总之下次有需要还是会自住或推荐!!
    """
    
    predict_review(input_text)
 

    result : 正面评价!

至此,对携程酒店评价的情感倾向分析,以建立一个简单的多层感知器模型结束,由于文章所限,后续的模型优化以及与其他深度学习的模型的比较就不进行简述,有兴趣的同学可以留意学长后续文章。谢谢各位同学!

最后

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/865479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL--->环境配置】

文章目录 [TOC](文章目录) 一、卸载已存在数据库软件二、获取yum源并安装三、启动并登录四、文件配置五、链接服务器选项 一、卸载已存在数据库软件 用ps -axj |grep miadb或者ps -axj |grep mysql查询是否存在这两个启动的应用程序,如果有就将其关闭,以mysql为例:systemctl s…

史上最强,Jenkins插件实现多个Job并行后再触发Job详细,一篇贯通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在利用Jenkins来自…

linux安装wkhtmltopdf(清晰明了)

概述 在公司项目中使用到 wkhtmltopdf 转换PDF&#xff0c;由于 wkhtmltox-0.12.5 版本 echarts 图形虚线样式&#xff0c;需要升级 wkhtmltox-0.12.6 版本来解决。 官网地址 wkhtmltopdf &#xff1a;https://wkhtmltopdf.org/ windows 安装 下载流程及安装流程 进入官…

Redis—集群

目录标题 主从复制第一次同步命令传播分担主服务器压力增量复制总结面试题什么是Redis主从复制Redis主从复制的原理Redis主从复制的优点Redis主从复制的缺点Redis主从复制的配置步骤Redis主从复制的同步策略主从节点是长还是短连接判断某个节点是否正常工作主从复制架构中&…

linux学习(地址空间)[7]

地址空间 在子进程中修改变量值&#xff0c;不会和父进程同步&#xff0c;但是地址空间相同&#xff08;此地址不是物理内存的地址&#xff09;&#xff08;而是虚拟地址–线性地址&#xff09; 几乎所有的语言&#xff0c;如果有地址的概念&#xff0c;这个地址一定是虚拟地…

Android 百度地图 bitmap 透明图片背景变黑色

现象&#xff1a; 本来透明背景的png图片渲染出来时黑色的了 原因&#xff1a; 为了节省内存资源对图片进行了压缩&#xff0c;使用到了 bitmap.compress(Bitmap.CompressFormat format, int quality, OutputStream stream)方法&#xff0c;具体设置为 bitmap.compress(Bit…

Prometheus入门

Prometheus(普罗米修斯) 是一种 新型监控告警工具,Kubernetes 的流行带动了 Prometheus 的应用。 全文参考自 prometheus 学习笔记(1)-mac 单机版环境搭建[1] Mac 上安装 Prometheus brew install prometheus 安装路径在 /usr/local/Cellar/prometheus/2.20.1, 配置文件在 /usr…

个保新标 | 《信息安全技术 敏感个人信息处理安全要求》(征求意见稿)发布

8 月 9 日&#xff0c;全国信息安全标准化技术委员会公开发布关于国家标准《信息安全技术 敏感个人信息处理安全要求》&#xff08;征求意见稿&#xff09;&#xff08;以下简称《标准》&#xff09;的通知&#xff0c;面向社会广泛征求意见。 《标准》的制定背景是为支撑《个人…

【React学习】—类式组件(六)

【React学习】—类式组件&#xff08;六&#xff09; <script type"text/babel">//创建类式组件class MyComponent extends React.Component{render() {// render是放在哪里的&#xff1f;MyComponent的原型对象上&#xff0c;供实例使用// render中的this是谁…

三大方法助你轻松消除内存卡中的病毒,告别烦恼

在数字化时代&#xff0c;内存卡成为了我们存储重要数据的关键设备之一。然而&#xff0c;恶意病毒的存在可能威胁到我们的数据和隐私。所幸的是&#xff0c;我们可以采取一些方法来清理内存卡中的病毒。在本文中&#xff0c;我们将为你介绍三招&#xff0c;让你轻松去除内存卡…

8月10日计算机考研信息差

距24考研初试还有134 天。 8月关注&#xff1a;科目调整、招生宣讲、推荐免试 下一关键节点&#xff1a;预报名(预计2023年09月24日-09月27日) 计算机考研最新资讯&#xff1a; 1、哈尔滨工业大学(威海)发布24专业目录 计算机相关专业&#xff1a; 0812计算机科学与技术 …

瓴羊发布All in One 产品,零售SaaS的尽头是DaaS?

“打破烟囱、化繁为简&#xff0c;让丰富的能力、数据和智能All in One”&#xff0c;这是瓴羊新发布的产品瓴羊One承担的使命&#xff0c;也意味着瓴羊DaaS事业迈入了一个新阶段。 成立伊始&#xff0c;瓴羊就打出了“Not SaaS&#xff0c;But DaaS”旗号&#xff0c;将自己的…

奋斗四个月,我要上西工大

距离考研初试还有135天&#xff0c;今天我参观了西北工业大学&#xff0c;看到了《何尊组雕》&#xff0c;让我肃然起敬。 西北工业大学&#xff0c;国防七子&#xff0c;我也不知道自己能否够得着&#xff0c;也许只有时间能带给我答案。 在过去三年的积累中&#xff0c;我的…

2023年测试工程师,从0到1学习自动化测试,落地实施...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 如何实施自动化测…

RFID技术半导体天车设备上的应用

在当前的制造业环境中&#xff0c;无人化和自动化已经成为了发展的主流趋势&#xff0c;加之在半导体制造业中&#xff0c;12寸的晶圆盒尺寸大&#xff0c;重量重&#xff0c;人工长期搬运会对身体有损伤&#xff0c;而且人工搬运也会对产品的良品率造成影响&#xff0c;因此&a…

【每日一题】1572. 矩阵对角线元素的和

【每日一题】1572. 矩阵对角线元素的和 1572. 矩阵对角线元素的和题目描述解题思路 1572. 矩阵对角线元素的和 题目描述 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&a…

巨人互动|Meta海外户Meta的业务工具转化API

Meta的业务工具转化API是一项创新技术&#xff0c;它可以帮助企业实现更高效的业务工具转化和集成。通过这个API&#xff0c;企业可以将不同的业务工具整合到一个统一的平台上&#xff0c;提高工作效率和协作能力。本文小编将介绍Meta的业务工具转化API的功能和优势。 巨人互动…

【学习日记】【FreeRTOS】临界段的保护

写在前面 本文主要是对于 FreeRTOS 中临界段的保护的详细解释&#xff0c;代码大部分参考了野火 FreeRTOS 教程配套源码&#xff0c;作了一小部分修改。 一、什么是临界段 临界段就是一段在执行的时候不能被中断的代码段。 **临界段&#xff08;Critical Section&#xff0…

文心一言 VS 讯飞星火 VS chatgpt (74)-- 算法导论7.2 2题

二、如果用go语言&#xff0c;当数组A的所有元素都具有相同值时&#xff0c;QUICKSORT的时间复杂度是什么? 文心一言&#xff1a; 在Go语言中&#xff0c;对一个所有元素都相等的数组进行快速排序&#xff08;QuickSort&#xff09;的时间复杂度是O(n log n)。 快速排序是一…

栈和队列修炼指南(基本操作+OJ练习)

栈和队列修炼指南 1. 栈 1. 1 概念及结构 栈&#xff1a;是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端为栈底。 栈中的数据元素遵守后进先出原则(LIFO)原则 压栈&#xff1a;栈的…