机器学习 —— 使用机器学习进行情感分析 演示版

🌟欢迎来到 我的博客 —— 探索技术的无限可能!


🌟博客的简介(文章目录)


机器学习 —— 使用机器学习进行情感分析 详细介绍版
机器学习 —— 使用机器学习进行情感分析 演示版
机器学习 —— 使用机器学习进行情感分析 代码         ——>        可私信获取


一、项目构想

        在现代互联网时代里,人们的意见、评论和建议已成为政治科学和企业的宝贵资源。借助现代技术,我们现在能够最有效地收集和分析此类数据。该项目通过机器学习应用于语言分析,即情感分析;情感分析是分析用户情感的过程。我们可以将他们的情绪分为正面,负面或中性。
在这里插入图片描述

        这是最受欢迎的机器学习项目之一。其背后的原因是每家公司都试图了解客户的情绪,如果客户满意,他们会留下来。该项目可能显示出减少客户流失的途径。

在这里插入图片描述

二、实现过程

数据集

  1. 首先,我们构建模型需要数据集,我们使用一个互联网电影数据库中的大量电影评论数据。下载链接: Sentiment Analysis (stanford.edu)
    在这里插入图片描述

  2. 如上图所示,test和train目录下都有25000个数据集,分别在neg 与 pos文件夹下,代表负面(6分以下)和正面(6分以上)的评论。之后将我们的数据集进行处理,得到方便我们进行机器学习的CSV文件。

数据标注

  1. 导入包。Pyprind为进度条模块,用于实现处理进度可视化效果。
    在这里插入图片描述

  2. 分别创建进度条、标签字典和一个列表,分别用于显示处理进度;表示正面和负面评论;以及存储每个评论的文本和标签。
    在这里插入图片描述

  3. 通过遍历数据集中的‘pos’和‘neg’文件夹中的文件,将评论文本和标签添加到空列表中。
    在这里插入图片描述

  4. 创建DataFrame,用于存储评论文本和标签。之后打乱顺序,以防影响学习效果。

在这里插入图片描述

  1. 将DataFrame保存为CSV文件,并打印开头的三个评论,检查是否正常运行。

在这里插入图片描述

  1. 结果

在这里插入图片描述

数据预处理

        我们有了原始的数据集。需要对数据进行预处理,该数据有两个问题需要解决:

        (1)数据集含有大量的HTML符号,要消去文本中的HTML符号。

        (2)要将文本数据转化为矩阵数据,以便进行机器学习。

在这里插入图片描述

        对于问题一,可以用正则表达式来进行对特定符号的剔除。

        正则表达式就是利用特殊符号构建的一种规则,将文本中符合这种规则的字符串提取或者消除的一种方式,在这里我们构建了符合HTML符号的一种规则,将HTML符号在我们的文本数据中进行剔除。

问题一解决过程

  1. 导入包。并读取数据。

在这里插入图片描述

  1. 导入正则表达式模块,并定义一个delete_html函数。

在这里插入图片描述

  1. 在函数中,re.sub()用于空格替换文本中的HTML标签。

在这里插入图片描述

  1. re.findall()用于在文本中查找表情符号,之后移除非字母数字字符,转换为小写,并将表情符号添加到文本中。

在这里插入图片描述

  1. 完整代码

在这里插入图片描述

  1. 对‘review’列中的每个文本应用delete_html函数。

在这里插入图片描述

问题二解决过程

  1. 通过词袋模型对文本数据进行编码,将其表示为数值型的特征向量。词袋模型,是用于自然语言处理和信息检索中的一种简单的文档表示方法。通过这一模型,一篇文档可以通过统计所有单词的数目来表示,这种方法不考虑语法和单词出现的先后顺序。

  2. 使用词袋模型,首先对文本数据进行词汇分割,这里利用文本中的空格进行分割。

在这里插入图片描述

  1. 导入PorterStemmer,对文本进行词干提取,并返回词干化后的单词列表。

在这里插入图片描述

  1. 数据中还有大量“无意义” 词汇,需要用一个预先规定的停用词集合,在数据集中进行剔除。所以要先导入nltk库,下载并导入停用词列表。

在这里插入图片描述

数据划分

        数据预处理之后,进行数据划分。将数据集划分为训练集和测试集。通常,大部分数据用于训练,另一部分用于测试模型的性能。
在这里插入图片描述

        如上图所示,将前1000划分为训练集,后1000划分为测试集

搭建训练模型

  1. 导入库。作用如图所示。

在这里插入图片描述

  1. 定义参数网格。主要参数解释如图所示。

在这里插入图片描述

  1. 创建机器学习流水线,可以简化代码,将步骤封装成完整的工作流,避免了代码重复。

在这里插入图片描述

  1. 导入模型,并训练。

在这里插入图片描述

  1. 打印最优组合。

在这里插入图片描述

  1. 实现结果:

在这里插入图片描述

随机梯度下降算法

        当数据集过大,我们可以用随机梯度下降算法(SGD)。SGD主要应用在大规模稀疏数据问题上,经常用在文本分类及自然语言处理,是深度学习中常用的优化算法之一。

  1. 数据预处理和数据划分与前文相同,仅截图展示。

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

  1. 导入训练模型。

在这里插入图片描述

  1. 分批次加载训练集数据,每次加载1000条,共45*1000。

在这里插入图片描述

  1. 使用模型对测试数据集进行评估,并打印评估结果。

在这里插入图片描述

  1. 实现结果:

在这里插入图片描述

        与第一种方法对比可知,第二种方法准确度更高。

在这里插入图片描述

三、可视化分析

对训练集和测试集的准确率进行可视化分析

  1. 如图所示,进行10次迭代,仅展示核心代码:

在这里插入图片描述

  1. 绘制训练集和测试集准确率随迭代次数的变化:

在这里插入图片描述

  1. 可视化

在这里插入图片描述

        如图所示,在训练集上进行部分拟合后,十次迭代的准确度与测试集经过十次迭代的准确度相差不远,说明模型欠拟合。

对训练集经过深度学习后的准确率与损失函数进行可视化分析

  1. 如图所示,搭建深度学习模型,训练后获取准确度和损失函数,仅展示核心代码:

在这里插入图片描述

  1. 绘制训练集准确率和损失函数曲线:

在这里插入图片描述
3. 可视化

在这里插入图片描述

        如图所示,在训练集上进行深度学习后,准确度远远高于验证准确度,而且损失函数也比验证损失函数小,说明深度学习训练效果好。
在这里插入图片描述

  • 20
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZShiJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值