位置: IT常识 - 正文

利用Python实现酒店评论的中文情感分析,含数据集(用python编写)

编辑:rootadmin
利用Python实现酒店评论的中文情感分析,含数据集 利用Python实现酒店评论的情感分析

推荐整理分享利用Python实现酒店评论的中文情感分析,含数据集(用python编写),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:用python编写,利用python进行,python运用,用python编写,python怎样用,利用python进行,利用python进行,怎么用python做,内容如对您有帮助,希望把文章链接给更多的朋友!

完整代码下载地址:利用Python实现酒店评论的中文情感分析

情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法。基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正向或负向),其方法是统计文本中出现的正、负向情感词数目或情感词的情感值来判断文本情感类别;基于机器学习的方法利用机器学习算法训练已标注情感类别的训练数据集训练分类模型,再通过分类模型预测文本所属情感分类。本文采用机器学习方法实现对酒店评论数据的情感分类,利用Python语言实现情感分类模型的构建和预测,不包含理论部分,旨在通过实践一步步了解、实现中文情感极性分析。

1 开发环境准备1.1 Python环境

在python官网https://www.python.org/downloads/ 下载计算机对应的python版本,本人使用的是Python2.7.13的版本。

1.2 第三方模块

本实例代码的实现使用到了多个著名的第三方模块,主要模块如下所示:

1)Jieba 目前使用最为广泛的中文分词组件。下载地址:https://pypi.python.org/pypi/jieba/2)Gensim 用于主题模型、文档索引和大型语料相似度索引的python库,主要用于自然语言处理(NLP)和信息检索(IR)。下载地址:https://pypi.python.org/pypi/gensim 本实例中的维基中文语料处理和中文词向量模型构建需要用到该模块。3)Pandas 用于高效处理大型数据集、执行数据分析任务的python库,是基于Numpy的工具包。下载地址:https://pypi.python.org/pypi/pandas/0.20.14)Numpy 用于存储和处理大型矩阵的工具包。下载地址:https://pypi.python.org/pypi/numpy5)Scikit-learn 用于机器学习的python工具包,python模块引用名字为sklearn,安装前还需要Numpy和Scipy两个Python库。官网地址:http://scikit-learn.org/stable/6)Matplotlib Matplotlib是一个python的图形框架,用于绘制二维图形。下载地址:https://pypi.python.org/pypi/matplotlib7)Tensorflow Tensorflow是一个采用数据流图用于数值计算的开源软件库,用于人工智能领域。 官网地址:http://www.tensorfly.cn/ 下载地址:https://pypi.python.org/pypi/tensorflow/1.1.02 数据获取2.1 停用词词典

本文使用中科院计算所中文自然语言处理开放平台发布的中文停用词表,包含了1208个停用词。下载地址:http://www.hicode.cc/download/view-software-13784.html

2.2 正负向语料库

文本从http://www.datatang.com/data/11936 下载“有关中文情感挖掘的酒店评论语料”作为训练集与测试集,该语料包含了4种语料子集,本文选用正负各1000的平衡语料(ChnSentiCorp_htl_ba_2000)作为数据集进行分析。

3 数据预处理3.1 正负向语料预处理

下载并解压ChnSentiCorp_htl_ba_2000.rar文件,得到的文件夹中包含neg(负向语料)和pos(正向语料)两个文件夹,而文件夹中的每一篇评论为一个txt文档,为了方便之后的操作,需要把正向和负向评论分别规整到对应的一个txt文件中,即正向语料的集合文档(命名为2000_pos.txt)和负向语料的集合文档(命名为2000_neg.txt)。 具体Python实现代码如下所示:

运行完成后得到2000_pos.txt和2000_neg.txt两个文本文件,分别存放正向评论和负向评论,每篇评论为一行。文档部分截图如下所示:

3.2 中文文本分词

