情感分析的方法有哪些,情感处理策略有哪些,情感分析的方法有哪些,情感处理策略是什么

  情感分析的方法有哪些,情感处理策略有哪些,情感分析的方法有哪些,情感处理策略是什么

  转载自:http://datartisan.com/article/detail/48.html

  情感分析是自然语言处理(NLP)方法的一个常见应用,尤其是在旨在提取文本情感内容的分类方法中。这样,情感分析就可以看作是利用一些情感得分指标对定性数据进行量化的方法。虽然情感在很大程度上是主观的,但是情感量化分析有很多有用的做法,比如企业分析消费者对产品的反馈,或者检测网络评论中的差评。最简单的情感分析方法就是利用词语的正负属性来判断。句子中的每个单词都有分数,乐观的单词得1分,悲观的单词得-1分。然后我们将句子中所有单词的得分相加,得到一个最终的情感总分。显然,这种方法有许多局限性,其中最重要的是它忽略了上下文信息。例如,在这个简单的模型中,因为“不好”的分数是-1,而“好”的分数是1,所以短语“不好”将被归类为中性短语。虽然“不好”这个短语中包含了“好”这个词,但人们还是倾向于将其归类为一个悲观的短语。另一种常见的方法是将文本视为“单词包”。让我们将每个文本视为一个1xN向量,其中n代表文本中的字数。向量中的每一列都是一个词,它对应的值就是这个词的频率。例如,短语“一袋袋的单词”可以编码为[2,2,1]。这些数据可以应用于机器学习分类算法(如逻辑回归或支持向量机)来预测未知数据的情绪状态。应该注意,这种监督学习的方法需要使用已知情绪条件的数据作为训练集。虽然这种方法改进了以前的模型,但它仍然忽略了上下文信息和数据集的大小。

  Word2Vec和Doc2Vec最近Google开发了一种叫做Word2Vec的方法,可以在捕捉上下文信息的同时压缩数据规模。Word2Vec实际上是两种不同的方法:连续单词包(CBOW)和Skip-gram。CBOW的目标是根据上下文预测当前单词的概率。Skip-gram正好相反:根据当前单词预测上下文的概率(如图1)。这两种方法都使用人工神经网络作为它们的分类算法。一开始,每个单词都是一个随机的N维向量。经过训练后,该算法使用CBOW或Skip-gram来获得每个单词的最优向量。

  现在这些词向量已经捕捉到了上下文的信息。我们可以用基本的代数公式来寻找单词之间的关系(比如“国王”——“男人”,“女人”=“女王”)。这些词向量可以用来代替词袋预测未知数据的情绪状态。该模型的优点是不仅考虑了上下文信息,还压缩了数据量(通常词汇量在300字左右,而不是之前模型的10万字)。因为神经网络可以为我们提取这些特征的信息,所以我们只需要做一点点手工工作。但是由于文本的长度不同,我们可能需要使用所有词向量的平均值作为分类算法的输入值,从而对整个文本文档进行分类。

  然而,即使上述模型对词向量进行了平均,我们仍然忽略了词序对情感分析的影响。Quoc Le和Tomas Mikolov作为处理变长文本的总结性方法,提出了Doc2Vec方法。除了增加一个段落向量,这个方法几乎等同于Word2Vec。和Word2Vec一样,这个模型有两种方法:分布式内存(DM)和分布式单词包(DBOW)。DM试图预测给定上下文和段落向量的单词的概率。在句子或文档的训练期间,段落ID保持不变,并且共享相同的段落向量。DBOW只给定段落向量,预测段落中一组随机单词的概率。(如图2所示)

  一旦经过训练,这些段落向量就可以被合并到情感分类器中,而无需添加单词。这是目前最先进的方法。当用于对IMDB电影评论数据进行分类时,该模型的错误率仅为7.42%。当然,如果不能真正落实,一切都是空谈。幸运的是,genism(Python软件库)中的Word2Vec和Doc2Vec的优化版本是可用的。

  Python实现的Word2Vec的例子在这一节,我们展示了人们如何在情感分类项目中使用词向量。我们可以在Anaconda发行版中找到genism库,也可以通过pip安装genism库。从这里,您可以训练自己的语料库(一个文本数据集)的单词向量,或者从文本格式或二进制格式文件中导入训练好的单词向量。

  我发现利用谷歌预先训练好的词向量数据来建立模型非常有用,这些词向量数据是基于谷歌新闻数据(大约1000亿个词)训练出来的。请注意,解压缩后该文件的大小为3.5 GB。使用谷歌的单词向量,我们可以看到一些有趣的单词之间的关系:有趣的是,我们可以找到语法关系,例如识别最高级或单词形状的单词:“最大”-“大”“小”=“小”-“吃”-“吃”-“说话”=“说话”。从上面的例子可以看出,Word2Vec可以识别重要的单词。这使得它在许多NLP项目和我们的情感分析案例中非常有用。在将其应用于情感分析案例之前,我们先测试一下Word2Vec对单词的分类能力。我们将使用三个分类样本集:食物、运动和天气词汇集,我们可以从魔法学习下载。因为这是一个300维的向量,为了在2D视图中可视化,我们需要使用Scikit-Learn中的降维算法t-SNE来处理源数据。首先我们要得到如下图所示的词向量:然后我们用TSNE和matplotlib对分类结果进行可视化:可视化结果如下图所示:从上图可以看出,Word2Vec很好的分离了不相关的词,并进行聚类。

  表情符号推文的情绪分析现在我们将分析表情符号推文的情绪情况。我们使用表情符号来给我们的数据添加模糊标签。笑脸(:-))表示乐观,皱眉标签(:-())表示悲观。总共40万条推文,分为乐观和悲观数据。我们从这两组数据中随机选取样本,以8: 2的比例构建训练集和测试集。然后,我们为训练集数据建立一个Word2Vec模型,其中分类器的输入值是tweets中所有单词向量的加权平均值。我们可以使用Scikit-Learn来建立许多机器学习模型。首先,我们导入数据并构建Word2Vec模型:接下来,为了使用下面的函数获得tweets中所有单词向量的平均值,我们必须构建单词向量作为输入文本。调整数据集的维度是数据标准化的一部分。我们通常将数据集转化为均值为零的标致的大衣分布,即大于均值的值表示乐观,反之亦然。为了使模型更加有效,许多机器学习模型需要对数据集的维度进行预处理,尤其是文本分类器等变量较多的模型。最后,我们需要建立测试集向量并将其标准化。接下来,我们想通过计算测试集的预测精度和ROC曲线来验证分类器的有效性。ROC曲线衡量模型参数调整时真阳性率和假阳性率的变化。在我们的例子中,我们调整分类器模型截断阈值的概率。一般来说,ROC曲线下面积(AUC)越大,模型的表现越好。你可以在这里找到更多关于ROC曲线的信息(https://en . Wikipedia . org/wiki/Receiver _ operating _ th dys)。在这种情况下,我们使用逻辑回归的随机梯度下降方法作为分类器算法。然后利用matplotlib和度量库构建ROC曲线。ROC曲线如下图所示:在不创建任何类型的特征和最少的文本预处理的情况下,Scikit-Learn构建的简单线性模型的预测准确率为73%。有趣的是,删除标点符号会影响预测精度,这说明Word2Vec模型可以提取文档中符号所包含的信息。对单个单词进行处理,训练更长时间,做更多的数据预处理,调整模型的参数,都可以提高预测精度。我发现使用人工神经网络(笑铅笔S)模型可以提高5%的预测精度。需要注意的是,Scikit-Learn并没有为爱笑的铅笔分类器提供实现工具,所以我利用了自己的自定义库:分类结果的准确率为77%。对于任何机器学习项目来说,选择正确的模型通常是一种艺术行为,而不是科学行为。如果你想用我的自定义库,可以在我的github主页找到,但是这个库很乱,没有定期维护!如果你想贡献自己,请随意复制我的项目。

  用Doc2Vec分析电影评论数据,用词向量均值分析推文是有效的。这是因为推文通常只有十几个字,所以即使被平均了,仍然可以保持相关特征。一旦我们开始分析段落数据,如果我们忽略了上下文和语序的信息,我们就会丢失很多重要的信息。在这种情况下,最好使用Doc2Vec来创建输入信息。作为一个例子,我们将使用IMDB电影评论数据来测试Doc2Vec在情感分析中的有效性。这个数据集包含25,000条乐观的电影评论,25,000条悲观的评论和50,000条尚未标记的评论。首先,我们为未标记的注释数据构建了一个Doc2Vec模型:这段代码创建了一个LabeledSentence类型的对象。接下来我们举例说明Doc2Vec的两个模型,DM和DBOW。Gensim的文档建议多次训练数据集,并在每次训练中调整学习率或打乱输入信息的顺序。我们从Doc2Vec模型中获得电影评论向量。现在,我们将使用评论向量来构建分类器模型。我们将在sklearn中再次使用SGDClassifier。该模型的预测准确率为86%,我们还可以用下面的代码绘制ROC曲线:原论文声称,与简单的logistic回归模型相比,他们的50个节点的神经网络分类器可以获得更高的预测精度。有趣的是,我们在这里没有看到这样的改善。这个模型的预测准确率是85%,我们并没有看到他们宣称的7.42%的错误率。原因可能有几个:我们对训练集和测试集的训练还不够,他们的Doc2Vec和爱笑的铅笔实现方法不一样等等。因为论文中没有详细的解释,我们很难确切知道是哪方面的原因。无论如何,在没有太多数据预处理和变量选择的情况下,我们仍然达到了86%的预测准确率。并且不需要复杂的卷积和树形图数据库。

  结论希望你已经看到了Word2Vec和Doc2Vec的实用性和便捷性。通过一个非常简单的算法,我们可以得到丰富的单词向量和段落向量,这些向量数据可以应用到各种NLP应用中。更重要的是,谷歌开放了自己的预训练词向量结果,这些词向量结果是基于他人难以获取的大数据集进行训练的。如果你想在大数据集里训练你的向量结果,已经有一个基于Apache Spark的Word2Vec实现工具。(https://spark.apache.org/mllib/)

  原文链接:3359 district data labs . silverback . com/modern-methods-for-sentient-analysis原文作者:危机中的月亮和月亮车尔尼翻译:Fibears

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: