首页> 中国专利> 基于情感词典的短文本情感倾向分析方法

基于情感词典的短文本情感倾向分析方法

摘要

基于情感词典的短文本情感倾向分析方法,首先基于词频统计的方法构建基础情感词典;对候选词语与基础情感词典中词汇的统计相关性计算来判别它的情感倾向,从而扩充基础词典。然后在情感词典的基础上,以每条评价语句S为单位,以该语句中的每个情感词WS为分隔符,对两个分隔符之间的断句phrase(WSi-1,WSi)进行情感权值计算,然后将每个断句的权值加权求和得出S的总体情感倾向值weight(S),判断S的情感极性,如果weight(S)大于0,则该评论属于正面评论;否则,认为S属于负向评论,从而实现对评价语句的极性分类,断句phrase(WSi-1,WSi)包含词语WSi,但是不包含词语WSi-1。

著录项

  • 公开/公告号CN105005553A

    专利类型发明专利

  • 公开/公告日2015-10-28

    原文格式PDF

  • 申请/专利权人 四川大学;

    申请/专利号CN201510342473.4

  • 发明设计人 张海仙;章毅;

    申请日2015-06-19

  • 分类号G06F17/27(20060101);

  • 代理机构成都弘毅天承知识产权代理有限公司;

  • 代理人杨保刚

  • 地址 610064 四川省成都市一环路南一段24号

  • 入库时间 2023-12-18 11:38:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-21

    授权

    授权

  • 2015-11-25

    实质审查的生效 IPC(主分类):G06F17/27 申请日:20150619

    实质审查的生效

  • 2015-10-28

    公开

    公开

说明书

技术领域

本发明涉及短文本进行情感倾向分类技术领域,提供了一种基于情感词典的短文本情感 倾向分析方法。

背景技术

从互联网社区概念的提出到现在的十多年中,各国的研究者对互联网社区检测的相关技 术和研究给予了很多关注,取得了很多实质性的进展。

研究者首先对互联网的拓扑结构进行了更加深入的分析。与人们的设想不同,互联网和 其他很多网络的相互关联并不完全是随机的,并不能完全用随机图来描述互联网社区的结构。 尤其是在对越来越多互联网数据进行分析后,随机图结构的概念受到严重的冲击。互联网的 实际结构远比我们想象得要复杂得多,链接、网站、页面、用户、管理者之间的关系也是多 样化的。在互联网中有很多区域内部联系紧密同外部的联系较弱,这些区域就是互联网社区, 互联网社区的结构特征是无法用随机图描述清楚的。

随着互联网社区概念的提出和相关研究的深入展开,开发者们设计了各种不同类型的的 互联网社区检测算法对其进行结构检测,并根据实验结果不断地对算法进行改进和优化。随 着研究的深入开展,对互联网社区进行检测的算法也在不断地被优化改进。

与传统方法相比,现在的算法大多能够充分考虑到网络运行的并行性、实时性和可扩展 性等来解决物理上的限制。比如Sadi等人提出的用并行的蚂蚁找圈的社区检测方法。这样可 以在不影响结果效果的前提下,压缩互联网结构图直至一个稳定的大小以降低算法运行的成 本,从而完成对大规模网络的处理。也有Leung等人提出的对标签传播算法进行改进,并加 入启发式教育法的方法对大规模网络进行实时的社区检测。针对不同的互联网社区检测方法, Leskovec等人对现有的一些方法进行研究比较,发现大规模网络社区检测问题并不是一个简 单算法就能解决的,是一个非常复杂的问题,要考虑到网络结构、数据分布、网络爬行效果 等多方面的问题。随着检测技术的不断成熟,互联网社区检测有效度也在不断提升,同传统 的蛮力算法相比较,社区检测技术已经越来越成为一种艺术。作为社区检测一个新兴的方向, 将会对互联网结构挖掘做出巨大影响。

发明内容

本发明的目的在于提供一种基于情感词典的短文本情感倾向分析方法。

基于情感词典的短文本情感倾向分析方法,其特征在于包括如下步骤:

步骤1、构建情感词典,基于词频统计的方法构建基础情感词典;通过SO-PMI方法,对 候选词语与基础情感词典中词汇的统计相关性计算来判别它的情感倾向,从而扩充基础词典。

步骤2、构建情感分析的模型,在情感词典的基础上,以每条评价语句S为单位,以该 语句中的每个情感词WS为分隔符,对两个分隔符之间的断句phrase(WSi-1,WSi)进行情感权 值计算,然后将每个断句的权值加权求和得出S的总体情感倾向值weight(S),判断S的情 感极性的方法是:如果weight(S)大于0,则该评论属于正面评论;否则,认为S属于负向评 论,从而实现对评价语句的极性分类,断句phrase(WSi-1,WSi)包含词语WSi,但是不包含词 语WSi-1。

