情感分析是一种监督式机器学习技术,用于分析和预测文本中的情感倾向(正面或负面)。企业经常使用这项技术来了解用户的体验、情感和反馈,以便改进产品和服务的质量与灵活性。本文将深入探讨机器学习工程师如何使用情感分析技术来检查各种文本的情感。
数据是机器学习问题的核心。没有数据,就无法解决任何机器学习问题。有句老话说得好:“数据越多越好!”有许多开源数据源可用于训练机器学习模型,可以选择自己收集数据或使用公开数据集来训练算法。基于文本的数据集通常以JSON或CSV格式分发,因此可以使用Python列表或字典/数据框架对象来获取这些数据。数据应该按照常见的60%训练集、20%验证集、20%测试集的比例进行分割,或者按照70%训练集、15%验证集、15%测试集的比例。流行的Twitter数据集可以从下载。
每个机器学习任务都应该有一个流程。流程用于将机器学习工作流程分割成独立的、可重用的、模块化的部件,然后将它们组合在一起,以持续提高模型的准确性并实现成功的算法。本文将遵循一个基本的流程结构,以便读者能够轻松理解流程中使用的每个部分。流程将包括以下步骤:预处理文本和构建词汇表、特征提取、训练模型和测试模型。
预处理数据是流程中的一个重要步骤。预处理文本可以用于从文本数据中移除没有情感价值的单词和标点符号,这可以显著提高训练时间,因为数据大小将被减少,并且仅限于具有一些情感价值的单词。预处理包括处理以下内容:
停用词是在句子中没有语义或情感价值/权重的词。例如:and、is、the、you等。将创建一个包含所有可能的停用词的列表,然后遍历数据中的每个示例,从数据中移除列表中的每个词。
标点符号是用来强调文本的符号。例如:!, @, #, $等。将创建一个包含所有标点符号的列表,并使用该列表处理每个示例。
URL是以Http协议声明开始的链接,例如‘https://…’,句柄用于在社交媒体中提及人,例如‘@user’,它们都没有情感意义。将创建一个名为‘process_handles_urls()’的函数,该函数将接受训练数据,并从每个示例中消除以‘https://’或‘@’开头的词。
词干提取是将一个词减少到其基本词干的过程。例如,‘turn’是turning、turns、turned等的基本词干。由于词干对于所有后缀词都具有相同的情感价值,因此可以将每个词减少到其基本词干,这可以减少词汇表大小和训练时间。将创建一个名为‘do_stemming()’的函数,该函数将接受数据并对每个示例中的词进行词干提取。
应该在数据中为每个词使用相同的字母大小写,以便‘Word’、‘WORD’、‘word’只有一个大小写,即小写,这也可以减少词汇表大小并消除单词的重复。将遍历每个示例,使用.lower()方法将每段文本转换为小写。
预处理数据后,是时候创建一个词汇表了,它将存储每个独特的单词,并为每个不同的单词分配一些数值(这也称为标记化)。将使用这个词汇表字典进行特征提取。
在处理语言时,机器学习算法不能直接处理原始文本,因此需要一些特征提取技术将文本转换为数值特征的矩阵(或向量)。将通过以下步骤提取特征:
这是一种简单的提取文本特征的方法。根据稀疏表示,可以通过遍历整个数据来创建一个特征矩阵,对于文本示例中的每个单词,将在词汇表中该单词的位置分配1,对于未出现的单词,将分配0。因此,特征矩阵将有行数等于数据中的总句子数,列数等于词汇表中的总单词数。
频率字典跟踪数据中每个单词的正面和负面频率。正面频率是指单词在正面情感句子中出现的次数。负面频率是指单词在负面情感句子中出现的次数。使用频率字典进行特征提取,可以将代表每个句子的行的维度(即在稀疏表示的情况下等于词汇表中的单词数)减少到三个维度。
逻辑回归模拟了具有两种可能结果的分类问题的的概率。它是线性回归模型在分类问题上的扩展。逻辑回归使用sigmoid函数将线性函数(θ^T x)的输出映射到0到1之间,并使用某个阈值(通常为0.5)来区分两个类别,如果h>0.5则是正面类别,如果h<0.5则是负面类别。(本文不详细解释整个逻辑回归)