创建管道以使用NLP执行情感分析
总览
情感分析所需的每个基本基础和构建块。
我使用了一种简单的方法来解释所有基本概念,以便即使是初学者也可以全面了解所有概念。
主题:预处理文本,词汇语料库,特征提取(稀疏表示和频率字典),用于情感分析的Logistic回归模型。
介绍
情感分析是一种受监督的
机器学习技术,用于分析和预测文本(正面或负面)中情绪的极性。
企业和公司通常使用它来了解用户的体验,情绪,反应等,以便他们可以提高产品和服务的质量和灵活性。
现在,让我们深入了解机器学习工程师如何使用这种情感分析技术来检查各种文本的情感。
收集数据
数据是每个机器学习问题的核心。在机器学习方面,没有数据就无法解决问题,即使有句老话:
“更多数据,更好!“
有这么多开放数据源可用于训练ML模型,因此您可以自己收集数据或使用开放数据集来训练我们的算法,这是个人选择。
基于文本的数据集通常以JSON或CSV格式分发,因此要使用它们,我们可以将数据提取到python列表或字典/数据框架对象中。
数据应以60%20%20%或70%15%15%的常见方式分为训练集,验证集和测试集。
可以从此处下载流行的Twitter数据集。
管道
每个机器学习任务都应该有一条管道。管道用于将您的机器学习工作流程拆分为独立的,可重复使用的模块化部分,然后将这些部分管道化在一起,以不断提高模型的准确性并获得成功的算法。
我们将遵循针对问题的基本管道结构,以便读者可以轻松了解工作流中使用的管道的每个部分。我们的管道将包括以下步骤:
预处理文本和构建词汇表:删除没有任何情感价值的不需要的文本(停用词),标点符号,URL,句柄等。然后将独特的预处理词添加到词汇表中。
特征提取:遍历每个数据示例以使用频率字典提取特征,最后创建一个特征矩阵。
训练模型:然后,我们将使用我们的特征矩阵来训练Logistic回归模型,以便将该模型用于预测情绪。
测试模型:使用我们训练有素的模型从从未见过的数据中获得预测。
预处理数据
这是我们开发流程中的重要一步。预处理文本可用于从没有任何情感价值的文本数据中删除单词和标点符号,因为预处理文本可显着缩短训练时间,因为我们的数据量将减少,并仅限于具有某些情感价值的单词。预处理包括处理-
停用词
句子中没有任何语义或情感价值/权重的单词。例如:和,是,你,等等。
如何处理它们?我们将创建一个列表,其中包括所有可能的停用词,例如
[“我们自己”,“她自己”,“之间”,“自己”,“但是”,“再次”,“那里”,“大约”,“一次”,“正在”,“不在”,“非常”,“有”,“有”,“他们”,“自己”,“一个”,“是”,“一些”,“为”,“做”,“其”,“您的”,“这样”,“进入” ,“ of”,“ most”,“ selfself”,“ other”,“ off”,“ is”,“ s”,“ am”,“ or”,“ who”,“ as”,“ from”,“他”,“每个”,“该”,“自己”,“直到”,“下面”,“是”,“我们”,“这些”,“您的”,“他的”,“通过”,“不” ,“不”,“我”,“被”,“她”,“更多”,“他自己”,“此”,“向下”,“应该”,“我们的”,“他们的”,“同时”,“上方”,“两者”,“向上”,“至”,“我们的”,“已经”,“她”,“全部”,“不”,“何时”,“在”,“任何”,“之前” ,“它们”,“相同”,“和”,“被”,“具有”,“在”,“将”,“在”,“做”,“自己”,“然后”,“那个”,“因为”,“什么”,“上方”,“为什么”,“如此”,“可以”,“没有”,“不”,“现在”,“下面”,“他”,“您”,“她自己” ,“有”,“只是”,“在哪里”,“太”,“仅”,“我自己”,“其中”,“那些”'i','after','few','whom','t','being','if','theirs','my','against','a','by','doing ','它','如何','进一步','是','这里','比']
现在,我们将遍历数据中的每个示例,并从停用词列表中的数据中删除每个词。
标点符号
标点符号是我们用来强调文字的符号。例如:,@,#,$等
如何处理它们?我们将像处理停用词一样处理它们,我们将创建它们的列表,并使用该列表处理每个示例。
网址和句柄
URL是以Http协议声明开头的链接,例如。“ https://…。” 和句柄用于在社交媒体中提及人,例如。“ @user”都具有无效的情感意义。
如何处理它们?通过创建一些函数'process_handles_urls()'对其进行处理,该函数将获取我们的火车数据,并从每个示例中消除以'https://'或'@'开头的单词。
抽干
词干是将单词还原为基本词根的过程。例如,“转弯”是转弯,转弯,转弯等的主词。由于主词为其所有带后缀的词提供相同的情感价值,因此,我们可以将每个词缩减为基本词干,从而减少词汇量和训练时间也一样
如何处理它们?通过创建一些函数“ do_stemming()”来处理它们,该函数将获取数据并提取每个示例的词。
下壳体
我们应该对数据中的每个单词使用相似的字母大小写,以便表示“单词”,“单词”,“单词”时只能有一个大小写,即小写,这也有助于减小词汇量并消除重复的话。
如何处理它们?使用.lower()方法遍历每个示例,以将每段文本转换为小写。
词汇语料库
在对数据进行预处理之后,是时候创建一个词汇表,该词汇表将存储每个唯一的单词并为每个不同的单词分配一些数值(这也称为标记化)。
我们将使用此词汇表词典进行特征提取。
情绪分析
特征提取
在使用语言处理时,问题之一是机器学习算法无法直接在原始文本上运行。因此,我们需要一些特征提取技术来将文本转换为数字特征的矩阵(或向量)。
让我们来看一些正面和负面的推文示例:
情绪分析
注意:上面的示例未处理,因此在继续进行下一步之前,我们将先对其进行处理。
稀疏表示
这是提取文本特征的幼稚方法。根据稀疏表示,我们可以通过遍历整个数据来创建特征矩阵,对于每个单词,在文本示例中,我们将在词汇表中该单词的位置分配1,对于非出现单词,我们将将分配0。因此,我们的特征矩阵将在数据中具有row = total句子,而词汇表中具有column = total单词。
情绪分析
缺点:
训练时间长
预测时间长
频率字典
频率字典可跟踪数据中每个单词的正负频率。
情绪分析
正频率:该 次发生在积极情感句词数。
负频率:该 次发生在与负面情绪的句子单词数。
使用频率字典进行特征提取:
使用频率字典进行特征提取,我们可以将代表特征矩阵每个句子的每一行的维数减小(即等于稀疏表示时词汇中的单词数)到三个维。
使用以下公式,通过特征字典提取文本数据的特征:
该过程几乎如下所示:
现在,我们的推文具有3维特征向量,如下所示:
Xm = [1
现在,我们将遍历每个示例以提取每个示例的特征,然后将使用这些特征创建可用于训练的特征矩阵。最后,我们有一些特征矩阵,例如–
Logistic回归用于情感分析
Logistic回归模型对具有两个可能结果的分类问题的概率进行建模。它是用于分类问题的线性回归模型的扩展。
Logistic回归使用S形函数来映射我们的线性函数的输出(θ ? x)的0至1之间与一些阈值(通常为0.5)两个类,使得如果h> 0.5它是一个正类,以及如果h之间进行区分<0.5是阴性类别。(解释整个逻辑回归不在本文讨论范围之内)
训练情绪分析模型
我们的模型训练将遵循以下步骤:
我们初始化可在S型曲面中使用的参数θ,然后计算用于更新θ的梯度,然后计算成本。我们将继续重复这些步骤,直到成本最小化/收敛。
测试我们的模型
为了测试我们的模型,我们将使用验证集并遵循以下步骤:
将数据拆分为X_validation(文本)和Y_validation(情感)。
对X_validation使用特征提取将文本转换为数字特征。
找到矢量h(= S形(θ ? X)),用于在验证组中的每个的文本。
与阈值比较时,映射一些函数以获取实际的类。
找到我们预测的准确性。
概要
很高兴您能做到到这里!如果您是自然语言处理的初学者,我希望我可以让您瞥见幕后工作原理,并让您能够进一步涵盖更复杂和高级的主题,如果您是从业者,我希望能够重新整理您的基础知识。
自然语言处理是AI的广阔领域,其应用程序用于聊天机器人,情感分析,机器翻译,自动更正等各种范例中,而我仅涵盖了这一主题,因此如果您想在此处学习更多,是各种电子学习平台以及可自由分发的文章,论文等,它们对您进一步发展很有用。
题库