上述技术方案中,SO-PMI方法包括如下步骤:

步骤2-1、采用ICTCLAS系统分词之后获取词语的词性property,

步骤2-2、计算由word.propertyal∈{a,ad,an,ag,al}和word.propertyal∈{vn,vd,vi,vg,vl} 所限定的两种候选词word的SO-PMI值,其余词性的候选词直接被视为中性词语;

计算两种候选词word的SO-PMI值具体为:

计算候选词和正向基础情感词之间的PMI值,计算候选词与负向基础情感词之间的PMI 值,最后将两者相减得到候选词的SO-PMI值,SO-PMI的计算式如下:

SO-PMI(word)=ΣposWordposWordsPMI(word,posWord)-ΣnegWordnegWordsPMI(word,negWord)  (式1)

posWords为正向基础情感词典,negWords为负向基础情感词典,word为候选词语;

SO-PMI的值和情感倾向之间的关系如下式:

  (式2)

步骤2-4、将正面基础情感词语的同义词,以及符合式word.propertyal∈{a,ad,an,ag,al} 或式word.propertyal∈{vn,vd,vi,vg,vl}并经式2判定为正面倾向的情感词加入至posWords;

步骤2-5、将负面基础情感词语的同义词,以及符合式word.propertyal∈{a,ad,an,ag,al} 或式word.propertyal∈{vn,vd,vi,vg,vl}并经式2判定为负面倾向的情感词加入至negWords, 得到一个全面的情感词比较样本。

本发明因为采用以上技术方案,因此具备以下有益效果:

我们的实验结果表明,在数据集包含10万商品评论的情况下,单纯基于机器学习和单纯 基于情感词典的情感倾向分析方法的准确率分别为67.9%和83.27%,而本文提出的综合型方 法的准确率可以达到85.9%,效果远优于基于机器学习的方法,也好于单纯基于情感词典的 方法。

具体实施方式

本发明提供了一种基于情感词典的短文本情感倾向分析方法。

情感词典的构建方法

情感词典是指一系列能够表达人类正面或者负面情绪的词语的集合。为便于后面对商品 评论短句进行量化的情感倾向值计算,本文还在情感词典中针对每个词语保存其情感倾向值, 其中,+1代表最强烈的正面情感,-1代表最强烈的负面情感。

我们设计的情感词典构建方法包含两个部分:基于词频统计的方法构建基础情感词典; 基于改进的SO-PMI方法,通过对候选词语与基础情感词典中词汇的统计相关性计算来判别它 的情感倾向,从而扩充基础词典。

基础情感词典的构建

基础情感词典是基于自然语言处理方法进行短文本情感分析的基础和关键。本课题将根 据语料集中的词语是否出现在情感词典之中,以及出现在词典之中的词语的情感倾向值来计 算商品评论短句的情感倾向值。所以,将哪些词语纳入情感词典,词典中的词语在商品评价 领域内是否具有代表性,这些词语的情感倾向值是否准确,这些问题都会对情感分类结果的 准确性造成影响。解决这些问题的第一步就是建立精准的基础情感词典。

构建基础情感词典的常用方法是:从知网(Hownet)中选取一系列情感词,将它们逐个 输入至Google搜索引擎,根据Google返回的点击量(hits值)的大小对情感词进行排序, 选取点击量最高的若干个情感词作为基础情感词。由于本课题的语料集仅仅来自于电子商务 网站中的商品评价信息,所以知网中的词汇集对于本课题而言范围过大。并且,搜索引擎反 馈的点击量不能反映一个词汇在商品评价语料集中是否具有代表性。所以,该方法不适于本 课题。

本课题采用基于词频统计的方法,半自动地选取基础情感词汇。因为商品评价短文本中 含有情感成分的词语大多为形容词、动词和少量的名词,所以在进行预处理之后,只需要基 于条目数量足够多的商品评论短句集合,针对形容词、动词和名词进行自动词频统计,然后 针对词频较高若干词汇,手工选取词频最高的20个正面情感词和词频最高的20个负面情感 词,由它们构成本课题的基础情感词典。

采用上述方法,我们最终纳入基础词典的正面和负面情感词汇见表1。

表1:基础情感词典

由于基础情感词汇表达了很强烈的感情倾向,所以我们为正向基础情感词赋予的情感倾 向值为+1,为负向基础情感词赋予的情感倾向值为-1。

情感词典的扩充

基础情感词典的词汇量很小,不可能包含在商品评价语料集中出现的所有带有情感倾向 的词汇。因此,需要对基础情感词典进行扩充,构建相对完整的情感词典。我们的扩充方法 有两种:添加同义词、添加带有情感倾向的候选词。

