CN104899231A - 基于细粒度属性分类的感情分析引擎 - Google Patents

基于细粒度属性分类的感情分析引擎 Download PDF

Info

Publication number
CN104899231A
CN104899231A CN201410084332.2A CN201410084332A CN104899231A CN 104899231 A CN104899231 A CN 104899231A CN 201410084332 A CN201410084332 A CN 201410084332A CN 104899231 A CN104899231 A CN 104899231A
Authority
CN
China
Prior art keywords
word
emotion
value
sentiment
basic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410084332.2A
Other languages
English (en)
Inventor
李臻
纪敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Boson Data Technology Co Ltd
Original Assignee
Shanghai Boson Data Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Boson Data Technology Co Ltd filed Critical Shanghai Boson Data Technology Co Ltd
Priority to CN201410084332.2A priority Critical patent/CN104899231A/zh
Publication of CN104899231A publication Critical patent/CN104899231A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出基于细粒度属性分类的感情分析引擎,采用的模型为最大熵模型,该系统的情感极性强度量化方法的算法思路:先利用已有的情感词典通过字频统计的方法,计算出每个字的情感倾向值;然后利用字的情感倾向值设计相应的公式进行词的情感倾向值计算,适用于网络中的微博和微信等,针对评论中可能存在情感词缺少对象属性的情况,究通过计算PMI值来确定评价对象属性类与情感词之间的关联概率,实现对缺失评价对象属性的情感信息进行合理属性类的指派,使情感汇总计算更为合理有效。而且感观性能优。

Description

