资源下载地址:https://download.csdn.net/download/sheziqiong/85820698
资源下载地址:https://download.csdn.net/download/sheziqiong/85820698

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自带的stringre模块可以实现,其中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模型构建” 中做了详尽的描述,在此不赘述。即本文从文章最后得到的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曲线如下图所示。

资源下载地址:https://download.csdn.net/download/sheziqiong/85820698
资源下载地址:https://download.csdn.net/download/sheziqiong/85820698

基于Python分析实现酒店评论的中文情感相关推荐

  1. python酒店评论分析_GitHub - huangpd/senti_analysis: 利用Python实现酒店评论的中文情感分析...

    利用Python实现酒店评论的情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法.基于情感知识的方法通过 ...

  2. python酒店评论分析_GitHub - yikedouer/senti_analysis: 利用Python实现酒店评论的中文情感分析...

    利用Python实现酒店评论的情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法.基于情感知识的方法通过 ...

  3. 利用Python实现酒店评论的中文情感分析,含数据集

    利用Python实现酒店评论的情感分析 完整代码下载地址:利用Python实现酒店评论的中文情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法: ...

  4. python酒店评论分析_GitHub - jiahuiiii/senti_analysis: 利用Python实现酒店评论的中文情感分析...

    利用Python实现酒店评论的情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法.基于情感知识的方法通过 ...

  5. 【人工智能毕设之基于Python+flask+bilstm的评论情感分析系统-哔哩哔哩】 https://b23.tv/QU56eTl

    [人工智能毕设之基于Python+flask+bilstm的评论情感分析系统-哔哩哔哩] https://b23.tv/QU56eTl https://b23.tv/QU56eTl

  6. 基于Python分析深圳程序员工资有多高?

    基于Python分析深圳程序员工资有多高? 概述 前言 统计结果 爬虫技术分析 爬虫代码实现 爬虫分析实现 后记 前言 多图预警.多图预警.多图预警.校招季,毕业也多,跳槽也多.我们的职业发展还是要顺 ...

  7. 基于酒店评论的文本情感分析

    使用数据集: 谭松波–酒店评论语料 其中包含正面数据集和负面数据集 获取链接:https://pan.baidu.com/s/1oObY4A_Ovo1CY00UrgbBKg 提取码:kth7 这里感谢 ...

  8. python携程酒店评论_携程酒店评论爬虫心得

    携程酒店评论爬虫心得 发布时间:2018-09-02 15:58, 浏览次数:613 携程酒店评论爬虫心得 这次爬取数据,遇到了不少的困难,也走了很多弯路,特此写下帮助记忆.以下基本是我爬取数据的过程 ...

  9. Python学习:Python分析钉钉评论(一)爬取数据

    爬取数据 从App Store官网拿下评论数据做分析 App Store评论API: https://itunes.apple.com/rss/customerreviews/page=1/id=/s ...

  10. 第四章:用Python对用户的评论数据进行情感倾向分析

    文章目录 项目背景 获取数据 情感倾向 senta_bilstm 模型 情感划分 数据描述 数据分析 总体评论倾向 评论分布 各分布的情感倾向 评论分词 去除停用词 绘制词云图 结论 本文可以学习到以 ...

最新文章

  1. 昨天又帮爸DIY了一台工作电脑
  2. asp.net 中ashx、axd的区别
  3. ArrayList的容量
  4. 操作系统之计算机系统概述:6、系统调用
  5. 95-140-106-源码-transform-算子filter
  6. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——B题 小宝的幸运数组
  7. 生成32位字母数字的随机数
  8. python解决sip与ptqt不兼容导致页面截图引擎无法运行问题
  9. 范式哈夫曼编码(Canonical Huffman Code)
  10. Java代码一行一行读取txt的内容
  11. “黑客帝国”只是另一个幻想,但我们痴迷于此
  12. This system is not registered with an entitlement server.
  13. 八股文之linux常用指令
  14. 清华姚班学生ICML一人署名论文:协作学习的鲁棒性方法
  15. CAP原则(CAP定理)
  16. Linux服务器的那些性能参数指标 Top命令技巧
  17. Office 2008 for Mac试用印象
  18. Java类加载及对象创建过程详解
  19. 6 种 MySQL 数据库平滑扩容方案剖析
  20. imdb-wiki数据集划分及处理、训练

热门文章

  1. uploadify文件上传以及预览
  2. 常用的特征选择算法介绍
  3. Nuget包管理器将nupkg文件导入ASP.NET MVC5项目
  4. dda算法c语言opengl实现
  5. C派生matlab读取excel脚本
  6. Mysql 常见ALTER TABLE操作
  7. excel报表管理系统mysql_比较电子表格软件Excel与数据库管理系统的优缺点
  8. CMOS和TTL的区别?
  9. linux工作日志软件,Linux桌面日记本(RedNotebook)
  10. 5g/4g工业无线路由器