libsvmjava情感分类_⾃然语⾔处理系列篇——情感分类
情感分类是对带有感情⾊彩的主观性⽂本进⾏分析、推理的过程,即分析对说话⼈的态度,倾向正⾯,还是反⾯。它与传统的⽂本主题分类⼜不相同,传统主题分类是分析⽂本讨论的客观内容,⽽情感分类是要从⽂本中得到它是否⽀持某种观点的信息。⽐如,“⽇媒:认为歼-31能够抗衡F-35,这种说法颇具恭维的意味。”传统主题分类是要将其归为类别为“军事”主题,⽽情感分类则要挖掘出⽇媒对于“歼-31能够抗衡F-35”这个观点,持反⾯态度。这是⼀项具有较⼤实⽤价值的分类技术,可以在⼀定程度上解决⽹络评论信息杂乱的现象,⽅便⽤户准确定位所需信息。按照处理⽂本的粒度不同,情感分析可分为词语级、短语级、句⼦级、篇章级以及多篇章级等⼏个研究层次。按照处理⽂本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析。
⽂智系统提供了⼀套情感分类的流程,可以对句⼦极别的评论进⾏分析,判断情感的正负倾向。接⼊业务的⽤户只需要将待分析⽂本按照规定的协议上传,就能实时得到情感分析的反馈。如果持续上传不同时间段的评论、综合分析,还能得到事件的发展趋势,或者产品的情感⾛势等。
⼀.常⽤分类⽅法介绍
⽂本分类⽅法⼀般包含如下⼏个步骤:训练语料准备、⽂本预处理、特征挖掘、分类算法选择、分类应⽤。具体的分类流程可以参考另⼀篇KM⽂章《⽂智背后的奥秘—⾃动⽂本分类》。这⾥,对⼀些常⽤的
特征挖掘和分类算法做简单的介绍。
1.1特征挖掘⽅法
常见的特征选择⽅法有:TF-IDF、卡⽅、互信息、信息增益、X2统计量、交叉熵、Fisher判别式等⽅法,这⾥介绍⼀下⼯业上常⽤的两种⽅法。
1.1.1 TF-IDF
TF-IDF的主要思想是:如果某个词或短语在⼀篇⽂章中出现的频率TF⾼,并且在其他⽂章中很少出现,则认为此词或者短语具有很好的类别区分能⼒,适合⽤来分类。这⾥介绍⼀种对 TF-IDF 的傻⽠理解法:
TF:词频,表⽰特征t在⽂档D中出现的次数,⽐如⼀篇谈论乔布斯的⽂章,可预期“iphone”、“苹果”的TF值为较⾼。
DF:包含特征t的⽂档数,DF越⾼,表⽰特征X对于衡量⽂档之间的区别作⽤低。⽐如“我”、“的”这样的词,DF⼀般最⾼。
IDF:定义为IDF =log(|D|/DF),|D|为所有⽂档数。与DF成反⽐,IDF值越⾼,表⽰特征t对区别⽂档的意义越⼤。最终定义:TF-
IDF=TF*IDF
1.1.2 信息增益
信息增益 (IG) 是公认较好的特征选择⽅法,它刻画了⼀个词语在⽂本中出现与否对⽂本情感分类的影响,即⼀个词语在⽂本中出现前后的
信息嫡之差。傻⽠式理解下信息增益:
其中,n是总类别数,P(Ci)是第i类出现的概率,若每类平均出现,则P(Ci)=1/n.
P(t)是出现词语t的⽂档数除以总⽂档数,p(t否)=1-p(t).
P(Ci|t)即t出现时,Ci出现的概率,等于出现t且属于Ci的⽂档数除以所有出现t的⽂档总数。
p(Ci|t否)即t不出现但属于Ci的概率,等于未出现t但属于Ci的⽂档总数除以未出现t的所有⽂档数。
1.2分类算法
常见的分类算法有,基于统计的Rocchio算法、贝叶斯算法、KNN算法、⽀持向量机⽅法,基于规则的决策树⽅法,和较为复杂的神经⽹络。这⾥我们介绍两种⽤到的分类算法:朴素贝叶斯和⽀持向量
机。
1.2.1朴素贝叶斯
贝叶斯公式:P(C|X)=P(X|C)P(C)/P(X)
先验概率P(C)通过计算训练集中属于每⼀个类的训练样本所占的⽐例,类条件概率P(X|C)的估计—朴素贝叶斯,假设事物属性之间相互条件独⽴,P(X|C)=∏P(xi|ci)。
朴素贝叶斯有两⽤常⽤的模型,概率定义略有不同,如下:设某⽂档d=(t1,t2,…,tk),tk是该⽂档中出现过的单词,允许重复。多项式模型:
先验概率P(c)= 类c下单词总数/整个训练样本的单词总数。
条件概率P(tk|c)=(类c下单词tk在各个⽂档中出现过的次数之和+1)/( 类c下单词总数+|V|)伯努利模型:
先验概率P(c)= 类c下⽂件总数/整个训练样本的⽂件总数。
条件概率P(tk|c)=(类c下包含单词tk的⽂件数+1)/(类c下单词总数+2)
通俗点解释两种模型不同点在于:计算后验概率时,对于⼀个⽂档d,多项式模型中,只有在d中出现
过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为“反例”参与的。
1.2.2 ⽀持向量机模型SVM
SVM展开来说较为复杂,这⾥借助两张图帮助概念性地解释⼀下。对于线性可分的数据,可以⽤⼀超平⾯f(x)=w*x+b将这两类数据分开。如何确定这个超平⾯呢?从直观上⽽⾔,这个超平⾯应该是最适合分开两类数据的直线。⽽判定“最适合”的标准就是这条直线离直线两边
的数据的间隔最⼤。
⽽对于线性不可分的数据,则将其映射到⼀个更⾼维的空间⾥,在这个空间⾥建⽴寻⼀个最⼤间隔的超平⾯。怎么映射呢?这就是SVM 的关键:核函数。
现在常⽤的核函数有:线性核,多项式核,径向基核,⾼斯核,Sigmoid核。如果想对SVM有更深⼊的了解,请参考《⽀持向量机通俗导论(理解SVM的三层境界)》⼀⽂。
⼆.情感分类系统实现
情感分类与主题分类除了第⼀章提到的挖掘信息不同外,处理的⽂本也⼤不相同。情感分类主要处理
⼀些类似评论的⽂本,这类⽂本有以下⼏个特点:时新性、短⽂本、不规则表达、信息量⼤。我们在系统设计、算法选择时都会充分考虑到这些因素。情感分灰系统分为在线、离线两⼤流程,在线流程将⽤户输出的语句进⾏特征挖掘、情感分类、并返回结果。离线流程则负责语料下载、特征挖掘、模型训练等⼯作,系统结构如图3-1所⽰:
图3-1 情感分类系统框架图
2.1 语料库建设
语料的积累是情感分类的基⽯,特征挖掘、模型分类都要以语料为材料。⽽语料⼜分为已标注的语料和未标注的语料,已标注的语料如对商家的评论、对产品的评论等,这些语料可通过星级确定客户的情感倾向;⽽未标注的语料如新闻的评论等,这些语料在使⽤前则需要分类模型或⼈⼯进⾏标注,⽽⼈⼯对语料的正负倾向,⼜是仁者见仁、智者见智,所以⼀定要与标注的同学有充分的沟通,使标注的语料达到基本可⽤的程度。
迄今,我们已对涵盖电商、新闻、影视、⾳乐、APP等类别的20多个站点评论进⾏抓取,累计已有4亿标注语料,每天新增标注语料200多万。
2.2极性词挖掘
情感分类中的极性词挖掘,有⼀种⽅法是“全词表法”,即将所有的词都作为极性词,这样的好处是单词被全⾯保留,但会导致特征维度⼤,计算复杂性⾼。我们采⽤的是“极性词表法”,就是要从⽂档中挖掘出⼀些能够代表正负极性的词或短语。如已知正⾯语
料“@jjhuang:电话本太赞了!能免费打电话,推荐你使⽤哦~”,这句话中我们需要挖掘出“赞”、“推荐”这些正极性词。分为以下两步:
1)⽂本预处理 语料中的有太多的噪⾳,我们在极性词挖掘之前要先对⽂本预处理。⽂本预处理包含了分词、去噪、最佳匹配等相关技术。分词功能向⼤家推荐腾讯TE199的分词系统,功能强⼤且全⾯,拥有短语分词、词性标注等强⼤功能。去噪需要去掉⽂档中的⽆关信息
如“@jjhuang”、html标签等,和⼀些不具有分类意义的虚词、代词如“的”、“啊”、“我”等,以起到降维的作⽤。最佳匹配则是为了确保提出的特征能够正确地反映正负倾向,如“逍遥法外”⼀词,如果提取出的是“逍遥”⼀词,则会被误认为是正⾯情感特征,⽽“逍遥法外”本⾝是⼀个负⾯情感词,这⾥⼀般可以采⽤最长匹配的⽅法。
2)极性词选择 ⽂本预处理之后,我们要从众多词语中选出⼀些词作为极性词,⽤以训练模型。我们对之前介绍的TF-IDF⽅法略作变化,⽤以降维。因为我们训练和处理的⽂本都太短,DF和TF值⼤致相同,我们⽤⼀个TF值就可以。另外,我们也计算极性词在反例中出现的频率,如正极性词“赞”必然在
正极性语料中的TF值⼤于在负极性语料中的TF值,如果⼆者的差值⼤于某个域值,我们就将该特征纳⼊极性词候选集,经过⼈⼯审核后,就可以正式作为极性词使⽤。
⽬前,我们已挖掘出12w+ 极性词,通过⼈⼯审核的有 8w+ 个,每天仍会从语料中挖掘出100+ 个极性词。
2.3极性判断
java技术专家极性判断的任务是判断语料的正、负、中极性,这是⼀个复杂的三分类问题。为了将该问题简化,我们⾸先对语料做⼀个主客观判断,客观语料即为中性语料,主观语料再进⾏正、负极性的判断。这样,我们就将⼀个复杂三分类问题,简化成了两个⼆分类问题。如下:
在分类器选择中,主客观判断我们使⽤了上节介绍的⽀持向量机模型。⽽极性判断中,我们同时使⽤了朴素贝叶斯和⽀持向量机模型。其中朴素贝叶斯使⽤⼈⼯审核过的极性词作特征,⽽⽀持向量机模型则使⽤全词表作为特征。两个模型会对输⼊的语料分别判断,给出正、负极
性的概率,最后由决策模块给出语料的极性。
在朴素贝叶斯模型中,我们⽐较了多项式模型和伯努⼒模型的效果。伯努⼒模型将全语料中的单词做为反例计算,因为评测⽂本⼤多是短⽂本,导致反例太多。进⽽伯努⼒模型效果稍差于多项式模型,
所以我们选择了多项式模型。
⽀持向量机模型中,我们使⽤的是台湾⼤学林智仁开发的SVM⼯具包LIBSVM,这是⼀个开源的软件包,可以解决模式识别、函数逼近和概率密度估计等机器学习基本问题,提供了线性、多项式、径向基和S形函数四种常⽤的核函数供选择。LIBSVM 使⽤的⼀般步骤是:按照LIBSVM软件包所要求的格式准备数据集;
对数据进⾏简单的缩放操作;
考虑选⽤RBF 核函数;
采⽤交叉验证选择最佳参数C与g;
采⽤最佳参数C与g 对整个训练集进⾏训练获取⽀持向量机模型;
利⽤获取的模型进⾏测试与预测。
在我们的模型中,经过⼏次试验,选⽤的⾼斯核,⾃⼰调的参数C。⽂智平台当前情感分类效果:
业界效果:2014 COAE 中⽂倾向性分析评测
备注:语料来主要源于3个领域(⼿机、翡翠、保险)的微博数据;
针对观点句进⾏情感判断;
测试集是7000篇⼈⼯标注微博评论。
垂直领域的情感分类
上述介绍的是我们通⽤的情感分类系统,⾯对的是通⽤的主观评论语料。但在⼀些领域中,某些⾮极性词也充分表达了⽤户的情感倾向,⽐如下载使⽤APP时,“卡死了”、“下载太慢了”就表达了⽤户的负⾯情感倾向;股票领域中,“看涨”、“⽜市”表达的就是⽤户的正⾯情感倾向。所以我们要在垂直领域中,挖掘出⼀些特殊的表达,作为极性词给情感分类系统使⽤:
垂直极性词 = 通⽤极性词 + 领域特有极性词
该系统即为垂直领域的情感分类系统。⽬前,我们已对社会事件、APP、电影⼏个领域建⽴了垂直情感分类系统。领域的覆盖正在不断扩⼤……
2.5页⾯展⽰
2.6 系统优化
情感分类的⼯作,我们还在继续。我们在现在和未来还可以做更多的⼯作来优化我们的情感分类系统:挖掘更多的极性词(多领域)
尝试不同的分类器,调优现有的模型
句式识别:否定句,转折句,排⽐句等……
语料清洗:识别⽔军评论和⽤户评论
极性词扩展:采⽤近义词、反义词等⽅法,将挖掘的极性词扩展更多
三.总结:
⽂智平台情感分类系统基于多个领域数、亿标注语料的学习,可对众多评论数据进⾏倾向性分析,掌握⽤户舆论⾛向。尤其是对新闻、影视、产品等领域句⼦极别的评论数据,倾向性分析更为准确、有效。系统⽬前已上线运营,并为兄弟部门提供舆论倾向服务。系统使⽤简单、效果可靠,期待能为其他业务部门提供更为⼴泛的应⽤。
欢迎有需求的团队,使⽤腾讯⽂智⾃然语⾔处理。
---腾讯AI专家在知乎分享经验---
3⽉22⽇晚上8点,腾讯云技术总监朱建平将结合实践为⼤家分享⼈⼯智能常见的⼏种错误认知,并结合具体的⼀个图⽚识别的场景,为⼤家介绍⼈⼯智能领域的算法、软件与硬件的⼀个完整的认知框架,也会试着给出⼀条可能的学习路径。
朱建平还是腾讯 TEG 架构平台部专家⼯程师,在⼈⼯智能⽤于海量图⽚处理、 GPU 云化、 FPGA 应⽤等领域有丰富的经验。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论