基于细粒度属性分类的感情分析引擎
技术领域
本发明涉及网络的微博和微信评论技术领域,尤其涉及基于细粒度属性分类的感情分析引擎。
背景技术
目前,与情感词相类似,评价对象属性的描述也是多种多样,同一类对象属性,可以有多种语言表达虽然这些词语不相同,但描述的含义、概念是基本相同的。细粒度情感计算工作之前,评价对象必须确定好属性类别,以方便情感汇总统计。所以属性分类(attribute classification)工作对细粒度情感分析十分重要,要在实际应用中实现有效的属性分类还比较困难。所以如何有效、正确的进行属性分类是细n粒度情感计算、情感汇总的首要工作。已有不少研究者进行了产品属性分类的相关研究。
现在网络微博和微信评论已成为我们生活中的一部分,在开发中采用通过有监督学习方法对属性分类进行研究,在特征设计时主要利用了属性识别结果及其上下文词汇信息,以及属性识别结果对应的词性标注信息及其上下文词性标注信息。由于细粒度情感标注语料的资源少、标注工作量大的特点,在实际的开发过程中存在工作量等问题,存在着不足
综上所述,针对现有技术存在的不足,特别需要基于细粒度属性分类的感情分析引擎,以解决现有技术的不足。
发明内容
本发明的目的是提供基于细粒度属性分类的感情分析引擎,实现对缺失评价对象属性的情感信息进行合理属性类的指派,使情感汇总计算更为合理有效。
本发明为解决其技术问题所采用的技术方案是,
基于细粒度属性分类的感情分析引擎,采用的模型为最大熵模型,该系统的情感极性强度量化方法的算法思路:先利用已有的情感词典通过字频统计的方法,计算出每个字的情感倾向值;然后利用字的情感倾向值设计相应的公式进行词的情感倾向值计算;步骤如下:
首先统计每个字的在情感词典中作为褒义词和贬义词的权重,
P ci = fp ci / Σ j = 1 n fp cj fp ci / Σ j = 1 n fp cj + fn ci / Σ j = 1 m fn cj
N ci = fn ci / Σ j = 1 m fn cj fp ci / Σ j = 1 n fp cj + fn ci / Σ j = 1 m fn cj
其中,Pci为字ci作为褒义词的权重,Nci为字ci作为贬义词的权重,fpci为字ci出现在褒义词表中的频率,fnci为字ci出现在贬义词表中的频率,利用以上公示可以计算出每个字作为褒义词和贬义词的权重,n为褒义词表中出现的所有字的个数,m为贬义词表中出现的所有字的个数,为了平衡情感词典中褒义词与贬义词之间的词数差异性,以上两个公式对每个字在褒贬词表中出现的频率进行了归一化处理;
最后可以利用一下计算出字ci的情感倾向值Sci
Sci=(Pci-Nci)
如果Sci的值为正数,ci是褒义字,负数则是贬义字,接近于0的话,说明ci趋向于是中性,当计算新词w的情感倾向值时,如果该词由字C1、C2、C3…Cp组成的话,只要计算每个字的平均情感值,如下公式所示,其中p为词w中字的个数,如果字cj没有情感值,则Scj取值为0;
S w = Σ j = 1 p S cj p
如果Sw的值为正,说明词w的情感为褒义,Sw的值为负则词w为贬义词,Sw的值接近0的话,说明词w为中性词,或者叫非情感词。
进一步,基于情感词分类计算的极性强度量化方法:情感词的极性强度量化工作完全可以通过分类计算达到更好的效果,我们对情感词分为两大类处理,第一类是基础情感词,也就是首字不含有否定词、程度修饰词且字数不超过2个字的情感词;第二类是复合情感词,其首字含有否定词或程度修饰词的情感词或包含2个字以上的情感词,在基础情感词的极性强度量化计算工作中,我们首先计算出字的情感值,然后设计相关规则计算出词的情感值;在复合情感词的计算工作中,学习相应的语言学知识,设计相应的规则方法,利用词与词的组合关系进行复合计算。
进一步,基础词的情感值计算方法:分析基础情感词的构造特点,我们不难发现其情感倾向值往往约等于所有字情感倾向值中的最大值,在计算基础词的情感倾向值时,我们主要
Sw=sign(Sci)*Max(abs(Sci))
其中Max(abs(Sa))为所有字中最大的情感值的绝对值,sign(Sci)则为该字的符号值,如果该字的情感值大于0,则为+1,如果小于0,则为-1。
进一步,复合情感词的极性强度量化计算方法:复合情感词其往往由基础情感词、否定词、程度修饰词等多类词汇组合而成,复合情感词分为五类:
(1)基础情感词的叠词,这类词我们可以通过寻找词根的方法找到基础情感词的情感倾向值,由于叠词一般来说对原词的情感值影响不大,为了简化问题,我们直接取基础词的情感值;
(2)基础情感词+基础情感词,这类组合词的计算我们采用求平均值的方法实现;
(3)否定词+基础情感词,这类组合词的计算可通过对基础情感词的情感倾向值取反运算来实现;
(4)程度修饰词+基础情感词,这类组合词的计算可以先获得基础词的情感值,然后根据事先定义的不同程度修饰词的作用强度获得相应的作用系数(取值范围为0.5、0.7、0.9、1.1、1.3、1.5),该组合词的最终情感倾向值为两者的乘积,如果该值超出了词的情感倾向值范围[-1,+1],我们就取最大极值;
(5)否定词+程度修饰词+基础情感词/程度修饰词+否定词+基础情感词,这类组合词的计算相对比较复杂,前两者之间的位置关系直接影响情感词的倾向值计算,我们利用公式来实现该类复合词的情感倾向值求解;
其中Swi为基础词的情感值,Dwi为程度词的作用系数(范围为0.55、0.75、0.95、1.15、1.35、1.55),为程度词反作用系数,sign(Swi)也就是作用系数D wi的范围情感值的符号值,如果该词的情感值大于0,则为+1,如果小于0,则为-1,abs(Swi)为情感值的绝对值;
基于不同领域的情感未定词极性强度量化计算还存在248个情感未定词,由于这些词的极性及其情感倾向值往往跟具体应用领域相关,所以不能给出明确的情感值信息,人工标注时被统一标记为0,这些情感词只能跟具体应用领域关联,才能给出较为合理的情感值,们首先安排学生对这229个情感未定词在酒店领域的情感倾向值进行人工标注,然后利用已区分褒贬的评论进行情感未定词的极性判定及极性强度量化计算,使用公式来实现情感未定词的极性判定及极性强度量化计算;
P wi = fp wi fp wi + fn wi
N wi = fn wi fp wi + fn wi
其中,Pwi为词wi作为褒义词的权重,Nwi为词wi作为贬义词的权重,fpwi为词wi出现在褒义评论中的频率,fnwi为词wi出现在贬义评论中的频率。
进一步,最大熵模型是一个比较成熟的统计模型,适合于解决分类问题,其基本思想是,给定一个已知事件集,在已知事件集上挖掘出潜在的约束条件,选择一种模型,而把所有未知的事件排除在外,这个模型必须满足已知的约束条件,同时对未知事件,尽可能使其分布均匀,假设d表示某一具体事件,c表示该事件被分类的结果,我们引入了特征函数(有时简称为特征)的概念,特征函数一般为二值函数,对于分类问题,可选择“特征――类别”对作为一个特征函数,比如对于特征w和类别c’,它的特征函数如公式:
给定特征集合后,首要的任务是基于训练集合计算每个特征的期望值,每个特征的限制条件都要求这个经验期望(empirical expection)与模型中的理想特征期望值相同,在所有满足限制的概率分布模型中,选取满足使熵值最大化的分布;
利用最大熵模型得出在特征限制条件限制下具有最优的概率分布,即概率值P(c|d),根据最大熵原理,概率值P(c|d)的取值符合以下公式的指数模型:
p λ ( c | d ) = 1 z λ ( d ) exp ( Σ i λ i f i ( d , c ) )
其中Zλ(d)为范化常数,fi为特征函数,λi表示特征函数fi的权值,即特征函数对于模型的重要程度;
属性分类中,在预测一个属性描述词是否为某一属性类过程中会涉及各种因素,假设X就是一个由这些因素构成的向量,变量y的值为语义角色类型,p(y|X)是指系统对某个属性描述词预测为某一属性类的概率,这个概率可以用上述思想来估计,最大熵模型要求p(y|X)在满足一定约束的条件下满足:
H ( p ) = - Σ X , y p ( y | X ) log ( y | X )
最大熵模型的一个最显著的特点是其不要求具有条件独立的特征,因此可以相对任意地加入对最终分类有用的特征,而不用顾及它们之间的相互影响,另外,最大熵模型能够较为容易地对多类分类问题进行建模,并且给各个类别输出一个相对客观的概率值结果,便于后续推理步骤使用。
本发明的优点在于,适用于网络中的微博和微信等,针对评论中可能存在情感词缺少对象属性的情况,究通过计算PMI值来确定评价对象属性类与情感词之间的关联概率,实现对缺失评价对象属性的情感信息进行合理属性类的指派,使情感汇总计算更为合理有效。而且感观性能优。
附图说明
下面结合附图和具体实施方式来详细说明本发明:
图1是本发明提出分层策略架构示意图;
图2是本发明各个子数据库以及支撑型项目图;
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合图示与具体实施例,进一步阐述本发明。
本发明提出的基于细粒度属性分类的感情分析引擎,采用的模型为最大熵模型,该系统的情感极性强度量化方法的算法思路:先利用已有的情感词典通过字频统计的方法,计算出每个字的情感倾向值;然后利用字的情感倾向值设计相应的公式进行词的情感倾向值计算;步骤如下:
首先统计每个字的在情感词典中作为褒义词和贬义词的权重,
P ci = fp ci / Σ j = 1 n fp cj fp ci / Σ j = 1 n fp cj + fn ci / Σ j = 1 m fn cj
N ci = fn ci / Σ j = 1 m fn cj fp ci / Σ j = 1 n fp cj + fn ci / Σ j = 1 m fn cj
其中,Pci为字ci作为褒义词的权重,Nci为字ci作为贬义词的权重,fpci为字ci出现在褒义词表中的频率,fnci为字ci出现在贬义词表中的频率,利用以上公示可以计算出每个字作为褒义词和贬义词的权重,n为褒义词表中出现的所有字的个数,m为贬义词表中出现的所有字的个数,为了平衡情感词典中褒义词与贬义词之间的词数差异性,以上两个公式对每个字在褒贬词表中出现的频率进行了归一化处理;
最后可以利用一下计算出字ci的情感倾向值Sci
Sci=(Pci-Nci)
如果Sci的值为正数,ci是褒义字,负数则是贬义字,接近于0的话,说明ci趋向于是中性,当计算新词w的情感倾向值时,如果该词由字C1、C2、C3…Cp组成的话,只要计算每个字的平均情感值,如下公式所示,其中p为词w中字的个数,如果字cj没有情感值,则Scj取值为0;
S w = Σ j = 1 p S cj p
如果Sw的值为正,说明词w的情感为褒义,Sw的值为负则词w为贬义词,Sw的值接近0的话,说明词w为中性词,或者叫非情感词。
进一步,基于情感词分类计算的极性强度量化方法:情感词的极性强度量化工作完全可以通过分类计算达到更好的效果,我们对情感词分为两大类处理,第一类是基础情感词,也就是首字不含有否定词、程度修饰词且字数不超过2个字的情感词;第二类是复合情感词,其首字含有否定词或程度修饰词的情感词或包含2个字以上的情感词,在基础情感词的极性强度量化计算工作中,我们首先计算出字的情感值,然后设计相关规则计算出词的情感值;在复合情感词的计算工作中,学习相应的语言学知识,设计相应的规则方法,利用词与词的组合关系进行复合计算。
22去除否定词之后字数不超过2的情感词去重之后放入到相反极性进行统计。
进一步,基础词的情感值计算方法:分析基础情感词的构造特点,我们不难发现其情感倾向值往往约等于所有字情感倾向值中的最大值,例如,“漂亮”中“漂”的情感值是0.5,“亮”的情感值是0.8,我们可以认为“漂亮”的情感倾向值值也等于0.8,而不应该简单的利用Ku等人的平均求值法来计算“漂亮”的情感值。在计算基础词的情感倾向值时,我们主要
Sw=sign(Sci)*Max(abs(Sci))
其中Max(abs(Sa))为所有字中最大的情感值的绝对值,sign(Sci)则为该字的符号值,如果该字的情感值大于0,则为+1,如果小于0,则为-1。
进一步,复合情感词的极性强度量化计算方法:复合情感词其往往由基础情感词、否定词、程度修饰词等多类词汇组合而成,复合情感词分为五类:
(1)基础情感词的叠词,如漂漂亮亮,高高兴兴,这类词我们可以通过寻找词根的方法找到基础情感词的情感倾向值,由于叠词一般来说对原词的情感值影响不大,为了简化问题,我们直接取基础词的情感值;
(2)基础情感词+基础情感词,如小心谨慎,这类组合词的计算我们采用求平均值的方法实现;
(3)否定词+基础情感词,如不漂亮,这类组合词的计算可通过对基础情感词的情感倾向值取反运算来实现;
(4)程度修饰词+基础情感词,如很漂亮,这类组合词的计算可以先获得基础词的情感值,然后根据事先定义的不同程度修饰词的作用强度获得相应的作用系数(取值范围为0.5、0.7、0.9、1.1、1.3、1.5),该组合词的最终情感倾向值为两者的乘积,如果该值超出了词的情感倾向值范围[-1,+1],我们就取最大极值;
(5)否定词+程度修饰词+基础情感词/程度修饰词+否定词+基础情感词,如不太漂亮/太不漂亮,这类组合词的计算相对比较复杂,前两者之间的位置关系直接影响情感词的倾向值计算,我们利用公式来实现该类复合词的情感倾向值求解;
其中Swi为基础词的情感值,Dwi为程度词的作用系数(范围为0.55、0.75、0.95、1.15、1.35、1.55),为程度词反作用系数,sign(Swi)也就是作用系数D wi的范围情感值的符号值,如果该词的情感值大于0,则为+1,如果小于0,则为-1,abs(Swi)为情感值的绝对值;
基于不同领域的情感未定词极性强度量化计算还存在248个情感未定词,由于这些词的极性及其情感倾向值往往跟具体应用领域相关,所以不能给出明确的情感值信息,人工标注时被统一标记为0,这些情感词只能跟具体应用领域关联,才能给出较为合理的情感值,们首先安排学生对这229个情感未定词在酒店领域的情感倾向值进行人工标注,然后利用已区分褒贬的评论进行情感未定词的极性判定及极性强度量化计算,使用公式来实现情感未定词的极性判定及极性强度量化计算;
P wi = fp wi fp wi + fn wi
N wi = fn wi fp wi + fn wi
其中,Pwi为词wi作为褒义词的权重,Nwi为词wi作为贬义词的权重,fpwi为词wi出现在褒义评论中的频率,fnwi为词wi出现在贬义评论中的频率。
进一步,最大熵模型是一个比较成熟的统计模型,适合于解决分类问题,其基本思想是,给定一个已知事件集,在已知事件集上挖掘出潜在的约束条件,选择一种模型,而把所有未知的事件排除在外,这个模型必须满足已知的约束条件,同时对未知事件,尽可能使其分布均匀,假设d表示某一具体事件,c表示该事件被分类的结果,我们引入了特征函数(有时简称为特征)的概念,特征函数一般为二值函数,对于分类问题,可选择“特征――类别”对作为一个特征函数,比如对于特征w和类别c’,它的特征函数如公式:
给定特征集合后,首要的任务是基于训练集合计算每个特征的期望值,每个特征的限制条件都要求这个经验期望(empirical expection)与模型中的理想特征期望值相同,在所有满足限制的概率分布模型中,选取满足使熵值最大化的分布;
利用最大熵模型得出在特征限制条件限制下具有最优的概率分布,即概率值P(c|d),根据最大熵原理,概率值P(c|d)的取值符合以下公式的指数模型:
p λ ( c | d ) = 1 z λ ( d ) exp ( Σ i λ i f i ( d , c ) )
其中Zλ(d)为范化常数,fi为特征函数,表示特征函数fi的权值,即特征函数对于模型的重要程度;
属性分类中,在预测一个属性描述词是否为某一属性类过程中会涉及各种因素,假设X就是一个由这些因素构成的向量,变量y的值为语义角色类型,p(y|X)是指系统对某个属性描述词预测为某一属性类的概率,这个概率可以用上述思想来估计,最大熵模型要求p(y|X)在满足一定约束的条件下满足:
H ( p ) = - Σ X , y p ( y | X ) log ( y | X )
最大熵模型的一个最显著的特点是其不要求具有条件独立的特征,因此可以相对任意地加入对最终分类有用的特征,而不用顾及它们之间的相互影响,另外,最大熵模型能够较为容易地对多类分类问题进行建模,并且给各个类别输出一个相对客观的概率值结果,便于后续推理步骤使用。
特征设计
属性分类任务主要针对不同的属性描述进行有效的归类。在特征设计时主要利用现有的属性识别结果及其上下文词汇信息,以及属性识别结果对应的词性标注信息及其上下文词性标注信息。以属性识别结果作为基础特征,通过多个实验比较,验证上下文窗口大小对其属性分类性能的影响,以及引入词性标注信息之后的性能变化。
(1)属性描述
属性识别任务在本发明第三章中已进行了相关介绍,并通过实验验证了相应的工作任务。由<TP>标记的数据对象就是属性描述特征信息,虽然语言描述呈现出多样化特性,但往往可以由其字面信息找到对应的属性类别。这也就是本实验的基本特征信息。
(2)词性标注信息
在属性分类工作中,已识别出来的属性对象所对应的词性标注信息往往具有一定的规律性,所以当词性标注信息跟属性描述以及相应的上下文相结合,分类效果将有可能达到更好性能。本发明通过引入词性标注特征,并结合属性描述特征及其上下文信息,验证性能改善效果。
(3)上下文信息
上下文信息是主要通过分析当前属性描述词或其词性标注在一定窗口范围内的信息,通过抽取相应词汇或词性标注信息,生成特征,以期提高属性分类性能。
基于半监督学习的属性分类
本发明提出了面向自举学习的分层种子选取策略,根据统计学中的抽样原理,先将所有实例按属性类别分为若干个不同的级层,然后再分别从每个级层中按该层的实例数量占所有实例总数的比例来抽取样本。另外,我们也把这种分层思想应用到自举过程的每一步迭代中,即在扩展训练集时也尽可能地按一定的比例进行,避免训练集中的实例被少数类型的实例所控制。最后,我们也探讨了自举迭代的终止条件,提出了利用绝对熵值或差分熵值的方法来判断迭代是否可以停止,试图克服自举过程漫长的问题。
本发明采用自举学习。自举学习主要针对以下一组问题:给定了一个较小的标注数据集和一个较大的未标注数据集,要求产生出一个较高性能的分类器。在统计语言学领域,由于面临的是大量的未标注的自然语言数据,而标注的数据只占很小一部分,因此自举学习自然而然成为目前自然语言处理领域的一种非常热门的方法。因此本发明主要尝试通过自举方法来实现半监督学习,同时引入分层抽样模型,优化初始种子集,采用不同的训练集样本扩展算法。下面将描述基本的自举属性分类方法,并说明如何在自举属性分类采用分层采样策略来选取初始种子集。本发明的分层抽样的主题思想是:
先将总体的采样单位按某种特征分为若干级次(或称为“层”),然后再从每一层内进行单纯随机抽样,组成一个样本。分层抽样可以提高总体指标估计值的准确率,它可以将一个内部变异很大的总体分成一些内部变异较小的层。每一层内个体变异越小越好,而层间变异则越大越好。分层抽样比单纯随机抽样所得到的结果准确性更高,组织管理更方便,而且它能保证总体中每一层都有个体被抽到。这样除了能估计总体的参数值,还可以分别估计各个层内的情况。由于通过划类分层,增大了各类型采样单位内的共同性,容易抽出具有代表性的调查样本。该方法适用于总体情况复杂,各单位之间差异较大,单位较多的情况,参见图1。
使用分层策略进行初始种子集选择的基本思想如下:在未标注文档中,我们首先对所有实例按照一定标准进行分层,然后再在每层中按比例选择实例组成初始数据集,进行手工标注,对于没有被抽取到的实例类别,我们还需要再进行添加,保证每个类别的实例至少在初始数据集中出现一次。通过这种选择方法,一方面保证了所选择的实例具有较高的代表性,另一方面也考虑了各个类别在初始种子集上的数据分布均衡。
本发明采用最基本的自举学习方法来研究半监督学习过程中的若干关键问题,如初始种子集的产生、训练数据集的扩展以及迭代终止条件等。
分层策略的自举属性分类
(一)初始种子集的选取
在基于半监督的属性分类中,初始训练集合的选取具有非常重要的作用,一个合适的初始种子集才有可能使得自举过程成功地执行下去,反之自举学习则会使性能越来越低。初始种子集的选取主要涉及到两方面的问题:
(1)初始种子集的规模。即选取多少实例较合适,这个问题不但和半监督学习方法本身有关,还同应用领域有着密切关系。就属性分类而言,属性类型可以根据对象的不同方面划分成多个类型。如果初始种子集数量选择太少,分类器就无法较好地捕获每个类型的特征,因而产生的初始训练模型较差,导致最终结不太理想
(2)初始种子集的选择。目前普遍采用的语料库均存在着数据稀疏问题,即某些类别的实例特别少。在选择初始种子集时应该充分考虑到各个类别之间的均衡问题,同时应该选择那些具有代表性的实例,从而产生一个性能较好的初始种子集模型。由于使用随机抽取所选择的初始训练数据不具有较高的代表性,同时在各个类别上分布极不均衡。本发明使用了统计学中的分层抽样原理:先将总体的单位按某种标准分为若干次级(层),然后再按照比例从每一层内进行单纯随机抽样,组成一个子样本。由于通过划类分层,减小了同类型样本之间的差异性,增大了不同类型样本之间的差异性,容易抽出具有代表性的调查样本。该方法适用于总体情况复杂,各单位之间差异较大,单位较多的情况。
(二)训练数据集的扩展
自举算法的另一个关键问题是在训练数据集的扩展中可能会加入一些错误标注的实例。事实上,由于分类器对未标注的实例进行预测时,不可能做到100%准确,因而必定会有少量标注错误的实例加入。所以在每一次的迭代过程中,这些错误信息都会累加。这样,随着训练数据集的不断扩展,分类器的性能可能会势。同时,由于实例类型分布不均衡,某些类型的实例数较多,在迭代的过程中这些类型的实例被不断加入,因而分类器逐渐会被这几个甚至一个类型的实例所控制。本发明采用两个方法尝试解决这些问题。
(1)尽量提高每一步中加入实例的分类准确率。因为通过设置相关的参数同样可以获得不同分类的概率值。在每一次的迭代过程后,分类器对每一个未标注实例都会给出它属于某一类别的概率值。据此可计算出它的熵值H,并选择S个熵值最小的未标注实例加入到训练集中,再进行下一轮的迭代。按照熵值的定义,熵值越小,确定性越好,实例的分类可信度也就越高,其被正确分类的可能性也越大,因而将其加入到训练集中进入下一轮的迭代,所带来的风险也就较小。实例的熵值H的计算公式如下:
H = - &Sigma; i n p i log p i
其中n表示了属性类别的个数,而Pi代表了当前实例被分到第i个类的概率。
(2)按比例加入各类型的实例。在每次迭代时,由于分类可靠性高的实例往往集中于少数类别,从而使得训练集被某些类别的实例所控制。为了解决这个问题,我们将分层的思想引入到训练集的扩展中,在每次扩充训练集时,首先选出置信度较高的m个实例(m>=50),然后使用分层的方法从中再选择50个实例加入到训练集中进行下一轮迭代。这样做的出发点是为了让更多类别的实例也能加入到训练集中,从而使训练集中各个类型的实例数量比较均衡,有利于后续的迭代过程能取得较好的性能。
(三)迭代终止条件
在半监督属性分类中,当分类器的性能往往一开始呈现增长趋势,到达一定阶段后趋于稳定,最后由于迭代过程中标错的实例不断加入,性能又不断下降,这样的过程可能会反复多次。为了取得最高的自举分类性能,最简单的方法是在迭代过程中将所有的未标注实例全部加入到训练集中,再从中找出最好的性能。但是,这样会导致自举时间变长,而且在实际使用中,未标注实例的数量往往是惊人的,要全部加入也是不现实的。
本发明比较了两种方法来判断迭代的终止条件是否满足,一种是根据熵值的变化趋势;一种是根据熵值的绝对值大小。
(1)根据熵值的变化趋势。熵值表示分类器对实例进行分类的置信度。首先定义一个综合熵值Hi
Hi=Havg+Hmin
其中Havg是加入到训练集中实例的平均熵值,Hmin是其中的最小熵值,因此综合熵不仅考虑了实例的平均熵,也考虑了其中的最小熵(即分类最确定的实例)。然后再定义迭代终止条件
Hi+1-Hi≤p
其中p值是一个经验值,可以用测试集的方法进行估计。即当加入到训练集中的实例综合熵趋于稳定时(即前后两次迭代过程的综合熵之差小于p),迭代过程就终止,此时取得的性能应该是最好的。这样做的前提是我们假设:自举刚开始的时候,由于训练集较小但实例标注较准确,分类器对实例分类结果的可信度忽高忽低,因此综合熵值的波动比较明显。随着训练集的增加,可信度逐步稳定,综合熵值因此趋于稳定。随后,由于大量错误标注的实例进入训练集,综合熵值也会再次波动。
(2)根据熵值的绝对值。在自举迭代过程中,加入训练集的实例的平均熵值的大小呈现出波浪形的变化规律。但是我们知道,熵值越小,分类可信度越高,因此我们假设:当熵值低于某一阈值时,自举过程已取得了最好性能。这时的终止条件可表述为:
Hi<=p
此时Hi为每次迭代加入到训练集中的实例的熵值,p的值可通过测试集的方法进行估算。
架构及功能模块
本系统主要把系统实际运行的功能模块进行有机结合,系示模块等四部分。其中评论数据采集模块,主要针对目标网站设计爬虫软件进行评论数据的采集和存储,本引擎,主要针对论网站或者是微博微信平台进行信息爬虫,数据存储之前先对网页进行过滤和格式化信息抽取,只保存每条评论的发表时间、发表人、评论标题以及评论内容。数据处理模块主要针对评论数据进行相应的处理,其中包括应用自然语言处理技术进行评论数据的语义特征提取,如分词、词性标注、语义角色标注等,另外利用机器学习方法实现对抽取后的各种特征建立相应的学习模型,然后对新的评论信息进行预测。数据分析模块主要针对数据处理模块处理后的信息进行情感分析,利用对象属性与情感词之间的关联信息以及情感词与修饰词之间的关系进行细粒度情感强度量化统计和计算。信息展示模块主要针对处理和分析后的评论信息进行友好的可视化展示,以及提供相应的查询接口,帮助用户根据评论信息中各属性的情感值进行推荐。
数据处理与分析模块
评论数据的处理与分析模块是本系统的核心部分,因为它直接关系到系统的处理性能。我们主要集成应用了所提到的相关技术,实现评论数据的语义分析。概括的讲,主要分为三块内容:
(1)利用自然语言处理技术实现评论语句的语义特征提取我们主要利用分词技术、词性标注(POS Tagging)、语义角色标注(SRL)等自然语言处理技术,实现对评论句子的语义分析和处理,并抽取和转化为相应的特征表示,为后面的机器学习奠定了基础。
(2)机器学习方法进行评价对象属性与情感要素的联合识别主要利用已获取的语义特征信息,通过构建相应的学习模型实现评价对象属性及其情感要素的联合识别。在模型的生成过程中我们通过反复试验,调整特征模板和充分利用上下文信息,努力提高了模型的性能。通过前面章节的分析,我们利用性能最好的模型对所有评论进行识别,并对所有评价对象属性描述进行属性分类。这为后面的情感量化计算奠定基础。
(3)基于分类属性的情感量化计算方法设计主要利用已抽取的“属性-情感-修饰词”词对、属性分类信息以及上下文语义信息,找出情感词与相关修饰词之间的各种关系,设计出不同的情感计算方法,进一步提高计算精确度。具体内容包括:基于上述的实验数据和结果,研究相应的语言学规律,总结不同的计算方法实现最终的基于分类属性的情感量化汇总。通过以上工作,我们把这些研究成果应用到目前所有评论中进行情感计算。
情感分析服务化封装
本发明所提出的情感计算方法可应用于评论分析,而这些网站系统往往是分布、异构的。为了方便本研究成果的推广使用,我们提出一种基于Web服务框架的服务化封装方法,将文本情感分析方法封装为Web服务资源,以屏蔽方法自身的复杂性,对外呈现统一的调用接口,实现在网络环境中的共享,以适应
不同的应用需求。同时本方法的设计为今后多领域的情感分析服务化封装奠定了基础。Web服务是一种基于XML和SOAP的技术,它完全屏蔽不同软件平台之间的差异。Web服务本质就是一个应用程序,向用户提供了一个能够通过Web进行调用的API,用户能够用编程的方法通过Web来调用这个应用程序。因此,将本发明研究的情感分析方法封装成Web服务后,其他的系统就可以按标准的Web形式进行访问,而不需要考虑分析方法的具体实现,简化用户的程序设计。
用的是Struts+Spring+hibernate的设计框架,数据库为Oracle数据库。该网站是由一个main项目作为门户,通过main项目连接到各个子数据库以及支撑型项目见图2。由于各个项目的session不共用,因此用户登录模块使用的是tomcat自带的用户认证系统。
由于各个子数据库的表结构不同,因此查询条件和需要显示的字段自然也不一样。于是在一般的开发模式下,各个子数据库自然要开发一套自己的查询模块。
在条件里拼接查询条件。
这是最常见的实现方法,由于要确定各个条件之间的关系:交集还是并集.
对于XML文件的生成和解析,当下也有众多流行的开源包。由于Lifecenter网站使用的是JAVA语言,本引擎自然从JAVA的开源包中去寻觅优秀的经过时间检验的成品。读取和操纵XML文件的标准方法是DOM(“文档对象模型”)。遗憾的是,这种方法需要读取整个文件并将它存储到树结构中,因而效率不高、缓慢,并且会过度使用资源。一种替代方法是使用Simple API for XML或SAX。SAX允许正在读取文档时处理该文档,这避免了在采取操作之前需要等待存储文档的所有内容。由于查询动作的使用频率相当高,因此引擎使用SAX来提高解析速度。因此我们这里使用SAX作为XML的解析工具。
举例如下
这段代码就是最简单的对contents.xml进行解析的程序,并没有什么难点,首先是由SAXParserFactory这个工厂制造SAXParser对象:parser=spf.newSAXParser();;然后由parser对象进行XML解析parser.parse(newFileInputStream("d:/contents.xml"),new MySaxXml())。这里的XML是作为流的形式传入,这样不会占用大量内存,提高了执行的效率。这里唯一需要关注的是MySaxXml这个类,因为对XML的解析的整个过程都在这个MySaxXml对象中执行。
MySaxXml必须是org.xml.sax.helpers.DefaultHandler的一个子类,它担任的工作是在控制整个解析过程。主要是MySaxXml覆盖了DefaultHandler的几个方法:
characters(char[]ch,int start,int length):收到一个元素中的字符数据。
endDocument():当文档解析结束之后收到通知,执行该方法。
endElement():当某个元素解析结束后收到通知,执行该方法。
startDocument():开始解析文档时收到通知,执行该方法。
startElement(String uri,String localName,String qName,Attributes atts):开始解析元素时收到通知,执行该方法;其中uri是命名空间uri,qName是元素的名字,atts是元素的属性。
引擎总体设计#
因此引擎使用XML来作数据存储是最好的选择,SAX则将作为XML的解析包。即已经指定好了存储方式,要确定需要存储哪些信息,并且这些信息如何在查询的时候发挥作用,首先需要细化引擎的需求。
1、引擎首先要确定的是在哪种数据类型中进行查询。在确定了数据类型之后,便要找到相应的查询定义文件。为了方便起见,数据类型和查询定义文件的对应关系存放在数据库的表中,这样在程序调用的时候就可以通过数据类型来找到查询定义文件。
2、确定了查询定义文件之后,把查询定义文件里定义的内容变成对象,将其存放到内存之中,如果内存中存在这个对象,就不需要再从数据库查询查询定义文件并解析了,而是直接使用此对象,因为查询定义文件对于稳定的版本来说是不会出现变化的。这样的好处在于大大提高了用户查询时候的速度,不足在于,当查询定义文件被修改之后,必须重新启动一次服务器,将内存中的对象重新加载一次,考虑到在网站已经对外提供服务的情况下,只会偶尔地修改查询定义文件,因此比较之下决定使用加载一次的方法。在这个过程中,使用SAX来对查询定义文件进行解析。解析之后能够得到这样几个对象:
a)该数据类型对应的主表
b)主表与从表之间是如何关联的,即sql语句中的主从表是由哪个字段进行连接的。
c)需要显示的字段,虽然查询条件可能不一样,但是最后显示的字段都是一致的。当需要显示的字段来自从表,则需要将主表和从表进行连接。
d)需要查询的字段,哪些字段是默认查询的,以及字段的类型和匹配方式。如果该字段为从表的字段,则需要将主表与从表进行连接。如果该字段为数字类型但是用户填写的却是非数字的,则将该查询条件忽略,反之亦然。所谓匹配方式是指该字段的查询是精确匹配还是模糊匹配。所谓精确匹配在sql语句中则是“=”号,比如ID=1553;而模糊匹配则是使用全文索引进行查询,
3、接着是对entrezWord进行验证和转换。EntrezWord的格式keyword1[item1]AND/OR keyword2[item2]。当entrezWord没有item(也叫做限定词,表示关键字限定在哪个字段中进行查询)而只有keyword的话,表示在默认字段中查询该关键字。比如nucleotide数据库的默认为[CAC]、[ACCN]、[GENE]、[ORGN]、[TITL],entrezWrod为nucCore,则entrezWord可视为nucCore[CAC]OR nucCore[ACCN]OR nucCore[GENE]OR nucCore[ORGN]OR nucCore[TITL]。由于lifecenter能够接受直接由用户输入的entrezWord,因此对于entrezWord的验证十分重要,要过滤掉特殊符号和转移符号,因为当生成sql语句的时候,有些特殊符号和转移符号会使sql的语句破坏从而造成执行时的异常。
对entrezWord的转换要分三部分,第一部分是item,即[.*?],item前面部分为keyword,后面部分为condition,也就是AND/OR。目前的引擎是从左到右的解析,不支持用户自定义条件组合。
4、entrezWord转换完毕之后,引擎所要做的就是生成sql语句。
理解了引擎的具体需求之后,本发明引擎的设计分为两部分,一部分是对查询定义文件进行解析,生成数据库对象,保存在内存之中。另一部分是将用户的输入进行五次解析得到我们所需要的信息,并最终将其转换成能够在oracle数据库中进行查询的sql语句。
数据库对象dbQueryDef的实现
本引擎设计得到5个属性,但是没有对这5个属性进行验证,因为这个中间存在一个耦合的问题。所谓耦合就是项目程序中的功能、程序之间的依赖。因此对于这些属性的验证,如果仍放在DataDefParse程序中的话,会使整个程序耦合过高,功能混淆。
于是将这5个属性另外封装在一个类中,这个类功能是存放这5个属性并对其进行验证,而DataDefParse的功能就如同其命名一样,仅仅承担解析XML的工作。这样,就达到了功能的分离,如果以后开发人员对解析上的程序进行功能上的修改,也不会影响到验证的功能;反之,对于验证功能对其进行修改,也不用考虑XML解析的过程。这样便大大降低了耦合度。
以下是设计的dbQueryDef的公开方法:
1、public boolean isSpecialQualifer(String user_qualifer)判断该查询是否为特殊查询
2、Column getCoreTablePrimarykeyColumns()得到主表的主键
3、public Collection<Table>getShowTables()得到需要显示的表的集合
4、public List<Column>getShowColumns()得到需要显示的字段的列表。
以上方法容易理解,在实现上没有难度,主要关注dbQueryDef的构造函数的实现:
public dbQueryDef(Map<String,Table>tableNameEntity,List<DisplayUnit>DisplayUnits,Map<String,QueryUnit>qualiferQueryunitMap,Map<String,SpecialQueryUnit>specialQueryUnitMap)throws EngineException
设计的目的,就是将DataDefParse中的5个对象封装起来,并在构造函数中对这5个对象进行验证,如果有错误直接抛出Exception,告诉调用者问题的类型和具体内容。
当查询定义文件出现问题时:表为空、限定符的Map为空或者显示单元为空时,系统给出EngineException这个专为Engine设计的异常,此时异常的类型都为ExceptionType.inconsisted_query_definition,因为这个类的功能是存放查询定义文件解析后的信息,因而异常的类型一样,区别在于异常的描述,也就是EngineException中errorMessage。
EntrezWord的五次解析的实现
可以知道五次解析是Engine系统的关键。详细展开介绍Engine的五次解析的具体实现。
ParsedSegment firstParse(String entrezWord,boolean allowInvalidQualifer)throws EngineException——Engine的第一次解析。首先我们介绍一下ParsedSegment对象。ParsedSegment类主要功能是一个值对象,该对象中存放的是4个对象的list,分别是:phraseList、qualiferList、relationList、operList,介绍设计这4个对象的目的:
List<String>phraseList:这个对象是将用户输入的关键字解析出来,存放在该对象中。如用户输入126[>LENGTH]AND Sjc_0028040[AC],则pharseList中第一个元素为126,第二个元素为Sjc_0028040。这里的顺序关系是十分重要的,因为ParsedSegment对象中的4个list对象是根据顺序一一对应的。
List<String>qualiferList:这个对象用户存储限定词列表,同样以126[>LENGTH]AND Sjc_0028040[AC]为例,qualiferList第一个元素为LENGTH,第二个元素AC,这样就与phraseList的元素顺序对应起来。
List<SQL_Relation>relationList:该对象存储的是两个条件之间的关系,即AND或者OR。RelationList第一个元素对应的是第一和第二个条件的关系,relationList第二个元素对应的是第二和第三个条件的关系,以此类推。
List<SQL_Operation>operList:该对象存储的是每个条件的特殊查询条件,即126[>LENGTH]中的“>”符号,其第一个元素对应qualiferList的第一个元素,以此类推。
对ParsedSegment对象有了初步了解之后,详细介绍一下firstParse方法的功能和实现。其输入为entrezWord和allowInvalidQualifer这两个参数,这些参数在上一节中已经有了详细介绍,这里不加赘述,而firstParse的实现,是我们需要关注的,对于用户输入的entrezWord,firstParse是如何进行处理的。这里我们主要是使用正则表达式,将entrezWord中的关键信息取出并存放入对应的对象中。简单介绍一下正则表达式,所谓正则表达式就是用一个字符串来描述一个特征,然后去验证另一个字符串是否符合这特征。自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台。
Engine调用的代码实现
Service主要实现的是2个方法,一个是查询结果的总数,以便实现其分页功能,另一个就是查询其结果列表。
查询总记录数接口
public int getGeneralObjectNumber(String dbName,String queryStr,
boolean browseable,boolean allowInvalidQualifer,MessageMessage,boolean testCombine)此方法输入为
1、dbname:数据库名称,用于确定调用查询定义文件
2、queryStr:EntrezWord语句
3、allowInvalidQualifer:用户输入错误的限定符时是否返回空或是将无效的限定符忽略
4、Message:用于包装Engine抛出的异常
5、testCombine:验证查询的子表链接是否超过一定数量
其输出为entrezWord查询得到的总数。配合getGeneralObjectWithFirstHint方法使用。在调用Engine的生成的查询语句后对其包装成为查询记录总数的语句:String sql="select count(*)from("+sqlStr+")";
查询结果列表接口
public List<Map<String,Object>>getGeneralObjectWithFirstHint(String dbName,String queryStr,boolean browseable,booleanallowInvalidQualifer,int pageNo,int pageSize,Message Message,boolean withOrderBy,boolean withFirstHint,boolean testCombine)此方法的输入为
dbName:数据库名称,用于确定调用查询定义文件
queryStr:EntrezWord语句
browseable:作为保留字段,用于控制用户输入为空的时候返回空列表还是返回所有用户输入错误的限定符时是否返回空或是将无效的限定符忽略
allowInvalidQualifer
pageNo:当前第几页,用于分页显示
pageSize:每页显示多少条记录,与pageNo配合使用,确定查询sql时的偏移量(offset=pageNo*pageSize-1)
Message:用于包装Engine抛出的异常
withOrderBy:是否需要按照主键进行排序
withFirstHint:上一章介绍过,oracle的查询策略
testCombine:验证查询的子表链接是否超过一定数量
其返回值为List<Map<String,Object>>,其中Map是一条记录的信息,key的类型为String,表示字段名;value的类型为Object,表示该字段的内容。List表示一组记录。它对Engine生成的sql语句的包装:sqlStr="select*from(select row_.*,rownum rownum_from(\n"+queryStr+"\n)row_where rownum<=?)where rownum_>?"其中第一个问号的值为pageSize*pageNo,第二个问号的值为(pageNo-1)*pageSize。
现在,Engine已经完成了它所有的工作,本文附件1列出的是Protein项目的查询定义文件,因此以protein为例,输入为organic aniontransporter[DESC]AND protein[KEYWORD],Engine处理之后生成的sql语句为
SELECT protein.AC as proteinAC,protein.ENTRYNAME as proteinENTRYNAME,protein.PROTEIN_ID as proteinPROTEIN_ID,protein.DESCRIPTION asproteinDESCRIPTION,protein.ORGANISM as proteinORGANISM,protein.CACas proteinCAC
FROM TB_PROTEIN protein
WHERE CONTAINS(protein.DESCRIPTION,'{organic aniontransporter}')>0AND CONTAINS(protein.KEYWORDS,'{protein}')>0
Select部分有显示单元(displayUnit)控制,where后面部分由查询单元(queryUnit)控制,这就是Engine生成的可执行的sql语句。
基于上述,本发明的优点为:本研究在属性分类研究中还引入了半监督学习方法,以减少对标注语料的依赖。首先研究了自举学习(一种半监督学习方法)的分层种子选取策略,并与随机种子选取策略在属性分类上进行了实验性能的对比;另外还研究了把分层思想应用到自举过程的每一步迭代之中,探讨了自举迭代的终止条件;针对评论中可能存在情感词缺少对象属性的情况,究通过计算PMI值来确定评价对象属性类与情感词之间的关联概率,实现对缺失评价对象属性的情感信息进行合理属性类的指派,使情感汇总计算更为合理有效。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。

