# 利用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.1
+ 4)**Numpy**
用于存储和处理大型矩阵的工具包。下载地址:https://pypi.python.org/pypi/numpy
+ 5)**Scikit-learn**
用于机器学习的python工具包,python模块引用名字为sklearn,安装前还需要Numpy和Scipy两个Python库。官网地址:http://scikit-learn.org/stable/
+ 6)**Matplotlib**
Matplotlib是一个python的图形框架,用于绘制二维图形。下载地址:https://pypi.python.org/pypi/matplotlib
+ 7)**Tensorflow**
Tensorflow是一个采用数据流图用于数值计算的开源软件库,用于人工智能领域。
官网地址:http://www.tensorfly.cn/
下载地址:https://pypi.python.org/pypi/tensorflow/1.1.0
## 2 数据获取
#### 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特有的**广播**形式,一句代码即可搞定:
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模型构建”](http://www.jianshu.com/p/ec27062bd453) 中做了详尽的描述,在此不赘述。即本文从文章最后得到的wiki.zh.text.vector中抽取特征词向量作为模型的输入。
获取特征词向量的主要步骤如下:
+ 1)读取模型词向量矩阵;
+ 2)遍历语句中的每个词,从模型词向量矩阵中抽取当前词的数值向量,一条语句即可得到一个二维矩阵,行数为词的个数,列数为模型设定的维度;
+ 3)根据得到的矩阵计算**矩阵均值**作为当前语句的特征词向量;
+ 4)全部语句计算完成后,拼接语句类别代表的值,写入csv文件中。
主要代码如下图所示:

代码执行完
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Python的酒店评论情感分析.zip情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法。基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正向或负向),其方法是统计文本中出现的正、负向情感词数目或情感词的情感值来判断文本情感类别;基于机器学习的方法利用机器学习算法训练已标注情感类别的训练数据集训练分类模型,再通过分类模型预测文本所属情感分类。本文采用机器学习方法实现对酒店评论数据的情感分类,利用Python语言实现情感分类模型的构建和预测,不包含理论部分,旨在通过实践一步步了解、实现中文情感极性分析。 基于Python的酒店评论情感分析.zip情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法。基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正向或负向),其方法是统计文本中出现的正、负向情感词数目或情感词的情感值来判断文本情感类别;基于机器学习的方法利用机器学习算法训练已标注情感类别的训
资源推荐
资源详情
资源评论


























收起资源包目录





































































































共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论

- zhangrongzhen1232024-01-05怎么能有这么好的资源!只能用感激涕零来形容TAT...
- qq_157082972024-06-07资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。

程序员张小妍
- 粉丝: 1w+
- 资源: 3704
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- SoundManager.java
- 永磁同步电机参数调整与预测控制模块:时变工况下的参数不确定性与匹配策略,永磁同步电机参数调整与预测控制模块:时变工况下的参数不确定性与匹配策略,永磁同步电机参数不确定 参数变化 参数失配 参数摄动模块
- C++基础入门.pdf
- 软考-中级-网络工程师-知识点总结.docx
- ,《基于速度同步线性调频小波变换(VSLCT)的时频分析技术研究与应用》,速度同步线性调频小波变(VSLCT)VSLCT是当前线性变的扩展版本 它能有效地缓解拖尾效应,并能动态地响应条件变化提供所需
- ROS工程认知-ROS文件系统结构与编译系统详解
- 两极式三相光伏逆变并网仿真:基于MPPT算法与双环PI调节的LCL型三相逆变系统仿真模型,三相光伏并网系统仿真模型:研究Boost变换器MPPT算法与三相两电平LCL型逆变器的SVPWM调制及控制策略
- ROS环境中C++节点的构建与多节点协调运行机制探讨
- ROS通讯机制-话题通信详解及实例:构建发布/订阅模式实现异步通信
- 优化后的PFC2D颗粒离散元数值模拟试验合集:直剪、单轴与双轴压缩并行高效运行代码集,优化后PFC2D颗粒离散元数值模拟试验合集:高效单直剪与单双轴压缩并行运行代码集,该模型是一个PFC2D颗粒离散元
- 第五次课程服务组实验1:基于仿真的机器人及其应用环境
- 【business-jxd】
- 第6次课 ROS服务.docx
- Abaqus铁路轨道建模及车轨耦合动力响应分析:车轨地基相互作用与弹簧批量施加研究,Abaqus铁路轨道建模及车轨耦合动力响应分析:车轨地基相互作用与弹簧批量施加研究,Abaqus铁路轨道建模,车轨耦
- PCAN-Basic-Windows.zip
- 从0到1的网络安全专家之路 二进制安全和Web安全.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