添加同义词

在商品评价短文本中,有很多赞扬或者贬低的用词都互为同义词。所以,扩充同义词能 够帮助我们更宽泛地识别情感词汇。为此,我们希望利用哈工大同义词词林[33],对基础情 感词典进行同义词扩充。但是,哈工大同义词词林中有很多同义词是非常书面化的词语,在 商品评价语料集中完全不会用到,比如“不好”的同义词“窳劣”。为了提高情感倾向计算的 算法性能,我们仍需人工筛选出常用的同义词词汇。在同义词的扩充之后,情感词典的词语 增至256个。因为是同义词,我们将基础情感词典中所有正面情感词的同义词的情感倾向值 设置为+1,并将所有负面情感词的同义词的情感倾向值设置为-1。

添加相关的情感词

虽然构建完全无遗漏的情感词典非常困难,但通过分析语料集中每个词语与字典中情感 词汇的相关性,将相关性很高的词语纳入词典,可以有效地构建覆盖面更广的情感词典。本 课题使用一种基于统计的方法:点互信息法(Pointwise Mutual Information)来计算候选词与 字典中情感词汇的相关性,从而判断该词是否应该作为情感词。若是,则添加至情感词典。

点互信息法基于互信息理论计算词语和词语之间的相关性。它的基本思想是:统计两个 词wordi和wordj在商品评价语句中共现的概率。共现的概率越大,则表示这两个词之间的相 关性越高,如式下所示:

  (式5-1)

其中p(wordi∧wordj)是wordi和wordj在语料集中共现的概率,其计算方法如式(6-1)所 示,其中n代表语料集中商品评论的总条数,numSentence(wordi,wordj)表示同时包含wordi和wordj的评价条数。P(wordi)和P(wordj)分别表示语料集中包含wordi和wordj的评价条数 在总的评价条数所占的比例。它们的计算方法如式6-2和6-3所示,其中numSentence(wordi) 表示语料集中包含wordi的评价条数。式(6-1)中的PMI(wordi,wordj)表示当wordi和wordj其中一个变量出现时,我们可以获取到的另一个变量的信息量,这充分表现了wordi和wordj之间的统计相关性:PMI大于0时,表示两个词语是具有相关性的,且PMI值越大,相关性 越强;PMI等于0时,表示这两个词之间是统计独立的;PMI小于0时,表示这两个词之间是 互斥的。

  (式6-1)

P(wordi)=numSentence(wordi)n  (式6-2)

P(wordj)=numSentence(wordj)n  (式6-3)

当我们将PMI的原理应用于情感极性分析时,就演变成了SO-PMI算法。SO-PMI采用PMI 的思想计算候选词和各组基础情感词之间的统计相关性,从各组统计相关性综合判断该词的 情感倾向。具体的计算步骤是:首先,计算候选词和正向基础情感词之间的PMI值;然后, 计算候选词与负向基础情感词之间的PMI值;最后将两者相减得到候选词的SO-PMI值。假设 正向基础情感词典为posWords,负向基础情感词典为negWords,则对于候选词语word,SO-PMI 的计算如式6-4所示:

SO-PMI(word)=ΣposWordposWordsPMI(word,posWord)-ΣnegWordnegWordsPMI(word,negWord)  (式6-4)

SO-PMI的值和情感倾向之间的关系如式6-5所示:

  (式6-5)

将SO-PMI方法应用于本实验的商品评价语料集时,我们发现了以下问题:

1)很多单字动词和专属名词本身是中性含义,但它们可能会在语料集中和词典中某一情 感词共现的概率很大,从而导致SO-PMI大大偏离中性值。比如动词“击”。它与词典中正面 词语之间的PMI值为18.97,而与负面词语之间的PMI值却为0,故它的SO-PMI值会远大于 0。名词“thinkpad”也会出现类似的情况。这些情况会将很多并无情感倾向的词语纳入情感 词典,造成情感分类方法无谓的性能开销,并损害分类的准确性。

2)很多中性词的SO-PMI往往不会精确地等于0:它们可能接近于0,也可能与0之间有 很大的偏差。所以,将区分word为正面还是负面情感词的阀值定为0,并不适合本课题。

3)遗漏问题:由于本课题采用的语料集是短文本形式的商品评价数据,评论的字数往往 较少,基础情感词语的数量也不多,所以候选词和基础情感词共现的概率会比较低,即SO-PMI 的值会趋于0。但是,从情感分析的视角,这个候选词与基础情感词之间的相关性又很大。 这样会导致很多本该纳入情感词典的词汇被遗漏,并且产生特征的稀疏问题。

所以,需要根据本课题语料集的特点,对SO-PMI算法进行适应性改进,以求解决上述三 个问题。我们提出的改进有如下三处。