本文采用结巴分词分别对正向语料和负向语料进行分词处理。特别注意,在执行代码前需要把txt源文件手动转化成UTF-8格式,否则会报中文编码的错误。在进行分词前,需要对文本进行去除数字、字母和特殊符号的处理,使用python自带的string和re模块可以实现,其中string模块用于处理字符串操作,re模块用于正则表达式处理。 具体实现代码如下所示:

处理完成后,得到2000_pos_cut.txt和2000_neg_cut.txt两个txt文件,分别存放正负向语料分词后的结果。分词结果部分截图如下所示:

3.3 去停用词

分词完成后,即可读取停用词表中的停用词,对分词后的正负向语料进行匹配并去除停用词。去除停用词的步骤非常简单,主要有两个:

1)读取停用词表;2)遍历分词后的句子,将每个词丢到此表中进行匹配,若停用词表存在则替换为空。

具体实现代码如下所示:

利用Python实现酒店评论的中文情感分析,含数据集(用python编写)

根据代码所示,停用词表的获取使用到了python特有的广播形式,一句代码即可搞定:

stopkey = [w.strip() for w in codecs.open('data\stopWord.txt', 'r', encoding='utf-8').readlines()]

读取出的每一个停用词必须要经过去符号处理即w.strip(),因为读取出的停用词还包含有换行符和制表符,如果不处理则匹配不上。代码执行完成后,得到2000_neg_cut_stopword.txt和2000_pos_cut_stopword.txt两个txt文件。

由于去停用词的步骤是在句子分词后执行的,因此通常与分词操作在同一个代码段中进行,即在句子分词操作完成后直接调用去停用词的函数,并得到去停用词后的结果,再写入结果文件中。本文是为了便于步骤的理解将两者分开为两个代码文件执行,各位可根据自己的需求进行调整。

3.4 获取特征词向量

根据以上步骤得到了正负向语料的特征词文本,而模型的输入必须是数值型数据,因此需要将每条由词语组合而成的语句转化为一个数值型向量。常见的转化算法有Bag of Words(BOW)、TF-IDF、Word2Vec。本文采用Word2Vec词向量模型将语料转换为词向量。

由于特征词向量的抽取是基于已经训练好的词向量模型,而wiki中文语料是公认的大型中文语料,本文拟从wiki中文语料生成的词向量中抽取本文语料的特征词向量。Wiki中文语料的Word2vec模型训练在之前写过的一篇文章“利用Python实现wiki中文语料的word2vec模型构建” 中做了详尽的描述,在此不赘述。即本文从文章最后得到的wiki.zh.text.vector中抽取特征词向量作为模型的输入。

获取特征词向量的主要步骤如下:

1)读取模型词向量矩阵;2)遍历语句中的每个词,从模型词向量矩阵中抽取当前词的数值向量,一条语句即可得到一个二维矩阵,行数为词的个数,列数为模型设定的维度;3)根据得到的矩阵计算矩阵均值作为当前语句的特征词向量;4)全部语句计算完成后,拼接语句类别代表的值,写入csv文件中。

主要代码如下图所示:

代码执行完成后,得到一个名为2000_data.csv的文件,第一列为类别对应的数值(1-pos, 0-neg),第二列开始为数值向量,每一行代表一条评论。结果的部分截图如下所示:

3.5 降维

Word2vec模型设定了400的维度进行训练,得到的词向量为400维,本文采用PCA算法对结果进行降维。具体实现代码如下所示:

运行代码,根据结果图发现前100维就能够较好的包含原始数据的绝大部分内容,因此选定前100维作为模型的输入。

4 分类模型构建

本文采用支持向量机(SVM)作为本次实验的中文文本分类模型,其他分类模型采用相同的分析流程,在此不赘述。

支持向量机(SVM)是一种有监督的机器学习模型。本文首先采用经典的机器学习算法SVM作为分类器算法,通过计算测试集的预测精度和ROC曲线来验证分类器的有效性,一般来说ROC曲线的面积(AUC)越大模型的表现越好。

