情感分类方法简介

情感分析(Sentiment analysis),又称倾向性分析,意见抽取(Opinion extraction),意见挖掘(Opinion mining),情感挖掘(Sentiment mining),主观分析(Subjectivity analysis),它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程,如从评论文本中分析用户对“数码相机”的“变焦、价格、大小、重量、闪光、易用性”等属性的情感倾向。
是NLP领域一个比较重要的课题。

情感分类有什么用

物品好坏分析: 从评论中分析物品的好坏。例如电影好坏,是否值得看。
物品属性分析:例如某些价位区间几款车的舒适度,油耗, 操作性能等。
产品反馈分析: 产品哪些功能点最受用户喜欢,哪些功能最受用户吐槽。
网民舆情分析: 例如分析美团外面清真事情等。
金融走势分析:例如,2012年5月,世界首家基于社交媒体的对冲基金 Derwent Capital Markets 上线。它会即时关注Twitter 中的公众情绪指导投资。
总的来说:情感分类分析再小到平台物品,产品本身,大到金融事情都有其用武之地。随着这波数据浪潮和人工智能浪潮的兴起。这一领域将会起到越来越重要的作用。

情感分类的任务有哪些

情感分析主要目的就是识别用户对事物或人的看法、态度(attitudes:enduring, affectively colored beliefs, dispositions towards objects or persons),参与主体主要包括

  • Holder (source) of attitude:观点持有者
  • Target (aspect) of attitude:评价对象
  • Type of attitude:评价观点
  • From a set of types:Like, love, hate, value, desire, etc.
  • Or (more commonly) simple weighted polarity: positive, negative, neutral
  • Text containing the attitude: 评价的文本, 一般是句子或者整篇文档。

通常,我们面临的情感分析任务包括如下几类:

  • Simplest task: 文本态度是积极的还是消极的或者是中立的。
  • More complex: 将文本态度分为1到5个档次。
  • Advanced: 探测评价对象, 观点源以及文本态度。
    下面内容将主要覆盖前面两类任务。至于Advanced 内容还需要再做调研。

情感分类的主要方法

基于情感词典的方法

基于词典的方法主要通过制定一系列的情感词典和规则,对文本进行拆句、分析及匹配词典(一般有词性分析,句法依存分析),计算情感值,最后通过情感值来作为文本的情感倾向判断的依据。
做法:基于词典的情感分析大致步骤如下:
对大于句子粒度的文本进行拆解句子操作,以句子为最小分析单元;
分析句子中出现的词语并按照情感词典匹配;
处理否定逻辑及转折逻辑;
计算整句情感词得分(根据词语不同,极性不同,程度不同等因素进行加权求和);
根据情感得分输出句子情感倾向性。
如果是对篇章或者段落级别的情感分析任务,按照具体的情况,可以以对每个句子进行单一情感分析并融合的形式进行,也可以先抽取情感主题句后进行句子情感分析,得到最终情感分析结果。
其中最重要的是情感词典的获取。

  1. 是获取成熟的开放词典:例如:GI(The General Inquirer), LIWC (Linguistic Inquiry and Word Count), MPQA Subjectivity Cues Lexicon, Bing Liu Opinion Lexicon, SentiWordNet。
  2. 由于特点领域的需要有时需要根据给定的语料库做情感词典的学习。
    常见的情感词典构建方法是基于半指导的bootstrapping学习方法,主要包括两步
    2.1 Use a small amount of information(Seed)
    2.1.1 A few labeled examples
    2.1.2 A few hand-built patterns
    2.2 寻找其它有相似极性的词:
    2.2.1 使用连接词转折词等
    2.2.2 在同一文档中同一窗口区间的词
    2.2.3 在wordnet 中找同义词和反义词
    2.2.4 使用种子词典和半监督学习的方法寻找相似极性的词,具体可以参考文献3 和 4

基于ML方法

基于词典的方法实现方便,高效。但主要缺点是靠谱的词典不好找, 找到的基本都是特定领域的资料。另外由于自然语言千变万化的特点, 规则难于满足大部分场景。效果相较于基于学习的方法效果有一定差距。
基于ML方法就是将情感分类当做普通的分类问题:例如(negative, positive, neuraltive)
这里面最重要的问题是特征的提取问题: 常用的文本特征提取,一般是基于tf-idf, 向量表示, 之后分类模型常用的有 maxent, svm, naive bayes等。
由于TF-IDF,是高纬度高稀疏的,缺乏语义,特征表达能力很弱。从深度学习流行以来在文本表示领域出现了一些效果不错的方法。
其中比较重要的是采用词向量(例如word2vector, glove)进行表示。例如fasttext 就是采用此类方法进行分类, 在时间复杂度远低于深度学习的方法的同时取得了相当的效果(至少在论文发表时是state of the art)。
在运算力和数据足够时:可以考虑采用CNN 和 RNN去自动学习语言中词的表示。
数据不足的问题: 机器学习问题最重要的问题基本是数据问题了。往往在现实中大量标注的数据并不可获得, 为了解决这个问题,一些有远见卓识的大牛正在借助迁移学习, 生成对抗网络在解决这些问题,并且取得了一定的效果。具体可以参考文献5和6.
具体:利用容易获取的大量未标注数据,可以参考文献6,学习一个传统的语言模型,或者学习一个端到端的 编码器,从而得到一个encoding model来表征输入的文本。再利用少量的标注数据(或购买,或少量人工标注),在第一步获得的encoding model的基础上进行supervised learning,在这个过程中对encoding model进行fine tune,获得最终的分类模型。

总结

本文主要讲了情感分类的概念,作用,主要目的,以及当前主要方法。

参考文献

  1. https://www.cs.uic.edu/~liub/FBS/SentimentAnalysis-and-OpinionMining.pdf
  2. http://52opencourse.com/235/%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E7%AC%AC%E4%B8%83%E8%AF%BE-%E6%83%85%E6%84%9F%E5%88%86%E6%9E%90%EF%BC%88sentiment-analysis%EF%BC%89
  3. http://acl.ldc.upenn.edu/P/P97/P97-1023.pdf
  4. https://www.isi.edu/natural-language/people/hovy/papers/04Coling-opinion-valences.pdf
  5. https://arxiv.org/pdf/1505.07818.pdf
  6. https://arxiv.org/abs/1511.01432
  7. https://www.zhihu.com/question/31471793

推荐阅读更多精彩内容