1)针对问题1,,在ICTCLAS分词之后获取词语的词性property,并规定只计算由式6-7 和式6-8所限定的两种候选词word的SO-PMI值,其余词性的候选词直接被视为中性词语。

word.propertyal∈{a,ad,an,ag,al}  (式6-7)

word.propertyal∈{vn,vd,vi,vg,vl}  (式6-8)

因为形容词一般都包含了感情倾向,所以对所有形容词词汇都计算SO-PMI值。

同时,我们舍弃了名词以及其余词性的词语,因为这些词性的词语很少会带有情感倾向。 由于商品评价语料集的特殊性,大多数的名词都是商品的类型名称或品牌名称,比如“衣 服”、“美迪”等。所以,为了防止这些中性名词被错误地纳入到情感词典中,也为了提高 扩充候选词的算法效率,我们不计算名词的SO-PMI值。但是,我们会手工地将包含强烈情感 倾向的一系列名词及其同义词加入到情感词典中。手工加入的部分名词性的情感词语如表2 所示。

表2手工挑选的名词性情感词语:

2)针对问题2,在经过对大量数据的观察后,我们将SO-PMI的值和情感倾向的关系重 新调整为式(6-9)。

  (式6-9)

针对问题3:我们选择进一步扩充式6-4中的posWords和negWords词库。具体做法是: (a)将正面基础情感词语的同义词,以及符合式6-7或式6-8并经式6-9判定为正面倾向的 情感词加入至posWords;(b)将负面基础情感词语的同义词,以及符合式6-7或式6-8并经 式6-9判定为负面倾向的情感词加入至negWords。这样,就给候选词提供了一个更全面的情 感词比较样本,避免遗漏带有情感倾向的候选词语。

严格地,posWords定义如下:

1)如果w是基础情感词典中的正面词语,那么w posWords;

2)如果w是基础情感词典中某个正面词语的同义语,那么w posWords;

3)如果w符合式6-7或式6-8,并且1.36<SO-PMI(word)<23,那么w posWords。 同理,negWords定义如下:

1)如果w是基础情感词典中的负面词语,那么w negWords;

2)如果w是基础情感词典中某个负面词语的同义语,那么w negWords;

3)如果w符合式6-7或式6-8,并且-16<SO-PMI(word)<-1,那么w negWords。

根据改进的SO-PMI算法,我们把经过分词处理后的10万条评论数据作为输入,对其中 符合式6-7或式6-8,且不和基础情感词重复的候选词进行情感倾向值的计算,挑选出符合 式6-9的候选词,将该词和它的情感倾向值一起加入至情感词典。此时,SO-PMI难免会把一 些情感词的极性分错,所以需要人工进行去噪。完成扩充后,词典中情感词的数目增加到2393 个,其中包含正向情感词1302个和负向情感词1091个。这样就完成了本课题的情感词典的 构建。

情感模型的设计

本节将详细介绍我们对商品评价信息进行情感分析的模型,即情感模型。它的主要思想 是:在情感词典的基础上,以每条评价语句S为单位,以该语句中的每个情感词WS为分隔符, 对两个分隔符之间的断句phrase(WSi-1,WSi)进行情感权值计算,然后将每个断句的权值加 权求和得出S的总体情感倾向值,从而实现对评价语句的极性分类。本文约定,断句 phrase(WSi-1,WSi)包含词语WSi,但是不包含词语WSi-1。

该模型由6个模块组成,分别为:情感词的分析、否定词的分析、副词的分析、固定搭 配词句的分析、转折词的分析、反问句和感叹句的分析。

在这6个模块的设计过程中,本文对传统情感模型[都进行了程度不同的改造,使之适合 于电子商务网站中商品评论短文本的情感倾向分析。例如,在情感词的分析方面,我们考虑 了情感词语的不同词性对情感倾向的影响,引入Ad词典对带有形容词和副词两种词性的词语 进行特殊处理;又如,在固定搭配词句的分析方面,我们考虑了固定搭配对句子或者情感词 语的情感影响,将其分为4种,对每种搭配词组都做出了相应的特殊处理,使得情感倾向分 类的结果更加精确。

情感词的分析

对情感词的分析流程如下:针对待分析评论均中的每个词语word,扫描情感词典,判断 word是否存在于情感词典之中,若存在,则将word视为情感词并从情感词典中读取该词的 情感倾向值,将其返回;若不存在,则将word视为中性词汇,返回0。这样循环直至对整个 评论集的词语判断完成。该过程由算法analyzeSentimentWord实现。

然而,有些具有形容词和副词两种词性的词语,在某些情况下包含情感态度,在另外一 些情况下却只有副词的作用,此时,以这个词是否存在于情感词典之中作为准则来计算它的 感情倾向值是不准确的。

本课题将这种情况区分成以下两种。

1)当一个词语有形容词和副词两种词性时,根据词语在不同语句中的不同功能,ICTCLAS 工具分析出来的词性也会不一样,见例6.1。所以,我们可以在情感词典的基础上结合词语 的词性来判断该词是否为情感词。