首先使用SVM作为分类器算法,随后利用matplotlib和metric库来构建ROC曲线。具体python代码如下所示:

运行代码,得到Test Accuracy: 0.88,即本次实验测试集的预测准确率为88%,ROC曲线如下图所示。

完整代码下载地址:利用Python实现酒店评论的中文情感分析

本文链接地址:https://www.jiuchutong.com/zhishi/295382.html 转载请保留说明!

上一篇:Segment Anything Model (SAM)——分割一切,具有预测提示输入的图像分割实践(segment anything model github)

下一篇:操作系统——死锁(操作系统())

  • 索爱mt15i哪一年上市(索爱mt15i)(索爱mk16)

    索爱mt15i哪一年上市(索爱mt15i)(索爱mk16)

  • 网线水晶头正确接法(网线水晶头正确接线图解)

    网线水晶头正确接法(网线水晶头正确接线图解)

  • 闲聊可以提现怎么到不了帐(闲聊能不能提现)

    闲聊可以提现怎么到不了帐(闲聊能不能提现)

  • 苹果8的3dtouch怎么设置(iphone 8 3d touch怎么用)

    苹果8的3dtouch怎么设置(iphone 8 3d touch怎么用)

  • 支付宝地区怎么修改(支付宝地区怎么隐藏)

    支付宝地区怎么修改(支付宝地区怎么隐藏)

  • 红米k30pro怎么截屏(红米k30pro怎么截屏长图片)

    红米k30pro怎么截屏(红米k30pro怎么截屏长图片)

  • 快手确认收货后还能申请退款吗(快手确认收货后运费险还生效吗)

    快手确认收货后还能申请退款吗(快手确认收货后运费险还生效吗)

  • iPad和iPhone蓝牙连接不成功(ipad和iphone蓝牙连接有什么用)

    iPad和iPhone蓝牙连接不成功(ipad和iphone蓝牙连接有什么用)

  • 闲鱼已预留是什么意思(闲鱼上已预留是卖掉了了吗)

    闲鱼已预留是什么意思(闲鱼上已预留是卖掉了了吗)

  • 取消话费信用服务是什么(取消话费信用服务是什么原因)

    取消话费信用服务是什么(取消话费信用服务是什么原因)

  • 美团商家不处理退款怎么办(美团商家不给退怎么办)

    美团商家不处理退款怎么办(美团商家不给退怎么办)

  • dns probe possible是什么意思(dns probe possible是不是欠费了)

    dns probe possible是什么意思(dns probe possible是不是欠费了)

  • 戴尔新电脑耗电很快正常么(戴尔电脑耗电快)

    戴尔新电脑耗电很快正常么(戴尔电脑耗电快)

  • 微信里的旺财表情包是什么意思(微信里旺财的表情在哪)

    微信里的旺财表情包是什么意思(微信里旺财的表情在哪)

  • 80d和800d的区别(80d与850d)

    80d和800d的区别(80d与850d)

  • 华为后面的标签能撕吗(华为后面的标签怎么取消)

    华为后面的标签能撕吗(华为后面的标签怎么取消)

  • 魅族16sPro怎么关闭桌面信息(魅族16sos怎么关闭)

    魅族16sPro怎么关闭桌面信息(魅族16sos怎么关闭)

  • 南方cass怎么标注尺寸(南方cass怎么标注坐标快捷键)

    南方cass怎么标注尺寸(南方cass怎么标注坐标快捷键)

  • 章鱼输入法为啥没有图片出来(章鱼输入法为啥没有手写)

    章鱼输入法为啥没有图片出来(章鱼输入法为啥没有手写)

  • 解除唯品会绑定手机号(怎么解绑唯品会)

    解除唯品会绑定手机号(怎么解绑唯品会)

  • wps文件太大怎么变小(wps office文件太大)

    wps文件太大怎么变小(wps office文件太大)

  • 8p是什么时候上市的(8p什么时候上线的)

    8p是什么时候上市的(8p什么时候上线的)

  • 微信里的相片和视频怎么删除(微信里的相片和相片区别)

    微信里的相片和视频怎么删除(微信里的相片和相片区别)

  • cpu不支持系统升级到win11怎么办 附win11支持的cpu列表(电脑不支持cpu)

    cpu不支持系统升级到win11怎么办 附win11支持的cpu列表(电脑不支持cpu)

  • 桌面图标消失了怎么办?(小米6桌面图标消失了)

    桌面图标消失了怎么办?(小米6桌面图标消失了)

  • iconfig.exe进程是什么文件的 iconfig进程查询(icon files)

    iconfig.exe进程是什么文件的 iconfig进程查询(icon files)

  • iptables-save命令  保存防火墙策略规则(service iptables save)

    iptables-save命令 保存防火墙策略规则(service iptables save)

  • 税控盘280怎么变398了
  • 缴纳印花税的会计科目
  • 哪些情况需要提高警惕小心毒品
  • 长期股权投资收回账务处理
  • 合同取得成本如何结转
  • 发票号码不一致可以报销吗
  • 生产工人工资和福利费是产品成本项目对吗
  • 代扣代缴增值税是什么意思
  • 定额备用金的账务处理
  • 搬家费账务处理
  • 个人独资企业个人所得税税率
  • 企业所得税研发费用加计扣除政策的文件
  • 收到客户定金账务怎么做
  • 哪些业务需要编写收款凭证
  • 增值税农产品抵扣政策
  • 增值税普票遗失了怎么办
  • 单位聘请临时工工资怎么报税
  • 购买物品的专用会计科目
  • 营改增后附加税费入应交税费还是营业税金及附加
  • 旅游业营改增差额征税的会计核算怎么做?
  • 3万免税是指什么
  • 预提怎么写会计分录
  • 电子发票收款人和复核人可以是一个人吗
  • 垫付的医药费怎么理赔
  • 疏通下水道入什么经络
  • 小规模纳税人有销无进是什么意思
  • 微软输入法突然变成繁体字怎么改回来
  • 出口货物退货流程
  • 财务报表包括哪几个表
  • win11系统怎么删除账户
  • win10电源图标灰色无法打开
  • ospf区域间路由和区域内路由
  • laravel技巧
  • php的超级全局变量
  • 统一社会保险费征收
  • 导航菜单是什么
  • 金融商品转让业务包括
  • 朱砂矿洞的历史
  • php的session
  • 编译原理第三版课后答案
  • php判断文件类型
  • 若依框架前端发请求
  • 裁员补偿金如何合理避税
  • 对方开具红字发票,我方怎么查询
  • mongodb的语句
  • sql server 递归
  • 银行存款出现负数怎么办
  • 房地产企业土地增值税清算
  • 中小企业会计科目
  • 股东捐赠给企业怎么做账
  • 跨年度冲红字发票账务处理
  • 免税苗木发票如何申报
  • 土地拍卖相关法律法规
  • 财务的材质怎么写
  • 过户前交了契税能退吗
  • 现金流量表补充资料怎么理解
  • 非房产企业出售土地,能否计算抵减地价款
  • 商贸企业固定资产可以一次性扣除吗?
  • 固定资产盘盈盘亏的会计科目
  • 做会计的步骤
  • mac虚拟机安装教程win10正版
  • gentoo安装教程2021
  • centos7打开
  • winxp系统介绍
  • win7不同用户下装不同软件
  • linux ftp用户存在哪个文件中
  • win10企业版教育版专业版哪个好
  • Linux dpkg-query 命令用法详解(Debian Linux中软件包的查询工具)
  • windows10 不能启动
  • cocos2d教程
  • bat中if语句的用法
  • vue music
  • jquery lazyload
  • Python工程师面试题 与Python Web相关
  • s='python is beautiful!'
  • jquery查找节点
  • jquery跨域请求有哪些方式
  • jquery iframe写入内容
  • python 解析算法
  • 医生兼职取酬违反什么纪律
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设