情感分析作为一个监督学习问题
Rapidminer提供多种方式进行情绪分析。情感分析的一个非常常用和强大的解决方案是基于历史信息或训练集训练一个模型,然后使用它构建一个预测模型。如果在过去某些内容被手动编码成不同的情感值,那么历史信息可能是可用的。如果没有,就必须做一个准备步骤,一个好的样本应该手动分类为积极或消极情绪。这是一次性的努力,拥有一个好的训练集将导致更好的模型和更好的预测。
请将此示例与提供的样例流程一起使用(随本文以zip文件的形式附上)
我们今天将使用的训练集示例如下所示。(也在本文附带的zip文件中)
使用此方法构建模型的过程至少涉及以下操作符
- 读取Excel(读取样例数据)
- 从名义到文本(要指定哪个列是文本列,因为Rapidminer“Process Documents…”操作符只作用于文本数据
- 从数据中处理文件(这是大多数文本处理功能的元过程)
- 标记(这将根据需要将内容标记为单词,n克等)
处理训练文本的实际过程如下所示
在“Process Documents from Data”操作符中,我们将有一个基本过程的步骤,即Tokenize
如果需要,我们稍后将改进此子流程。
“Process Documents from Data”的输出将是标记化的示例集和单词列表。
现在,我们可以使用“标记化示例集”构建交叉验证步骤。我们还需要添加“Set Role”操作符来指定我们的Label(即目标)变量。
这个过程应该是这样的。
要了解更多关于验证的信息,请查看这些链接
在验证操作符内部,我们可以使用任何学习器。对于文本挖掘用例,朴素贝叶斯是非常好的和快速的。你也可以尝试SVM或神经网络,但这会增加解决方案的计算复杂性。
验证步骤提供模型以及模型的性能信息。“mod”提供模型,“ave”提供性能。
在使用朴素贝叶斯的基本例子中,我们的精度混淆矩阵是这样的
当使用支持向量机时,我们的混淆矩阵是这样的
我们将在后面的文章中探讨如何改进文本处理。但现在让我们假设这是一个很好的模型。
现在,为了使用这个预测模型,我们将对实际数据集进行类似的处理,然后将模型应用于标记化的数据集。
我们需要做的另一个步骤是,将单词列表从训练“Process Document from Data”操作符传递给评分“Process Document from Data”
整个过程是这样的。
Apply模型的输出将有三个特殊的列。如下图所示
预测(情绪)-实际类
信心(负)
信心(正面)
然后,您可以在用例中根据需要添加额外的文本处理操作符,以改进您的模型
带有更多预处理的“从数据中处理文档”的详细示例如下所示。
请确保您在评分方面执行相同的步骤以获得正确的结果。使用构建块在这里很有用。
评论
谢谢你的指导。非常有帮助(y)
非常感谢你的这篇文章!
遗憾的是,你在文本中提到的一些链接没有包括在内。我对Rapidminer Studio相当陌生,我试图按照您所描述的过程,使用您的测试数据。我达到了“我们还需要添加“Set Role”操作符来指定我们的Label(即目标)变量”的地步,但遗憾的是,Rapidminer Studio告诉我,我需要选择一个属性名称和一个标签,但这是不可能的,因为我的数据(在将其通过Process Documents from data之后)看起来如下所示。
你对这个问题有什么解决办法吗?你的文章中有没有包含链接的版本?
我非常感谢你的意见!你的帖子太棒了!
亲切的问候
安娜可能
德国多特蒙德
感谢您的回复!问题是可用的属性就是你在上面的图片中看到的那些。当像教程中描述的那样做“设置角色”时,我使用的数据是如图所示的数据。根据我的理解,如果你选择的数据就是图片中的数据,那么选择任何属性都是没有意义的。
这就是为什么我不知道如何“设置角色”,因为它对数据输出没有意义。
所以我在问自己,我的错误在哪里。我已经处理了教程中描述的数据,不知道问题是什么。
欢呼,
安娜可能
德国多特蒙德
欢迎来到RapidMiner社区!
对属性使用Set Role作为“标签”的目的是让算法以后知道如何对数据进行分类。通常你的Label属性可能被命名为“Sentiment”,并且有两个值“Positive”和“Negative”。
而且,在将数据从data传递到Process Documents中以从文本中提取所有新属性之前,通常会在数据集中设置此属性。
也许这里的技巧是将Set Role操作符放在Process Documents from Data操作符之前,看看这次是否可以为标签选择一个属性。
希望有帮助!