例6.1

句1:味道/n很/d一般/a。/wj

此时“一般”作为负面情感词汇,词性为a。

句2:一般/ad不/d会/v掉线/n。/wj

此时“一般”作为修饰“掉线”的副词,表示情感的强弱程度,词性为ad。

针对上述问题,我们提出的解决办法是:建立一个Ad词典,将带有形容词和副词两种词 性的词语放入Ad词典中,并规定:如果词语属于Ad词典,且其词性包含字符“d”,则不将 该词视为情感词。

经过总结,我们确定的Ad词典如表6.3所示。

表6.3Ad词典

好,多,实在,特别,容易,强烈,完全,直接,基本

2)对于某些具有形容词和副词性质的情感词语,其副词词性是最近才开始使用的,如例 6.2中第二个例句中的“小”。此时,ICTCLAS无法分析出该词的副词词性,只能通过前后词 语搭配来判断它是否具有副词词性。

例6.2:

句1:很/d小/a的/ude东西/n。/wj

此时“小”作为负向情感词汇,词性为a。

句2:小/a贵/a。/wj

此时“小”作为修饰“贵”的副词,表示情感的强弱程度,词性为d,但是ICTCLAS将 它的词性仍然识别为a。

由例6.2可知,当“小”和形容词搭配在一起时,它具有副词词性。符合这种规律的词 语还有“大”。所以,我们可以通过结合它的下一个词语的词性来判断它是否起情感词的作 用。具体的规则为:如果一个同时具有形容词和副词词性的词语的下一个词语为形容词(a), 则它不被视为情感词。

假设词语word的词性为property,它的下一个词语的词性为nextProperty。我们以 weight(word)表示词汇word的情感倾向值(也称权重),以isSentiment(word)表示word是 否为情感词。情感词分析算法用伪代码描述如下:

算法:analyzeSentimentWord(情感词分析)

输入:word,property,nextProperty

输出:weight(word),isSentiment(word)

if(isInSentimentLexicon(word))then

if(isInAdLexicon(word)&&property.contains(―d‖))then

weight(word):=0;

else if((word==“大”||word==―小‖)&&nextProperty.contains(―a‖))then

weight(word):=0;

else

weight(word):=getWeightFromSentimentLexicon(word);

end if

else

weight(word):=0;

end if

if(weight(word)==0)then

isSentiment(word):=false;

else

isSentiment(word):=true;

end if

在情感词分析算法中,函数isInSentimentLexicon和isInAdLexicon分别判断词汇是否 位于情感词典和Ad词典之中,函数getWeightFromSentimentLexicon从情感词典中获取词汇 的情感倾向值。

通过对每个词语的情感倾向值的计算,我们获取到准确的情感词(即权值不等于0的词), 并且过滤了在特定语句中不发挥情感作用的情感词(即权值等于0的情感词)。

否定词的分析

否定词是表示否定含义的词语,它的出现会改变原句子的情感倾向。比如在例6.3中, “喜欢”是正面评价,当前面加上否定词“不”的时候,正面评价就变成了负面评价。本课 题确定的否定词词典如表6.4所示,一共包括40个否定词

表6.4否定词词典

除了单个否定词出现的情况,汉语中也经常会出现双重否定,即一句话中出现偶数个否 定词。比如在例6.4中,“无法”和“不”都是否定词,它们同时修饰情感词“喜欢”,最 后还原了“喜欢”的正面情感倾向。

例6.3我/rr不/d喜欢/vi它/rr。/wj

例6.4我/rr无法/d不/d喜欢/vi它/rr。/wj

本文对否定词的分析方法为:在语句出现情感词Wsi的情况下,计算Wsi与前一个分隔 符Wsi-1之间(即一个断句中)否定词的个数negNum(Wsi-1,Wsi)。如果negNum为奇数,则 该断句的情感值为情感词的情感倾向值取反;反之,则保持原情感倾向值。

计算否定词个数的方法为:逐个扫描句子s中的词汇,扫描到Wsi-1时,以Wsi-1作为 起点,从前往后逐个获取词语word,调用函数isNegWord判断word是否存在于否定词词典 中。若是,则negNum增一,直至扫描到下一个情感词语Wsi。在此过程中,将word依次存 入数组变量phrase(Wsi-1,Wsi),从而完成对一个断句的截取。