Claims (5)

1.基于细粒度属性分类的感情分析引擎,其特征在于,采用的模型为最大熵模型,该系统的情感极性强度量化方法的算法思路:先利用已有的情感词典通过字频统计的方法,计算出每个字的情感倾向值;然后利用字的情感倾向值设计相应的公式进行词的情感倾向值计算;步骤如下:
首先统计每个字的在情感词典中作为褒义词和贬义词的权重,
P ci = fp ci / &Sigma; j = 1 n fp cj fp ci / &Sigma; j = 1 n fp cj + fn ci / &Sigma; j = 1 m fn cj
N ci = fn ci / &Sigma; j = 1 m fn cj fp ci / &Sigma; j = 1 n fp cj + fn ci / &Sigma; j = 1 m fn cj
其中,Pci为字ci作为褒义词的权重,Nci为字ci作为贬义词的权重,fpci为字ci出现在褒义词表中的频率,fnci为字ci出现在贬义词表中的频率,利用以上公示可以计算出每个字作为褒义词和贬义词的权重,n为褒义词表中出现的所有字的个数,m为贬义词表中出现的所有字的个数,为了平衡情感词典中褒义词与贬义词之间的词数差异性,以上两个公式对每个字在褒贬词表中出现的频率进行了归一化处理;
最后可以利用一下计算出字ci的情感倾向值Sci
Sci=(Pci-Nci)
如果Sci的值为正数,ci是褒义字,负数则是贬义字,接近于0的话,说明ci趋向于是中性,当计算新词w的情感倾向值时,如果该词由字C1、C2、C3…Cp组成的话,只要计算每个字的平均情感值,如下公式所示,其中p为词w中字的个数,如果字cj没有情感值,则Scj取值为0;
S w = &Sigma; j = 1 p S cj p
如果Sw的值为正,说明词w的情感为褒义,Sw的值为负则词w为贬义词,Sw的值接近0的话,说明词w为中性词,或者叫非情感词。
2.根据权利要求1所述的基于细粒度属性分类的感情分析引擎,其特征在于,基于情感词分类计算的极性强度量化方法:情感词的极性强度量化工作完全可以通过分类计算达到更好的效果,我们对情感词分为两大类处理,第一类是基础情感词,也就是首字不含有否定词、程度修饰词且字数不超过2个字的情感词;第二类是复合情感词,其首字含有否定词或程度修饰词的情感词或包含2个字以上的情感词,在基础情感词的极性强度量化计算工作中,我们首先计算出字的情感值,然后设计相关规则计算出词的情感值;在复合情感词的计算工作中,学习相应的语言学知识,设计相应的规则方法,利用词与词的组合关系进行复合计算。
3.根据权利要求1所述的基于细粒度属性分类的感情分析引擎,其特征在于,基础词的情感值计算方法:分析基础情感词的构造特点,我们不难发现其情感倾向值往往约等于所有字情感倾向值中的最大值,在计算基础词的情感倾向值时,我们主要
Sw=sign(Sci)*Max(abs(Sci))
其中Max(abs(Sci))为所有字中最大的情感值的绝对值,sign(Sci)则为该字的符号值,如果该字的情感值大于0,则为+1,如果小于0,则为-1。
4.根据权利要求1所述的基于细粒度属性分类的感情分析引擎,其特征在于,复合情感词的极性强度量化计算方法:复合情感词其往往由基础情感词、否定词、程度修饰词等多类词汇组合而成,复合情感词分为五类:
(1)基础情感词的叠词,这类词我们可以通过寻找词根的方法找到基础情感词的情感倾向值,由于叠词一般来说对原词的情感值影响不大,为了简化问题,我们直接取基础词的情感值;
(2)基础情感词+基础情感词,这类组合词的计算我们采用求平均值的方法实现;
(3)否定词+基础情感词,这类组合词的计算可通过对基础情感词的情感倾向值取反运算来实现;
(4)程度修饰词+基础情感词,这类组合词的计算可以先获得基础词的情感值,然后根据事先定义的不同程度修饰词的作用强度获得相应的作用系数(取值范围为0.5、0.7、0.9、1.1、1.3、1.5),该组合词的最终情感倾向值为两者的乘积,如果该值超出了词的情感倾向值范围[-1,+1],我们就取最大极值;
(5)否定词+程度修饰词+基础情感词/程度修饰词+否定词+基础情感词,这类组合词的计算相对比较复杂,前两者之间的位置关系直接影响情感词的倾向值计算,我们利用公式来实现该类复合词的情感倾向值求解;
其中Swi为基础词的情感值,Dwi为程度词的作用系数(范围为0.55、0.75、0.95、1.15、1.35、1.55),为程度词反作用系数,sign(Swi)也就是作用系数D wi的范围情感值的符号值,如果该词的情感值大于0,则为+1,如果小于0,则为-1,abs(Swi)为情感值的绝对值;
基于不同领域的情感未定词极性强度量化计算还存在248个情感未定词,由于这些词的极性及其情感倾向值往往跟具体应用领域相关,所以不能给出明确的情感值信息,人工标注时被统一标记为0,这些情感词只能跟具体应用领域关联,才能给出较为合理的情感值,们首先安排学生对这229个情感未定词在酒店领域的情感倾向值进行人工标注,然后利用已区分褒贬的评论进行情感未定词的极性判定及极性强度量化计算,使用公式来实现情感未定词的极性判定及极性强度量化计算;
P wi = fp wi fp wi + fn wi
N wi = fn wi fp wi + fn wi
其中,Pwi为词wi作为褒义词的权重,Nwi为词wi作为贬义词的权重,fpwi为词wi出现在褒义评论中的频率,fnwi为词wi出现在贬义评论中的频率。
5.根据权利要求1所述的基于细粒度属性分类的感情分析引擎,其特征在于,最大熵模型是一个比较成熟的统计模型,适合于解决分类问题,其基本思想是,给定一个已知事件集,在已知事件集上挖掘出潜在的约束条件,选择一种模型,而把所有未知的事件排除在外,这个模型必须满足已知的约束条件,同时对未知事件,尽可能使其分布均匀,假设d表示某一具体事件,c表示该事件被分类的结果,我们引入了特征函数(有时简称为特征)的概念,特征函数一般为二值函数,对于分类问题,可选择“特征――类别”对作为一个特征函数,比如对于特征w和类别c’,它的特征函数如公式:
给定特征集合后,首要的任务是基于训练集合计算每个特征的期望值,每个特征的限制条件都要求这个经验期望(empirical expection)与模型中的理想特征期望值相同,在所有满足限制的概率分布模型中,选取满足使熵值最大化的分布;
利用最大熵模型得出在特征限制条件限制下具有最优的概率分布,即概率值P(c|d),根据最大熵原理,概率值P(c|d)的取值符合以下公式的指数模型:
p &lambda; ( c | d ) = 1 z &lambda; ( d ) exp ( &Sigma; i &lambda; i f i ( d , c ) )
其中Zλ(d)为范化常数,fi为特征函数,λi,表示特征函数fi的权值,即特征函数对于模型的重要程度;
属性分类中,在预测一个属性描述词是否为某一属性类过程中会涉及各种因素,假设X就是一个由这些因素构成的向量,变量y的值为语义角色类型,p(y|X)是指系统对某个属性描述词预测为某一属性类的概率,这个概率可以用上述思想来估计,最大熵模型要求p(y|X)在满足一定约束的条件下满足:
H ( p ) = - &Sigma; X , y p ( y | X ) log ( y | X )
最大熵模型的一个最显著的特点是其不要求具有条件独立的特征,因此可以相对任意地加入对最终分类有用的特征,而不用顾及它们之间的相互影响,另外,最大熵模型能够较为容易地对多类分类问题进行建模,并且给各个类别输出一个相对客观的概率值结果,便于后续推理步骤使用。
CN201410084332.2A 2014-03-07 2014-03-07 基于细粒度属性分类的感情分析引擎 Pending CN104899231A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410084332.2A CN104899231A (zh) 2014-03-07 2014-03-07 基于细粒度属性分类的感情分析引擎

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410084332.2A CN104899231A (zh) 2014-03-07 2014-03-07 基于细粒度属性分类的感情分析引擎

