最近阅读了一篇关于观点挖掘KDD论文(Mining and Summarizing Customer Reviews,KDD04),其挖掘算法很经典,特此做记录。
    该论文要解决的问题是,识别用户评论的情感(positive or negative),并作归纳,为用户购买产品提供真实有效的参考。归纳的形式如下(以数码相机为例):
    数码相机:
        特征: 照片质量
            Positive:    253
                                <用户评论的句子>
            Negative:    8
                                <用户评论的句子>
        
        特征: 大小
            Positive:    135
                                <用户评论的句子>
            Negative:    12
       ……
算法过程
1. 主要步骤:
    <1> 通过用户的评论挖掘物品的特征
    <2> 识别包含观点的句子的情感
    <3> 归纳结果
这个算法与之前的算法相比,亮点在于,以物品的特征(feature-based)来判断句子的情感。
算法采用的情感分析基于句子级别(sentence-level),而不是文档级别(document-level)。
2. 挖掘过程
先上图,便于直观理解:
(1) Crawl Reviews:
     第一步当然就是爬虫,从网站上抓取用户评论并存储。
(2) POS Tagging:
     使用NLProcessor或StanFord Parser(推荐使用)对用户的每一句评论打POS标签,POS标签会给每个词标注词性,就像这样:
     I/FW recently/RB purchased/VBD the/DT canon/JJ powershot/NN g3/NN and/CC am/VBP extremely/RB satisfied/VBN with/IN the/DT purchase/NN ./.
    (原句是:I recently purchased the canon powershot g3 and am extremely satisfied with the purchase . )
(3) Frequent Feature Identification:
    要挖掘物品的特征,那么就要从句子中找到特征词。特征词都是名词,在第二个步骤的例子中,NN代表的就是名词。先将NN标注的名词或名词短语都抽取出来,然后根据关联规则挖掘(association-rule mining)找出频繁特征集(频繁特征是指,在名词总数量中所占的比例大于最小支持度的特征)。
(4) Feature Pruning:
    剪枝是最重要的步骤之一,可以非常大地提高算法的效果。此算法进行了两次剪枝:
    a. Compactness pruning
    频繁特征集包含特征短语。由于抽取特征短语不是人工进行的,而是直接把相邻的两个或多个名词组成短语,这样组成的短语不一定有意义。因此需要判断并决定是否剪枝。判断规则是:短语包含的两个或多个名词如果出现在同一个句子中,则按顺序计算两两之间的距离。如果每两个名词之间都不超过3个单词的距离,则认为这个特征短语是compact的(有影响力的)。如果特征短语有影响力的句子不超过2个,则认为这个特征短语应该被去除掉,即剪枝。
    个人认为,这个剪枝作用不大。因为被筛选为频繁特征集的短语,在所有名词中占的比例是比较大的;在用户评论的句子特别多的情况下,包含某个特征短语的句子一般都会超过2个。所以,这个剪枝对频繁特征集基本没什么影响。
    b. Redundancy pruning
    考虑一种情况:camera的特征短语 picture quality 是一个很有意义的特征,但是如果将两个词分开,变成单独的 picture 和 quality 时还很有意义吗?显然不是,picture 是要说明相机的拍照像素高,还是说明相机拍照色彩好?没有指明,那么 picture 就说明不了相机哪方面好坏。同样,quality 是说明拍照图片好看,还是相机电池质量好?还是不能说明相机到底什么好或者坏。所以要去掉包含在某个特征短语中且没有意义的特征。
    剪枝的规则是,对于特征A,如果某个特征短语也包含A,那么计算A在句子中单独出现的次数(包含A的特征短语不能出现在这个句子中)。如果次数小于一个阈值(论文中设为3),那么该特征短语被去除。这个剪枝的效果还是挺明显的。
(5) Opinion Word Extraction:
    在包含频繁特征的句子中,抽取距离特征最近的形容词,作为观点词。在POS标签中,JJ表示形容词
(6) Opinion Orientation Identification:
    这个步骤是算法最大的亮点之一,识别了观点词的语义方向(Positive or Negative),即极大程度地识别了用户对物品某一特征的情感。识别的方法是:预设30个极性明显的形容词,存储在seedList,作为已知极性的观点词集。例如,Positive:great、fantastic、nice、cool,Negative:bad、disappointing、dull等等。
    首先,对于观点词O,在WordNet中查找O的同义词。如果同义词存在于seedList中,则已知该同义词的词性,将O设为同一词性;然后把O加入到seedList中(扩充seedList)。如果同义词不存在于seedList中,则查找O的反义词。如果反义词存在seedList中,则将O设为相反词性,并加入到seedList。如果查找不到,则继续查找下一个观点词。
    不断迭代上述的查找过程,直至seedList的大小不再扩充。对于查找不到词性的观点词,则认为该词是无效的词。
(7) Infrequent Feature Identification:
    考虑到一种情况,有一些物品的特征是一部分用户特殊关注的,例如某些用户很关注相机软件(软件是相机的特征之一)的用户体验性。所以,应该识别这些特征,满足用户实际的需求。
    因为同一个观点词可以修饰多个特征,例如amazing(极好的)可以修饰相机的照片质量,也可以修饰相机的软件。所以,识别非频繁特征集的一个简单而有效的方法是,在包含观点词的句子中,找到距离观点词最近的名词,作为非频繁特征集