不妨将一个评论短句中的所有断句的集合记为phrases,第i个断句记为phrases[i], 所有断句的情感倾向值的集合记为weight(phrases),第i个断句的情感倾向值记为 weight(phrases[i]),断句中包含的否定词的个数记为negNum。本文的否定词分析算法 analyzeNegWord描述如下:

算法:analyzeNegWord(否定词分析)

输入:待分析的评论短句s

输出:phrases,weight(phrases)

i:=0;negNum:=0;

foreach word win s

phrases[i].appendWord(w);//将词语w加入到phrases[i]的词语序列的末尾

if(isInNegLexicon(w))then

negNum++;

else

weight:=analyzeSentimentWord(w);

if(weight!=0)then

if(negNum%2==0)then

weight(phrases[i]):=weight;

else

weight(phrases[i]):=-1*weight;

end if

i++;negNum:=0;

end if

end if

end for

在否定词分析算法中,函数isInNegLexicon判断词汇是否位于否定词词典之中,函数 analyzeSentimentWord获取情感词分析算法返回的词语的情感倾向值。

副词的分析

副词是表达情感强烈程度的词语。比如“我很喜欢”中的“很”表达了强烈的正面情感; 又比如“我比较喜欢”中的“比较”一词仅表达相对较弱的正面情感。根据副词修饰情感词 的强弱程度,我们将副词分成4个类别,为每个类别分配一个代表情感强度的数值。经过整 理,本课题采用的副词词典如表6.5。

表6.5副词词典

与否定词的分析过程类似,我们从副词词典中获取断句内每个副词的强度,并将这些强 度值的乘积与此前获得的断句的情感倾向度的乘积作为新的断句情感倾向度。

不妨以phrase表示否定词分析算法获得的某个断句,以weight(phrase)表示该算法获 得的断句phrase的权重,以degree表示副词的强度。本文的副词分析算法analyzeAdvWord 描述如下:

算法:analyzeAdvWord(副词分析)

输入:phrase,weight(phrase)

输出:weight(phrase)

degree:=1.0;

for each word w in phrase

if(isInAdvLexicon(w))then

degree=degree*getDegreeFromAdvLexicon(w);

end if

end for

weight(phrase):=degree*weight(phrase);

在副词分析算法中,函数isInAdvLexicon判断词汇是否位于副词词典之中,函数 getDegreeFromAdvLexicon从副词词典获取副词的情感强度。

固定搭配词组的分析

我们通过实验发现,在一些评论词句中会出现一些词组的特定搭配。这些搭配虽然包含 情感词,但这种搭配会改变该情感词对整个语句的情感导向;这些搭配也可能不包含情感词, 但会给整个语句带来情感倾向。所以,在这两种情况下,根据情感权值、否定词和副词的组 合来计算情感权值是不够的,还需要对固定搭配词组进行分析。

本文将固定搭配词组分成以下四种。

1)由副词(d)或连词(c)组成的固定搭配,比如例6-5。我们规定对它们的分析在本章所 述的其他分析开始之前进行。

例6.5要是/c再/d漂亮/a一点/m就/d好/a了/y。/wj

虽然该句中包含了“漂亮”和“好”这样的正面情感词汇,但是固定搭配“要是···就 好了”给这句话带来了负面情感。

我们设计算法matchAdvConjPatterns对副词与连词的固定搭配进行处理。具体过程为: 基于副词与连词的固定搭配规则集acPatterns,用正则表达式来判断评价语句S是否符合 acPatterns,如果符合,则不再采用前述算法计算S中断句的情感倾向值,直接为S赋予情 感权值。

假设posWord代表某个正向基础情感词语,固定搭配规则有以下4组:

(1){要是/再/更/如果/若/一点/多/能……就……+posWord+……了}

(2){最.……再/更/有……}

(3){就.……太……”}

(4){需/要/得/后./居./天/都/还/重.……才……}

用正则表达式可表示为:

(1)[“要是”|“再”|“更”|“如果”|“若”|“一点”|“多”|“能”]+ [\u4E00-\u9FA5]*+[“就”]+[\u4E00-\u9FA5]*+posWord+[\u4E00-\u9FA5]*+“了”

(2)“最好”+[\u4E00-\u9FA5]*+[“再”|“更”|“有”]+[\u4E00-\u9FA5]*

(3)“就是”+[\u4E00-\u9FA5]*+“太”+[\u4E00-\u9FA5]*

(4)[“需”|“要”|“得”|“后来”|“居然”|“天”|“都”|“还”|“重 新”]+[\u4E00-\u9FA5]*+[“才”]+[\u4E00-\u9FA5]*

matchAdvConjPatterns算法的伪代码可描述如下:

算法:matchAdvConjPatterns(匹配副词与连词的固定搭配)