Publications (1)

Publication Number Publication Date
CN104899231A true CN104899231A (zh) 2015-09-09

Family

ID=54031898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410084332.2A Pending CN104899231A (zh) 2014-03-07 2014-03-07 基于细粒度属性分类的感情分析引擎

Country Status (1)

Country Link
CN (1) CN104899231A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250363A (zh) * 2016-07-15 2016-12-21 合肥指南针电子科技有限责任公司 一种舆情监控分析方法
CN106547866A (zh) * 2016-10-24 2017-03-29 西安邮电大学 一种基于情感词随机共现网络的细粒度情感分类方法
CN107229612A (zh) * 2017-05-24 2017-10-03 重庆誉存大数据科技有限公司 一种网络信息语义倾向分析方法及系统
CN108268439A (zh) * 2016-12-30 2018-07-10 北京国双科技有限公司 文本情感的处理方法及装置
CN108460022A (zh) * 2018-03-20 2018-08-28 福州大学 一种文本Valence-Arousal情感强度预测方法及系统
CN110109947A (zh) * 2017-12-28 2019-08-09 北京京东尚科信息技术有限公司 提取数据的方法和装置
CN110162684A (zh) * 2019-05-07 2019-08-23 中国电子科技集团公司第二十八研究所 基于深度学习的机器阅读理解数据集构建以及评估方法
CN110334182A (zh) * 2019-06-24 2019-10-15 中国南方电网有限责任公司 具有语音情感识别的在线服务方法
CN111310455A (zh) * 2020-02-11 2020-06-19 安徽理工大学 一种面向网购评论的新情感词极性计算方法
CN112069312A (zh) * 2020-08-12 2020-12-11 中国科学院信息工程研究所 一种基于实体识别的文本分类方法及电子装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250363A (zh) * 2016-07-15 2016-12-21 合肥指南针电子科技有限责任公司 一种舆情监控分析方法
CN106547866A (zh) * 2016-10-24 2017-03-29 西安邮电大学 一种基于情感词随机共现网络的细粒度情感分类方法
CN108268439A (zh) * 2016-12-30 2018-07-10 北京国双科技有限公司 文本情感的处理方法及装置
CN108268439B (zh) * 2016-12-30 2021-09-07 北京国双科技有限公司 文本情感的处理方法及装置
CN107229612B (zh) * 2017-05-24 2021-01-08 重庆电信系统集成有限公司 一种网络信息语义倾向分析方法及系统
CN107229612A (zh) * 2017-05-24 2017-10-03 重庆誉存大数据科技有限公司 一种网络信息语义倾向分析方法及系统
CN110109947A (zh) * 2017-12-28 2019-08-09 北京京东尚科信息技术有限公司 提取数据的方法和装置
CN108460022A (zh) * 2018-03-20 2018-08-28 福州大学 一种文本Valence-Arousal情感强度预测方法及系统
CN110162684A (zh) * 2019-05-07 2019-08-23 中国电子科技集团公司第二十八研究所 基于深度学习的机器阅读理解数据集构建以及评估方法
CN110334182A (zh) * 2019-06-24 2019-10-15 中国南方电网有限责任公司 具有语音情感识别的在线服务方法
CN111310455A (zh) * 2020-02-11 2020-06-19 安徽理工大学 一种面向网购评论的新情感词极性计算方法
CN112069312A (zh) * 2020-08-12 2020-12-11 中国科学院信息工程研究所 一种基于实体识别的文本分类方法及电子装置
CN112069312B (zh) * 2020-08-12 2023-06-20 中国科学院信息工程研究所 一种基于实体识别的文本分类方法及电子装置