(8) Opinion Sentence Orientation Identification:
    最后一个重要的步骤是判断句子的情感方向(注意只判断包含观点词的句子)。判断的规则是:
    a. 抽取句子中的所有形容词,判断其词性,包含一个Positive词性的形容词就加1,包含一个Negative词性的形容词就减1。如果句子最后的值大于0,则句子的情感为Positive;如果值小于0,则为Negative。如果刚好等于0,请看下一步。
    b. 对于值刚好等于0的句子,则判断句子的属于观点词集的形容词,而不是所有的形容词。因为观点词更能体现用户的情感方向。与上一步骤类似,进行加1或减1操作,如果值大于0,则Positive;如果小于0,则Negative。那么,如果刚好又等于0,怎么办?
    c. 如果刚好又等于0,那么就认为当前句子的情感方向与前一个句子的情感方向是一样的。因为用户更倾向于在同一段话(包含多个句子)中只表扬或只批评物品。
(9) Summary Generation:
    最后的步骤便是,计算物品每个特征所属的句子是Positive或Negative的个数。然后,按照本文开头的形式进行归纳,得到Summary。

经典的观点挖掘算法(文本挖掘系列)相关推荐

  1. 关联规则挖掘算法研究

    文章目录 一. 问题背景与意义: 二. 问题定义 三. 经典的关联规则挖掘算法 3.1 层次算法 3.1.1 Apriori算法描述 3.1.2 FP-Growth算法 3.2 图挖掘算法 3.3 并 ...

  2. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、下

    经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.下 作者:July.dznlong   二零一一年二月二十二日 推荐阅读:The Scientist and Engineer's Guide t ...

  3. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  4. 遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法

    关注数学,关注AI,关注我们公众号ID:Math-AI 经典算法研究系列 遗传算法 1 初探遗传算法 Ok,先看维基百科对遗传算法所给的解释: 遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法 ...

  5. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

     经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong   二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...

  6. 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】

    本文由July 发表在他的博客中,原文参见http://blog.csdn.net/v_JULY_v/archive/2011/01/12/6132775.aspx,对遗传算法分析的很透彻,是学习算法 ...

  7. 【过程挖掘算法4】Alpha Miner及其系列算法

    Alpha算法是最早应用于过程挖掘的过程发现算法,在2002年被过程挖掘之父Wil van der Aalst提出,后续并被很多研究学者所完善,提出了一系列的扩展alpha算法,比如alpha+.Ts ...

  8. 经典算法研究系列:八、再谈启发式搜索算法

     经典算法研究系列:八.再谈启发式搜索算法 作者:July   二零一一年二月十日 本文参考: I.  维基百科. II. 人工智能-09 启发式搜索. III.本BLOG内,经典算法研究系列:一.A ...

  9. 经典算法研究系列:七、深入浅出遗传算法

    经典算法研究系列:七.深入浅出遗传算法              作者:July    二零一一年一月十二日. 本文参考:维基百科  华南理工大学电子讲义  互联网 ----------------- ...

  10. 经典算法研究系列:九、图像特征提取与匹配之SIFT算法

    经典算法研究系列:九.SIFT算法研究 作者:July.二零一一年二月十五日. 推荐阅读: David G. Lowe, "Distinctive image features from s ...

最新文章

  1. 【必看】谈谈变更过程中的运维意识
  2. 科大星云诗社动态20210530
  3. 详解WinCE下USB Host驱动开发(2)
  4. SQL Server 2000/2005 数据库分页
  5. 6 功能4:文章详情页、点赞功能
  6. ServletConfig讲解
  7. AtCoder Beginner Contest 238
  8. CentOS7 配置网络物理机ping不上虚拟机解决方法
  9. postgreSQL可视化工具pgAdmin3 导入表结构和数据
  10. 7-设计模式之行为模式(模板方法、策略、命令、责任链)
  11. 从辉煌走向消亡(下)——小型机之王DEC公司
  12. 计算机显示不出来验证码,如何解决网页图片红叉显示不出来验证码图片没显示的电脑故障...
  13. python 使用 pyodbc 访问 Sql Server
  14. SSL认证之相关证书的生成
  15. 王者荣耀交流协会-小组互评Alpha版本
  16. 教你如何写初/高级技术岗位简历
  17. uni.showToast appd端不起作用
  18. 洛谷P2141珠心算测验 C++解法
  19. 可迁移注意力攻击(TAA)
  20. java中缓存的原理

热门文章

  1. PHP可变变量的简单使用
  2. 使用eclipse搭建maven项目Java web项目
  3. git学习之简介(一)
  4. Linux基础精华(转)
  5. centos 6 安装 php 5.5 fpm支持
  6. GDI和GDI+对象的相互转换(转)
  7. [C#][SAMPLE][CODE][Control]RadioBox、CheckBox和Validating事件的相关处理
  8. mysql 数据库自动备份(navicat + windows批处理)
  9. Windows中安装Electron说明
  10. gridview怎么判断两行字符串是否相等_Python语言难学吗?第13讲——用数据做判断:布尔值...