在我的统计学硕士学位论文项目过程中,我专注于情感分析的问题。情感分析是自然语言处理的一个应用,目的是识别情感(积极的vs消极的vs中性的),主观性(客观的vs主观的)和情感状态。我在这个特别的项目上工作了9个多月,同时在Tsiamyrtzis和Kakadiaris教授的监督下使用了几种不同的统计方法和技术。
在完成我的论文期间,我有机会学习新的机器学习技术,但也遇到了一些有趣和不明显的问题。在本文中,我将讨论在“情感分析”项目中发现的最有趣的事情,并提供一些在处理类似的自然语言处理问题时你应该记住的提议。
下面的所有提议和实践都是为了开发Datumbox的情感分析服务来启动我们的应用程序接口(API)。
基于词典的技术使用字典来执行实体级的情感分析。该技术使用以其语义取向(极性和强度)注释的单词词典并计算文档极性的分数。通常这种方法得到了高精度且低召回率。
基于学习技术要求通过用标记的示例对分类器进行训练来创建模型。这意味着你必须首先收集一个带有正面的,负面的和中性类的例子的数据集,从样例中提取特征/单词,然后根据这些样例来训练算法。
你会选择使用哪种方法在很大程度上取决于应用程序,域和语言。使用大量词汇的基于词典技术使我们能够取得非常好的结果。尽管如此,他们还是需要使用词典,这在所有语言中都是不存在的。另一方面,基于学习的技术得到了良好的结果,但是他们需要获得数据集并且需要训练。
与上述类似,在执行文本分析应用程序时,您可以选择使用统计技术还是句法。句法技巧可以提供更好的准确性,因为它们利用语言的句法规则来检测动词,形容词和名词。不幸的是,这些技术在很大程度上取决于文档的语言,因此分类器不能移植到其他语言。
另一方面,统计技术具有概率性的背景,并侧重于词类之间的关系。统计技术比Syntactic语言有两个显着的优点:我们可以在其他语言中使用它们,只需要很小的修改就可以使用它们,我们可以使用原始数据集的机器翻译,并取得相当好的结果。使用句法技术显然是不可能的。
在进行情绪分析时,大多数人倾向于忽视中立层面,只关注正面和负面的类别。尽管如此,重要的是要知道,并非所有的句子都有情感。训练分类器只检测2个类别,强制几个中性词被分类为正面或负面的导致过度拟合的情况。
正如Koppel和Schler在他们的论文《中性范例对学习情绪的重要性 》中所指出的,中性类不仅不应该被忽略,而且还可以提高支持向量机(SVM)分类器的整体准确性。我在这个领域的硕士论文的研究也表明,最大熵分类器可以受益于中立类。在接下来的几周内,我计划发表一篇这方面的文章。
你是如何提交文件的呢?你会考虑到这个词的多次出现吗?你会使用什么类型的标记?你会使用n-gram框架吗?如果有,你打算使用多少个关键字组合?
上述问题没有唯一的答案。答案会根据主题、应用程序和语言有很大的不同。因此,请确保您运行几个初步测试,以找到最佳的算法配置。
请记住,如果您使用n-gram框架,n的数值不应该太大。特别是在情感分析中,你会发现使用2-gram或3-gram就足够了,增加关键字组合的数量可能会影响到结果。此外请记住,在情感分析中,文中出现的单词的次数没有太大的差别。通常,算法的二进制的版本(出现次数限制为1)比多次出现使用的更好。
在基于学习的技术中,在训练分类器之前,你必须选择将在模型上使用的单词/特征。你不能只使用标记化算法简单地返回的所有单词,因为它们中有几个不相关的单词。
文本分类中两种常用的特征选择算法是交互信息和卡方检验。每种算法都以不同的方式评估关键字,从而导致不同的选择。另外,每种算法都需要不同的配置,例如统计重要性水平,选定功能的数量等。同样,您必须使用试验和错误来查找在您的项目中效果更好的配置。
确保你能尝试尽可能多的分类方法。请记住,不同的算法提供不同的结果。还请注意,某些分类器可能在特定的功能选择配置下运行得更好。
一般来说,最先进的分类技术如支持向量机(SVM)将胜过更简单的技术如朴素贝叶斯(NaïveBayes)的情况是意料中的。尽管如此,做好看到相反的情况的准备。有时朴素贝叶斯(NaïveBayes)能够得到比更高级的方法相同甚至更好的结果。不要仅仅因为声誉而排除一个分类模型。
没有一个算法在所有主题/域/应用程序中都表现良好。做好看到分类器在一个领域/主题中的准确率可高达90%而其他领域的准确率可低至60%的准备。
例如,您可能会发现,以卡方为特征选择的最大熵是用于餐厅评论的最佳组合,而对于推特(Twitter),具有交互信息特征选择的二值化朴素贝叶斯甚至超过支持向量机(SVM)。做好看到很多奇怪结果的准备。特别是在推特(Twitter)的情况下,避免使用基于词典的技术,因为用户已经知道使用成语,词组和俚语严重影响到了推文的极性。
情感分析的最佳信息来源显然是学术论文。尽管如此,不要指望每一个建议的技术都会对你有效。虽然通常论文可以指引正确的方向,但一些技术只适用于特定的领域。另外请记住,并非所有的论文都具有相同的质量,有些作者夸大或“优化”了他们的结果。不要犯只因为在论文中发现了特定技术就使用的错误。问下你自己,它是否得到了你期望的结果,或者它是否使得你的算法不必要复杂而且难以解释结果。
在训练分类器时要注意你使用的数据集。简单地通过阅读几个最常用的情感分析数据集的例子会让你明白,它们包含了大量的垃圾数据。有些例子太模棱两可,含有不同的情绪和比较,因此它们不适合被用来训练。
尝试使用人类注释的尽可能匹配的数据集,而不是自动地提取的示例。从各种网站上去除结构化的综述也是一个有问题的方法,所以要格外注意你使用的例子。最后要记住,除非你知道其他方面,否则将文件分类为积极的,消极的或中性的概率是相等的。因此在数据集中,每个类别中的例子数目应该是相等的。
构建高精度分类器的最有力的技术之一就是使用集成学习并结合不同分类器的结果。集成学习在3D,2D,红外等可以用相同的对象呈现的计算机视觉领域具有很好的应用前景。因此,使用几种不同的弱分类器可以帮助我们建立强大的高精度分类器。不幸的是,在文本分析中,这并不是那么有效。从不同角度来看问题的选择是有限的,分类器的结果通常是高度相关的。因此这使得集成学习的使用不太实用和不太有用。