Similar Documents

Publication Publication Date Title
CN104899231A (zh) 基于细粒度属性分类的感情分析引擎
US11790006B2 (en) Natural language question answering systems
US11442932B2 (en) Mapping natural language to queries using a query grammar
US20170213157A1 (en) Method and system to provide related data
Doan et al. Learning to match the schemas of data sources: A multistrategy approach
CN104899273B (zh) 一种基于话题和相对熵的网页个性化推荐方法
US20190073357A1 (en) Hybrid classifier for assigning natural language processing (nlp) inputs to domains in real-time
CN100378724C (zh) 基于移动配置概念的句子结构分析方法及使用其的自然语言搜索方法
US20160162476A1 (en) Methods and systems for modeling complex taxonomies with natural language understanding
US8954360B2 (en) Semantic request normalizer
Patel-Schneider Analyzing schema. org
US20150142851A1 (en) Implicit Question Query Identification
CN110298033A (zh) 关键词语料标注训练提取工具
US20080046441A1 (en) Joint optimization of wrapper generation and template detection
Caldarola et al. An approach to ontology integration for ontology reuse in knowledge based digital ecosystems
CN110175585B (zh) 一种简答题自动批改系统及方法
US9779135B2 (en) Semantic related objects
CN110134780A (zh) 文档摘要的生成方法、装置、设备、计算机可读存储介质
US20240184829A1 (en) Methods and systems for controlled modeling and optimization of a natural language database interface
CN111951079B (zh) 一种基于知识图谱的信用评级方法、装置及电子设备
CN112925901A (zh) 一种辅助在线问卷评估的评估资源推荐方法及其应用
CN114997288A (zh) 一种设计资源关联方法
Quarteroni et al. A bottom-up, knowledge-aware approach to integrating and querying web data services
CN117436446B (zh) 基于弱监督的农业社会化销售服务用户评价数据分析方法
US10990881B1 (en) Predictive analytics using sentence data model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150909

WD01 Invention patent application deemed withdrawn after publication