一、项目构想
在现代互联网时代里,人们的意见、评论和建议已成为政治科学和企业的宝贵资源。借助现代技术,我们现在能够最有效地收集和分析此类数据。该项目通过机器学习应用于语言分析,即情感分析;情感分析是分析用户情感的过程。我们可以将他们的情绪分为正面,负面或中性。
这是最受欢迎的机器学习项目之一。其背后的原因是每家公司都试图了解客户的情绪,如果客户满意,他们会留下来。该项目可能显示出减少客户流失的途径。
二、实现过程
数据集
- 首先,我们构建模型需要数据集,我们使用一个互联网电影数据库中的大量电影评论数据。下载链接: Sentiment Analysis (stanford.edu)
- 如上图所示,test和train目录下都有25000个数据集,分别在neg 与 pos文件夹下,代表负面(6分以下)和正面(6分以上)的评论。之后将我们的数据集进行处理,得到方便我们进行机器学习的CSV文件。
数据标注
- 导入包。Pyprind为进度条模块,用于实现处理进度可视化效果。
- 分别创建进度条、标签字典和一个列表,分别用于显示处理进度;表示正面和负面评论;以及存储每个评论的文本和标签。
- 通过遍历数据集中的‘pos’和‘neg’文件夹中的文件,将评论文本和标签添加到空列表中。
- 创建DataFrame,用于存储评论文本和标签。之后打乱顺序,以防影响学习效果。
- 将DataFrame保存为CSV文件,并打印开头的三个评论,检查是否正常运行。
- 结果
数据预处理
我们有了原始的数据集。需要对数据进行预处理,该数据有两个问题需要解决:
(1)数据集含有大量的HTML符号,要消去文本中的HTML符号。
(2)要将文本数据转化为矩阵数据,以便进行机器学习。
对于问题一,可以用正则表达式来进行对特定符号的剔除。
正则表达式就是利用特殊符号构建的一种规则,将文本中符合这种规则的字符串提取或者消除的一种方式,在这里我们构建了符合HTML符号的一种规则,将HTML符号在我们的文本数据中进行剔除。
问题一解决过程
- 导入包。并读取数据。
- 导入正则表达式模块,并定义一个delete_html函数。
- 在函数中,re.sub()用于空格替换文本中的HTML标签。
- re.findall()用于在文本中查找表情符号,之后移除非字母数字字符,转换为小写,并将表情符号添加到文本中。
- 完整代码
- 对‘review’列中的每个文本应用delete_html函数。
问题二解决过程
- 通过词袋模型对文本数据进行编码,将其表示为数值型的特征向量。词袋模型,是用于自然语言处理和信息检索中的一种简单的文档表示方法。通过这一模型,一篇文档可以通过统计所有单词的数目来表示,这种方法不考虑语法和单词出现的先后顺序。
- 使用词袋模型,首先对文本数据进行词汇分割,这里利用文本中的空格进行分割。
- 导入PorterStemmer,对文本进行词干提取,并返回词干化后的单词列表。
- 数据中还有大量“无意义” 词汇,需要用一个预先规定的停用词集合,在数据集中进行剔除。所以要先导入nltk库,下载并导入停用词列表。
数据划分
数据预处理之后,进行数据划分。将数据集划分为训练集和测试集。通常,大部分数据用于训练,另一部分用于测试模型的性能。
如上图所示,将前1000划分为训练集,后1000划分为测试集
机器学习 —— 使用机器学习进行情感分析 演示版(下)https://developer.aliyun.com/article/1507861?spm=a2c6h.13148508.setting.19.1b484f0emHkERh