输入:S,acPatterns(副词与连词的固定搭配规则的正则表达式集)

输出:weight(S)

if(acPatterns.match(S))then

weight(S)=-0.5;

else

用本章所述的其他方法计算weight(S);

end if

2)歧义情感词固定搭配。有些情感词,当和不同的词语搭配在一起时,情感倾向也会不 一样,或保持原值,或取反,或为中性。本文称这样的情感词为歧义情感词。比如例6.6和 例6.7。

例6.6

句1:性价比/n很/d高/a。/wj

句2:价位/n高/a了/y。/wj

“高”在情感词典中为正向情感词语。在句1中,“高”和“性价比”搭配在一起,整 个句子的情感倾向值取情感词的原权值;在句2中,当它和“价位”搭配时,则带上了负向 情感。

例6.7

句1:蛮/d大/a的/ude。/wj

句2:大/a了/y点/qt。/wj

“大”在情感词典中为正向情感词语。我们发现类似于“大”这样的形容词和“了点” 搭配时,会将其原始情感倾向反转。

与前述的对副词与连词的固定搭配处理类似,本文设置两组关于歧义情感词固定搭配的 规则,第一组使情感倾向值取反,第二组使情感倾向值清零。我们将根据不同的规则,对断 句的情感倾向值重新计算。将第一组规则记为ambigNegPatterns,第二组规则记为 ambigZeroPatterns,以negWord代表某个负面情感词语,歧义情感词固定搭配规则定义如下。

ambigNegPatterns包含以下5条规则:

((negWord+“率”)|(“价”+[“格”|“位”]))+[\u4E00-\u9FA5]*+ [“高”|“低”|“大”|“小”]+[\u4E00-\u9FA5]*

[\u4E00-\u9FA5]*+[“就”|“后”|“又”]+[\u4E00-\u9FA5]*+“降价”+ [\u4E00-\u9FA5]*

[\u4E00-\u9FA5]*+“降价”+[\u4E00-\u9FA5]*+“太快”+[\u4E00-\u9FA5]*

[\u4E00-\u9FA5]*+“了点”+[\u4E00-\u9FA5]*

“用”+[\u4E00-\u9FA5]*+“久”

ambigZeroPatterns包含以下3条规则:

[\u4E00-\u9FA5]*+“暂时”+[\u4E00-\u9FA5]*

[\u4E00-\u9FA5]*+“还没用”

[\u4E00-\u9FA5]*+“不知道”+[\u4E00-\u9FA5]*+“怎么样”

歧义情感词分析算法的伪代码可描述如下:

算法:analyzeAmbigEmotionWord(歧义情感词分析)

输入:phrase,weight(phrase)

输出:weight(phrase)

if(ambigNegPatterns.match(phrase))then

weight(phrase)=-1*weight(phrase);

else if(ambigZeroPatterns.match(phrase))then

weight(phrase)=0;

end if

3)反向情感词固定搭配。有些情感词,当前面带有感情色彩强烈的形容副词,即权值较 大的副词时,情感倾向会被反转。我们称这样的情感词为反向情感词。

例6.8太/d大/a了/y。/wj

当情感词语“大”和“太”这样权值较大的副词相连的时候,它的正面情感倾向会被反 转。

为了分析此类固定搭配,我们建立如表6.6所示的反向情感词典,存储反向情感词,并 且假定,权重大于0.5的副词会反转反向情感词的情感值。

表6.6反向情感词典

亮,大,容易,小巧,淡,白,简单,紧,薄,轻,重,长,高

本文对反向情感词固定搭配进行分析处理的过程可描述如下。

在从前一情感词扫描到情感词Wsi的过程中,使用变量advWeight来记录每个副词的权 重。当扫描到Wsi的位置时,advWeight即存储着距Wsi最近的副词的权重。首先判断 advWeight是否大于0.5,然后判断Wsi的前面是否出现否定词,如果未出现否定词,则通过 函数isOppositeWord(Wsi)判断Wsi是否属于反向情感词典,如果是,就将phrase(Wsi-1,Wsi) 的情感值反转。如果Wsi的前面出现了否定词,那么phrase(Wsi-1,Wsi)的情感值保持不 变。这是因为,在“否定词+副词+情感词”这种组合中,情感词不表现为负向情感词。比如, 在“不太容易”短句中,正面情感词“容易”没有被前面的副词“太”反转为负向情感词。

假设phrase(Wsi-1,Wsi)包含的否定词的个数为negNum(Wsi-1,Wsi),反向情感词固定 搭配的处理算法可用伪代码描述如下:

算法:matchOppositeEmotionPatterns(匹配反向情感词的固定搭配)

输入:weight(phrase(Wsi-1,Wsi)),advWeight,negNum(Wsi-1,Wsi)

