人工智能技能落地:情感分析概述_情感_句子
与其他的人工智能技能比较,情绪剖析(Sentiment Analysis)显得有些分外,由于其他的领域都是根据客不雅观的数据来进行剖析和预测,但情绪剖析则带有强烈的个人主不雅观成分。情绪剖析的目标是从文本等分析出人们对付实体及其属性所表达的情绪方向以及不雅观点,这项技能最早的研究始于2003年Nasukawa和Yi两位学者的关于商批驳论的论文。
随着推特等社交媒体以及电商平台的发展而产生大量带有不雅观点的内容,给情绪剖析供应了所需的数据根本。时至今日,情绪识别已经在多个领域被广泛的运用。
例如:
在商品零售领域,用户的评价对付零售商和生产商都是非常主要的反馈信息,通过对海量用户的评价进行情绪剖析,可以量化用户对产品及其竞品的褒贬程度,从而理解用户对付产品的诉求以及自己产品与竞品的比拟利害。在社会舆情领域,通过剖析大众对付社会热点事宜的点评可以有效的节制舆论的走向。在企业舆情方面,利用情绪剖析可以快速理解社会对企业的评价,为企业的计策方案供应决策依据,提升企业在市场中的竞争力。在金融交易领域,剖析交易者对付股票及其他金融衍生品的态度,为行情交易供应赞助依据。目前,绝大多数的人工智能开放平台都具备情绪剖析的能力,如图所示:是玻森中文语义开放平台的情绪剖析功能演示,可以看出除了通用领域的情绪剖析外,还有汽车、厨具、餐饮、新闻和微博几个特定领域的剖析。
玻森中文语义开放平台的情绪剖析示例
那么到底什么是情绪剖析呢?
从自然措辞处理技能的角度来看,情绪剖析的任务是从评论的文本中提取出评论的实体,以及评论者对该实体所表达的情绪方向,自然措辞所有的核心技能问题,例如:词汇语义,指代消解,此役小气,信息抽取,语义剖析等都会在情绪剖析中用到。
因此,情绪剖析被认为是一个自然措辞处理的子任务,我们可以将人们对付某个实体目标的情绪统一用一个五元组的格式来表示:(e,a,s,h,t)
e表示情绪剖析的目标实体,可以是一个详细的实例,也可以是一个类,但必须是唯一的工具。a表示实体e中一个不雅观点详细评价的属性。s表示对实体e的a属性的不雅观点中所包含的情绪,常日来讲会分为正向褒义、负向贬义和中性三种分类。也可以通过回归算法转化为1星到5星的评价等级。h是情绪不雅观点的持有者,有可能是评价者本人,也有可能是其他人。t是不雅观点发布的韶光。以图为例,e是指某餐厅,a为该餐厅的性价比属性,s是对该餐厅的性价比表示了褒义的评价,h为揭橥评论者本人,t是19年7月27日。以是这条评论的情绪剖析可以表示为五元组(某餐厅,性价比,正向褒义,评论者,19年7月27日)。
用户对某餐厅的评价
情绪剖析根据处理文本颗粒度的不同,大致可以分为三个级别的任务,分别是篇章级、句子级和属性级。
我们分别来看一下:
1. 篇章级情绪剖析
篇章级情绪剖析的目标是判断整篇文档表达的是褒义还是贬义的情绪,例如一篇书评,或者对某一个热点时势新闻揭橥的评论,只要待剖析的文本超过了一句话的范畴,即可视为是篇章级的情绪剖析。
对付篇章级的情绪剖析而言有一个条件假设,那便是全篇章所表达的不雅观点仅针对一个单独的实体e,且只包含一个不雅观点持有者h的不雅观点。
这种做法将全体文档视为一个整体,不对篇章中包含的详细实体和实体属性进行研究,使得篇章级的情绪剖析在实际运用中比较局限,无法对一段文本中的多个实体进行单独剖析,对付文本中多个不雅观点持有者的不雅观点也无法辨别。
例如评价的文本是:“我以为这款手机很棒。”
评价者表达的是对手机整体的褒义评价,但如果是:“我以为这款手机拍照功能很不错,但旗子暗记不是很好”这样的句子,在同一个评论中涌现了褒义词又涌现了贬义词,篇章级的剖析是无法分辨出来的,只能将其作为一个整体进行剖析。
不过好在有很多的场景是不须要区分不雅观点评价的实体和不雅观点持有者,例如:在商批驳论的情绪剖析中,可以默认评论的工具是被评论的商品,评论的不雅观点持有者也是评论者本人。
当然,这个也须要看被评论的商品详细是什么东西,如果是亲子旅游这样的旅游做事,那么评论中就很有可能包含一个以上的不雅观点持有者。 在实际事情中,篇章级的情绪剖析无法知足我们对付评价更细致,如果须要对评论进行更精确,更细致的剖析,我们须要拆分篇章中的每一句话,这便是句子级的情绪剖析研究的问题。
2. 句子级情绪剖析
与篇章级的情绪剖析类似,句子级的情绪剖析任务是判断一个句子表达的是褒义还是贬义的情绪,虽然颗粒度到了句子层级,但是句子级剖析与篇章级存在同样的条件假设是,那便是一个句子只表达了一个不雅观点和一种情绪,并且只有一个不雅观点持有人。
如果一个句子中包含了两种以上的评价或多个不雅观点持有人的不雅观点,句子级的剖析是无法分辨的。好在现实生活中,绝大多数的句子都只表达了一种情绪。
既然句子级的情绪剖析在局限性上与篇章级是一样的,那么进行句子级的情绪剖析意义何在呢?
关于这个问题,须要先阐明一下措辞学上主不雅观句与客不雅观句的分别。在我们日常用语当中,根据语句中是否带有说话人的主不雅观情绪可以将句子分为主不雅观句和客不雅观句,例如:“我喜好这款新手机。”便是一个主不雅观句,表达了说话民气坎的情绪或不雅观点,而:“这个APP昨天更新了新功能。”则是一个客不雅观句,陈述的是一个客不雅观事实性信息,并不包含说话民气坎的主不雅观情绪。
通过分辨一个句子是否是主不雅观句,可以帮助我们过滤掉一部分不含情绪的句子,让数据处理更有效率。
但是在实操过程中,我们会创造这样的分类方法彷佛并不是特殊准确,由于一个主不雅观句也可能没有表达任何的情绪信息,知识表达了期望或者预测。例如:“我以为他现在已经在回家的路上了。”这句话是一个主不雅观句,表达了说话人的预测,但是并没有表达出任何的情绪。
而客不雅观句也有可能包含情绪信息,表明说话者并不肯望这个事实发生,例如:“昨天刚买的新车就被人刮花了。”这句话是一个客不雅观句,但结合知识我们会创造,这句话中实在是包含了说话人的负面情绪。
以是,仅仅对句子进行主客不雅观的分类还不敷以达到对数据进行过滤的哀求,我们须要的是对句子是否含有情绪信息进行分类。如果一个句子直接表达或隐含了情绪信息,则认为这个句子是含有情绪不雅观点的,对付不含情绪不雅观点的句子则可以进行过滤。
目前对付句子是否含有情绪信息的分类技能大多都是采取有监督的学习算法,这种方法须要大量的人工标注数据,基于句子特色来对句子进行分类。
总之,我们可以将句子级的情绪剖析分成两步:
第一步是判断待剖析的句子是否含有不雅观点信息;第二步则是针对这些含有不雅观点信息的句子进行情绪剖析,创造个中情绪的方向性,判断是褒义还是贬义。关于剖析情绪方向性的方法与篇章级类似,依然是可以采取监督学习或根据情绪词词典的方法来处理,我们会在后续的小节详细讲解。句子级的情绪剖析相较于篇章级而言,颗粒度更加细分,但同样只能判断整体的情绪,忽略了对付被评价实体的属性,同时它也无法判断比较型的情绪不雅观点。
例如:“A产品的用户体验比B产品好多了。”对付这样一句话中表达了多个情绪的句子,我们不能将其大略的归类为褒义或贬义的情绪,而是须要更进一步的细化颗粒度,对评价实体的属性进行抽取,并将属性与干系实体之间进行关联,这便是属性级情绪剖析。
3. 属性级情绪剖析
上文先容的篇章级和句子级的情绪剖析,都无法确切的知道评价者喜好和不喜好的详细是什么东西,同时也无法区分对某一个被评价实体的A属性持褒义方向,对B属性却持贬义方向的情形。但在实际的措辞表达中,一个句子中可能包含了多个不同情绪方向的不雅观点。
例如:“我喜好这家餐厅的装修风格,但菜的味道却很一样平常。”类似于这样的句子,很难通过篇章级和句子级的情绪剖析理解到工具的属性层面。
为了在句子级剖析的根本上更加细化,我们须要从文本中创造或抽取评价的工具主体信息,并根据文本的高下文判断评价者针对每一个属性所表达的是褒义还是贬义的情绪,这种就称之为属性级的情绪剖析。
属性级的情绪剖析关注的是被评价实体及其属性,包括评价者以及评价韶光,目标是挖掘与创造评论在实体及其属性上的不雅观点信息,使之能够天生有关目标实体及其属性完全的五元组不雅观点择要。
详细到技能层面来看,属性级的情绪剖析可以分为以下6个步骤:
实体抽取和消解:抽取文档中所有涉及到实体的表达语句,并利用聚类方法将同一个实体的表达聚为一类,每一类都对应唯一的一个实体。属性抽取和消解:抽取文档中所有实体的属性,并把这些属性进行聚类,每个属性种别对应工具实体唯一的一个属性。不雅观点持有者抽取和消解:抽取文档中不雅观点的持有者,并将持有者进行聚类,每个不雅观点持有者种别对应唯一的一个不雅观点持有者。韶光抽取和标准化:抽取每个不雅观点的发布韶光,并把不同韶光的格式进行标准化。属性的情绪分类和回归:对详细的属性进行情绪剖析,判断它是褒义、贬义还是中脾气感,或者通过回归算法给属性授予一个数值化的情绪得分,例如1至5分。天生不雅观点五元组:利用任务1-6的结果布局文档中所有不雅观点的五元组。关于文本中的实体抽取和指代消解问题,我们已经在知识图谱的干系章节中做了先容,这里就不再赘述。针对篇章级、句子级、属性级这三种类型的情绪剖析任务,人们做了大量的研究并提出了很多分类的方法,这些方法大致可以分为基于词典和基于机器学习两种,下面我们进行详细的讲解。
基于词典的情绪剖析
做情绪剖析离不开情绪词,情绪词是承载情绪信息最基本的单元,除了基本的词之外,一些包含了情绪含义的短语和针言我们也将其统称为情绪词。基于情绪词典的情绪剖析方法,紧张是基于一个包含了已标注的情绪词和短语的词典,在这个词典中包括了情绪词的情绪方向以及情绪强度,一样平常将褒义的情绪标注为正数,贬义的情绪标注为负数。
详细的步骤如图所示,首先将待剖析的文本前辈行分词,并对分词后的结果做去除停用词和无用词等文本数据的预处理。然后将分词的结果与情绪词典中的词进行匹配,并根据词典标注的情绪分对文本进行加法打算,终极的打算结果如果为正则是褒义情绪,如果为负则是贬义情绪,如果为0或情绪方向不明显的得分则为中脾气感或无情绪。
基于词典的情绪剖析流程
情绪词典是全体剖析流程的核心,情绪词标注数据的好坏直接决定了情绪分类的结果,在这方面可以直接采取已有的开源情绪词典。例如:BosonNLP基于微博、新闻、论坛等数据来源构建的情绪词典,知网(Hownet)情绪词典,台湾大学简体中文情绪极性词典(NTSUSD),snownlp框架的词典等,同时还可以利用哈工大整理的同义词词林拓展词典作为赞助,通过这个词典可以找到情绪词的同义词,拓展情绪词典的范围。
当然,我们也可以根据业务的须要来自己演习情绪词典,目前主流的情绪词词典有三种构建方法:人工方法、基于字典的方法和基于语料库的方法。
对付情绪词的情绪赋值,最大略的方法是将所有的褒义情绪词赋值为+1,贬义的情绪词赋值为-1,最后进行相加得出情绪剖析的结果。但是这种赋值办法显然不符合实际的需求,在实际的措辞表达中,存在着非常多的表达办法可以改变情绪的强度,最范例的便是程度副词。
程度副词分为两种:
一种是可以加强情绪词原来的情绪,这种称之为情绪加强词,例如“很好”相较于“好”的情绪程度会更强烈,“非常好”又比“很好”更强。其余一种是情绪减弱词,例如“没那么好”虽然也是褒义方向,但情绪强度相较于“好”会弱很多。如果涌现了增强词,则须要在原来的赋值根本上增加情绪得分,如果涌现了减弱词则须要减少相应的情绪得分。
另一种须要把稳的情形是否定词,否定词的涌现一样平常会改变情绪词原来的情绪方向,变为相反的情绪,例如“不好”便是在“好”前面加上了否定词“不”,使之变成了贬义词。
早期的研究会将否定词搭配的情绪词直接取相反数,即如果“好”的情绪方向是+1,那么“不好”的情绪方向便是-1。但是这种大略粗暴的规则无法对应上真实的表达情绪,例如“太好”是一个比“好”褒义方向更强的词,如果“好”的值为+1,那么“太好”可以赋值为+3,加上否定词的“不太好”变成-3则显然有点过于贬义了,将其赋值为-1或者-0.5可能更得当。
基于这种情形,我们可以对否定词也添加上程度的赋值而不是大略的取相反数,对付表达强烈否定的词例如“不那么”赋值为±4。当碰着与褒义词的组合时褒义词则取负数,与贬义词的组合则取正数,例如贬义词“难听”的赋值是-3,加上否定词变成“不那么难听”的情绪得分就会是(-3+4=1)。
第三种须要把稳的情形是条件词,如果一个条件词涌如今句子中,则这个句子很可能不适宜用来做情绪剖析,例如“如果我来日诰日可以去旅行,那么我一定会非常愉快。”,在这句话中有明显的褒义情绪词,但是由于存在条件词“如果”,使得这个句子的并没有表达不雅观点持有者的真实情绪,而是一种假设。
除了条件句之外,还有一种措辞表达也是须要在数据预处理阶段进行打消的,那便是疑问句。
例如“这个餐厅真的有你说的那么好吗?”,虽然句子中涌现了很强烈的褒义情绪词“那么好”,但依然不能将它分类为褒义句。疑问句常日会有固定的结尾词,例如“……吗?”或者“……么?”,但是也有的疑问句会省略掉结尾词,直策应用标点符号“?”,例如“你本日是不是不愉快?”,这个句子中含有否定词和褒义词组成的“不愉快”,但不能将其分类为贬义情绪。
末了一种须要把稳的情形是迁移转变词,范例词是“但是”,涌如今迁移转变词之前的情绪方向常日与迁移转变词之后的情绪方向相反,例如:“我上次在这家酒店的住宿体验非常好,但是这次却让我很失落望。”在这个迁移转变句中,迁移转变词之前的“非常好”是一个很强的褒义词,但真实的情绪表达却是迁移转变词之后的“很失落望”,终极该当将其分类为贬义情绪。
当然,也存在涌现了迁移转变词,但语句本身的情绪并没有发生改变的情形,例如“你这次考试比上次有了很大的进步,但是我以为你可以做得更好”,这里的迁移转变词没有迁移转变含义,而是一种递进含义。
在实际操作中,我们以是须要先判断迁移转变句真实的情绪表达到底是哪个,才能进行精确的剖析打算。
构建情绪词典是一件比较耗费人工的事情,除了上述须要把稳的问题外,还存在精准度不高,新词和网络用语难以快速收录进词典等问题,同时基于词典的剖析方法也存在很多的局限性。
例如一个句子可能涌现了情绪词,但并没有表达情绪。或者一个句子不含任何情绪词,但却蕴含了说话人的情绪。以及部分情绪词的含义会随着高下文语境的变革而变革的问题,例如“精明”这个词可以作为褒义词称颂他人,也可以作为贬义词批评他人。
只管目前存在诸多问题,但基于字典的情绪剖析方法也有着不可取代的上风,那便是这种剖析方法通用性较强,大多数情形下无需特殊的领域数据标注就可以剖析文本所表达的情绪,对付通用领域的情绪剖析可以将其作为首选的方案。
基于机器学习的情绪识别
我们在机器学习算法的章节先容过很多分类算法,例如逻辑回归、朴素贝叶斯、KNN等,这些算法都可以用于情绪识别。
详细的做法与机器学习一样须要分为两个步骤:第一步是根据演习数据构建算法模型;第二步是将测试数据输入到算法模型中输出对应的结果,接下来做详细的讲解。
首先,我们须要准备一些演习用的文本数据,并人工给这些数据做好情绪分类的标注。常日的做法下:如果是褒义和贬义的两分类,则褒义标注为1,贬义标注为0,如果是褒义、贬义和中性三分类,则褒义标注为1,中性标注为0,贬义标注为-1。
在这一环节中如果用纯人工方法来进行标注,可能会由于个人主不雅观成分对标注的结果造成一定影响,为了避免人的成分带来的影响,也为了提高标注的效率,有一些其他取巧的方法来对数据进行自动标注。
比如:在电商领域中,商品的评论除了文本数据之外常日还会带有一个5星的等级评分,我们可以根据用户的5星评分作为标注依据,如果是1-2星则标注为贬义,如果是3星标注为中性,4-5星标注为褒义。
又比如:在社区领域中,很多社区会对帖子有赞和踩的功能,这一数据也可以作为情绪标注的参考依据。
第二步是将标注好情绪方向的文本进行分词,并进行数据的预处理,前文已经对分词有了很多的先容,这里就不再过多的赘述。
第三步是从分词的结果中标注出具备情绪特色的词,这里特殊说一下,如果是对情绪进行分类,可以参考情绪词典进行标注,也可以采取TF-IDF算法自动抽取出文档的特色词进行标注。如果剖析的是某个特定领域的,还须要标注出特定领域的词,例如做商批驳价的情绪剖析,须要标注出商品名称,品类名称,属性名称等。
第四步根据分词统计词频构建词袋模型,形成特色词矩阵,如表所示。在这一步可以根据业务须要给每个特色词授予权重,并通过词频乘以权重得到特色词分数。
末了一步便是根据分类算法,将特色词矩阵作为输入数据,得到终极的分类模型。
当演习好分类模型之后,就可以对测试集进行分类了,详细的流程与建模流程类似,先对测试的文本数据进行分词并做数据预处理,然后根据特色词矩阵抽取测试文本的特色词构建词袋矩阵,并将词袋矩阵的词频数据作为输入数据代入之前演习好的模型进行分类,得到分类的结果。
采取基于机器学习的方法进行情绪剖析有以下几个不敷之处:
第一是每一个运用领域之间的措辞描述差异导致了演习得到的分类模型不能运用与其他的领域,须要单独构建。第二是终极的分类效果取决于演习文本的选择以及精确的情绪标注,而人对付情绪的理解带有主不雅观性,如果标注涌现偏差就会对终极的结果产生影响。除了基于词典和基于机器学习的方法,也有一些学者将两者结合起来利用,填补两种方法的缺陷,比单独采取一种方法的分类效果要更好。
其余,也有学者考试测验利用基于LSTM等深度学习的方法对情绪进行剖析,相信在未来,情绪剖析会运用在更多的产品中,帮助我们更好的理解用户需求,提升用户利用智能产品的体验。
情绪识别的困难与寻衅
随着深度神经网络等算法的运用,情绪剖析的研究方向已经有了非常大的进展,但依然存在着一些难题是目前尚未办理的,在实操过程中需特殊把稳以下几种类型数据:
(1)颜笔墨、emoji和表情包
互联网上的互换不仅仅只是通过纯挚的笔墨来进行,大量的情绪表达是通过颜笔墨或表情包来实现的,例如经典的表示笑脸的颜笔墨“:D”,这类文本表达无法与高下文形成联系,以是很难判断他们评价的实体工具是什么。
不过好在这类数据本身就代表了非常强烈的情绪方向,在篇章级和句子级的颗粒度对情绪进行剖析,我们可以将特定的颜笔墨作为一种分外的词组构建成情绪字典,并人工进行情绪分的赋值,对付emoji表情也可以将标准的emoji编码编入情绪字典。而对付表情包的识别则是一个打算机视觉的问题,目前还没有学者在这个领域方向展开研究。
(2)讽刺句
讽刺语句是一种比较分外的情绪表达语句,讽刺语句的措辞组织形式从字面上来看可能是褒义,但实际的含义却是贬义,或者字面是贬义但实际却是褒义。
例如:“太棒了!
这家外卖治好了我多年的便秘!
”
讽刺句在情绪剖析中是非常难以处理的,由于要分辨这类语句的含义,常日来讲须要结合知识或者是干系的背景知识才可以理解,仅仅通过高下文是无法精确解读讽刺句的含义的。在对商品的评价语中,讽刺句并不常见,但在舆论或社会新闻的评价中,讽刺句则比较常见,识别出讽刺句是情绪剖析剖析方向的一个研究难点。
(3)比较句
比较语句也是一种分外的情绪表达句,例如:“我以为这件衣服很适宜我,但我更喜好那一件。”
这类比较语句中常日存在着两个以上的实体或属性,如果只是在句子级的颗粒度下可以辨别出这句话是含有褒义的情绪,但在属性级的颗粒度下,以情绪五元组来定义的情绪无法将一个实体作为另一个实体的属性来进行判断,很难分辨不雅观点持有者到底是在对哪一个实体或属性表达情绪。而这类语句在商品的评论中有非常常见,须要特殊把稳。
(4)感情分类
目前对付情绪的剖析依然处于低级阶段,仅仅只是对情绪做了褒义、贬义、中性三种划分,但现实生活中的感情远远不止这三种类型,例如:在生理学领域中,著名的生理学家罗伯特·普拉切克(Robert Plutchik)提出的感情轮包含了8种基本感情,并且每种感情又划分了不同的感情强度等级,8种感情还可以相互结合形成更多的感情,如图所示。
普拉切克的感情轮
感情轮在用户体验设计上被广泛的运用,很多情绪化设计都是基于感情轮进行的。但是在人工智能领域,将感情进行多分类比情绪剖析的三分类任务要难得多,目前大多数分类方法的结果准确性都不到50%。
这是由于感情本身包含了太多的种别,而且不同的种别之间又可能具有相似性,一个感情词在不同的语境下有可能表达的是不同的感情种别,算法很难对其进行分类。纵然是人工对文本进行感情种别标注也每每效果不佳,由于感情是非常主不雅观性的,不同的人对不同的文本可能产生不同的理解,这使得人工标注感情类比的过程非常困难。
如何让机器可以理解真实的感情,目前还是一个未能占领的难题。
本文由 @黄瀚星 原创发布于大家都是产品经理。未经容许,禁止转载
题图来自Unsplash,基于CC0协议
本文系作者个人观点,不代表本站立场,转载请注明出处!