最近关于NLP(Natural Language Processing)中情感分析的问题做了一些调研,现在记录一下有关的知识点以便总结和以后复习。
这是什么
情感分析顾名思义是要分析作者对于某件事情或者某个商品的态度。随着各种网络平台的搭建,每个人都可以“自由地”抒发自己的想法,买件东西可以评论,读条新闻可以评论,看个电影照样可以评论。网络上,文字无处不在,从这些文字中我们可以从一个侧面了解到大家对于这件事情或者这个商品的看法,以便更好地改进产品。这也就是情感分析的目的。
一点历史
Sentiment Analysis这个词第一次出现在(Nasukawa and Yi, 2003 ),类似地Opinion Mining第一次出现在(Dave, Lawrence and Pennock, 2003)。虽然2000年之前也有一些对情感分析的工作,但是由于互联网没有广泛普及,可以用到的数据并不多,情感分析并没有得到大家的重视和大规模研究。在它发展至今的这十几年也是大数据发展最火的十几年,从开始采用最基本的机器学习算法(例如logistic regression, SVM, Naive Bayes, Maximum Entropy)到现在更多的人采用深度神经网络。来自伊利诺伊大学的刘老师提出了LifeLong Learning的概念,更是引起了我极大的兴趣。若机器可以和人类一样活到老学到,那么离真正的人工智能可能又进了一大步。
解决方法
解决这类问题的方法可以从多个角度入手,如果有大量标记好的数据,那么可以从监督学习角度入手。但现实情况更多的是我们需要面对很多无标记的数据,如果没有人力进行标注,那可能就需要从无监督学习角度入手。学术界还衍生出半监督学习(有部分标签数据,但会利用很多无标签数据来提供算法精确度的方法),自我学习等算法。在情感识别的问题上,大部分采用了监督学习的方法,因为大部分利用了IMDB中有标签的电影评论数据。
Supervised Learning
情感分析可以被看做基本的分类问题,大部分的研究中都会将文本分为postive或者negative。Pang, Lee and Vaithyanathan (2002) 第一次采用了经典的Naive Bayes, Maximum Entropy和SVM对电影评论进行了分类,并且比较了几个分类器的性能。他们的数据来源是IMDB,并且所有数据都是标注好是positive或者negative,这给监督性学习省了很多人力工作。采用的feature是unigram。从他们的比较结果来看,SVM的表现是最好的。在后几年的研究中,逐渐引入了其他有用的feature,例如TF-IDF, POS, Sentiment Shifter等来提高分类器的精度。
除了使用经典的机器学习算法,Dave, Lawrence and Pennock, 2003 根据正面负面词汇组织了一个score function对整个文档进行打分,若高分为正面反之为负面。
Unsupervised Learning
Turney, 2002 介绍了一种基于句法规则的无监督学习方法,具体规则并没有仔细研究。另外一种无监督学习的角度是基于词典的,利用一些情感词的词性,语气强度,和一些否定词汇计算出整个文档的情感。
现有工具(专注于情感识别功能)
LingPipe: http://alias-i.com/lingpipe/demos/tutorial/sentiment/read-me.html 基本上实现了上文提到的Pang and Lee论文中提到的算法,当然是从监督学习的角度出发。所以在用之前应该有标记好的数据。只适用于英文。
Stanford CoreNLP:http://nlp.stanford.edu/sentiment/code.html Stanford用到了时下最流行的深度学习,创业公司metamind 也是用了相同的模型,因为创始人就是整个coreNLP中sentiment analysis的发明人。跑了一下demo,可以很详细分析出每句话是正面或负面,效果很好。但貌似只能适用英文,虽然Stanford有强大的中文自然语言处理小组http://nlp.stanford.edu/projects/chinese-nlp.shtml,也提供了很多有用的工具例如分词,POS,NER等。但在情感识别上还没有对中文进行支持。
现有的一些情感分析工具大部分都基于英文,分析的方法也很类似。在中文的方面,情感分析工具还是个空缺。
有关中文
面临的一些主要挑战:1.中文相对英文首先不同的是需要分词,分词的好坏直接决定了后面做分析的精确度。在分词方面倒是有些工具可以利用,Stanford Chinese Segmenter, 哈工大的LTP都可以做到。2.若采用经典监督学习角度分析,缺失有标记的数据库,无法完成训练。3.英文中很多的现成成果无法对中文使用。
有很多学者也专注与这个问题做了很多cross language的研究,就是如何应用英语中很多的成果到其他语种中去。大都基于机器翻译做一次中间步骤,例如将语料库翻译成中文作为训练集或者将无标签数据翻译成英文做为待预测数据,但都跟机器翻译的准确度紧密相连,所以不是很成熟。
关于未来
深度学习慢慢在渗透着AI的各个领域,NLP自然也不例外。深度学习大师Yoshua Bengio 也预测NLP会是深度学习下一个爆发的点。不过上文提到的刘老师提出的lifelong learning貌似更高大上。在自然语言处理上,虽然已经有很多研究,当然有很多不足。尤其是在对英语以外的语种上,可以做的事情还有很多。
Never Stop Thinking! Peace!