输出:weight(phrase(Wsi-1,Wsi))

if((advWeight>0.5)&&(negNum(Wsi-1,Wsi)==0)&&(isOppositeWord(Wsi)))then  weight(phrase(Wsi-1,Wsi))=-1*weight(phrase(Wsi-1,Wsi)) end if

4)否定词的固定搭配。我们规定对其分析只在整个评论S都没有包含情感词的情况下进 行。

在商品评价领域中,我们注意到有些评价语句不包含任何情感词汇,只包含否定词,比 如例6.9。如果按照6.2.2节所述的方法,该语句将被认定为中性语句。但是,我们可以明 显感受到这种语句的负向情感,这样的情感就是由否定词传达的。

例6.9电风扇/n都/d没有/d!/wt

此句包含两个否定词(“不”和“没”),但是该句的情感倾向却是负向的。

解决上述问题的方法为:总结出若干种否定词的固定搭配,形成negPatterns规则集。

当扫描到S的末尾时,首先判断S是否符合negPatterns规则,如果符合,就将S的权 值设置为0.5。如果不符合规则,我们再利用否定词的奇偶性为S赋予情感倾向值。

目前,我们的negPatterns仅包含一条规则,以后可扩充新的规则。

[“不”|“没”]+[\u4E00-\u9FA5]*+“就”+[“没”|“无”]+[\u4E00-\u9FA5]* 否定词的固定搭配的处理算法可用伪代码描述如下:

算法:matchNegPatterns(匹配否定词的固定搭配)

输入:S,negNum(S)

输出:weight(S)

if((negPatterns.match(S))||(negNum(S)%2!=0))then

weight(S)=-0.5;

else

weight(S)=0.5;

end if

转折词的分析

转折词是指会给句子的语义带来反转作用的词语。

例6.11

比/p商场/n的/ude1便宜/a,/wd但是/c售/v后/f也/d没有/v商场/n好/a。 /wj

第一个短句表示的是正面感情,然而当转折词“但是”出现后,句意情感则偏向了负面。

本课题设计的转折词词典如表6.7所示。

表6.7转折词词典

可以将包含转折词的语句抽象为以下结构:

phrase(Wsi-1,Wsi)+标点符号+转折词+phrase(Wsi,Wsi+1)

根据转折词的作用,可知weight(phrase(Wsi-1,Wsi))和weight(phrase(Wsi,Wsi+1)) 的情感倾向应该是相反的。

对转折词的分析过程为:在情感词、否定词和副词的分析之后,从当前情感词Wsi处开 始向后扫描寻找下一个情感词Wsi+1。在这个过程中,如果扫描到转折词,则将 weight(phrase(Wsi-1,Wsi))取反,使得phrase(Wsi-1,Wsi)的情感倾向偏向转折词后面的 断句phrase(Wsi,Wsi+1)的情感倾向。假设phrases表示评论短句中所有断句的集合, weight(phrases)表示这些断句的情感倾向值,numPhrases表示断句的总数,phrases[i]表 示第i个断句,isTransitionWord(word)为判断词语word是否属于转折词词典的函数,转折 词的分析算法可用伪代码描述如下:

算法:analyzeTransitionWord(分析转折词)

输入:phrases,weight(phrases)

输出:weight(phrases)

for(i=0;i<numPhrases-1;i+=2)

for word in phrases[i+1]

if(isTransitionWord(word))then

weight(phrase[i])=-1*weight(phrase[i]);

break;

end if

end for

end for

感叹句和反问句的分析

感叹句和反问句都是加重语句情感倾向的句型。其中,感叹句只起到加强作用,反问句 还可以反转情感倾向。

对于感叹句的分析,我们以惊叹号“!”作为感叹句的标识,将它记为exc。其情感权值 的计算方法为:扫描到惊叹号时,我们从后往前寻找离惊叹号最近的情感词语Wsi-1,并将 Wsi-1的情感倾向值作为exc的权值。

不同于传统的情感模型,我们的情感模型对反问句不做特殊处理。这是因为,在商品评 价短句集中,大多数包含反义疑问词的语义都没有反转的含义,而是表示对商品的质疑态度。 比如在例6.12中,虽然“难道”是反义疑问句的代表性词语,但是在该句中,并没有真正对 情感倾向起到反转作用。

例6.12

里面/f竟然/d有/vyou六十/m多/m M/x的/ude1文件/n,/wd难道/d是/vshi二 手货/n?/ww

情感倾向值加权计算

计算得到一条评论S包含的所有断句的情感倾向值。将这些情感倾向值相加,就可计算 出S的情感倾向值weight(S)。判断S的情感极性的方法是:如果weight(S)大于0,则该评 论属于正面评论;否则,认为S属于负向评论。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号