《文本大数据情感分析》(高凯 徐华 王九硕 岳重阳 高成亮著)一书介绍社交网络等海量异构信息采集算法;对文本挖掘与自然语言处理中涉及到情感分析、微博情绪诱因分析、电商产品评价与意见挖掘等内容进行研究,并提供丰富的应用案例。
本文不仅对前四章进行了概括性的总结,并且参考了《数学之美》(吴军著)、一种基于认知评价理论的汉语文本情感识别方法(毛峡,2010)以及基于微博文本的情绪诱因分析方法研究(王九硕,2015),该书前四章目录如下:
一、引言
二、自然语言处理与应用综述
三、文本情感与情绪分析综述
四、面向微博文本的情绪及其诱因分析
一、自然语言处理概述
我们把一个要表达的意思,通过某种语言的一句话表达出来,就是用这种语言的编码方式对头脑中的信息做了一次编码,编码的结果就是一串文字。而如果对方懂得这门语言,他就可以用这门语言的解码方法获得说话人要表达的信息。这就是语言的数学本质。
自然语言处理是指利用人类交流所使用的自然语言与机器进行交互通讯的技术。通过人为的对自然语言的处理,使得计算机对其能够可读并理解。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。本书重点介绍了自然语言处理应用于机器翻译、词法分析、句法分析、命名实体识别与特征信息提取和文本摘要。
自然语言处理主要有两种处理流派。基于规则(也称为理性主义或符号主义)和基于统计(也称为经验主义或归纳法)。现在的认知是:两种方法并非相互排斥,恰恰相反,二者的融合才是对自然语言处理问题的正确技术路线。然而在技术不断发展,观念不断创新的过程中,二者有一段时间是彼此对立的。
理性主义是以建立形式化的知识系统描述语言的。它使用通过内省方式得到的规则描述语言现象,其本质是一种确定性的演绎推理。但这种方法很多时候可能不能覆盖所有应用场景,如果添加新规则,还需要注意新规则与已有规则间的相容性。这种方法的优点包括形式描述和生成能力强、较有效地处理句法分析中的长距离依存关系等,但其缺点是适应性差、不能通过学习的方法自动获取知识等。
基于统计的方法主要是基于概率和数理统计等统计机器学习方法进行处理。它一般使用概率或随机方法研究语言,通过建立语言的概率模型,利用统计学、模式识别、机器学习、深度学习等方法训练模型参数,希望可借助智能算法发现语言使用的普遍规律,并通过机器学习、深度学习等智能算法自动获取语言知识以及对未知语言现象进行推理和推测。其最大的优点是可以基于数据驱动的方式研究语言。
这两种流派各有优缺点。基于规则分析的方法的理论基础比较完善,但模型的跨领域脆弱性比较明显,适应性通常较差;基于统计的方式能够在大规模训练数据中学习到不同的文本特征,可应对不断扩张的应用场景,在基于统计模型的语音识别,机器翻译等领域能发挥作用,但其准确率受算法、训练数据量大小等因素影响,有时准确率不高。将二者结合起来,优势互补,并借此实现面向大规模真实文本的信息处理与自然语言理解是可行的。一般来说,在某些领域(如中文分词的未登录词识别方面),基于统计的机器学习方法要优于传统的基于规则的方法。
1.1 基于规则
最初,也即20世纪50年代,学术界对人工智能和自然语言理解的普遍认识是这样的:要让机器完成翻译或语音识别这样只有人类才能做的事情,就必须先让计算机理解自然语言,而做到这一点就必须让计算机有类似和我们人类这样的智能。为什么会有这样的认识?因为人类就是这么做的。对于人类来讲,一个能把英语翻译成汉语的人,一定能非常好地理解这两种语言的。这是直觉的作用。在人工智能领域,包括自然语言处理领域,后来把这种学派叫做鸟飞派。也就是看看鸟是怎么飞的,就能模仿鸟造出飞机,而不需要了解空气动力学。事实上我们知道,怀特兄弟发明飞机靠的是空气动力学而不是仿生学。
实际上,大部分人都错误地以为这两个应用靠的是计算机理解了自然语言而完成的。事实上他们靠的都是数学,more precisely,是统计。
所以在20世纪六十年代时,摆在科学家面前的问题是怎么样才能理解自然语言。当时普遍的认识是首先要做好两件事。即分析语句和获取语义。学习西方语言,都要学习他们的语法规则,词性和构词法等。这是我们人类学习语言的好工具。而非常巧的是,这些语法规则又很容易用计算机的算法描述,所以更加坚定了大家对基于规则的自然语言处理的信心。
20世纪80年代以前,自然语言处理工作中的文法规则都是人写的。这和后来才用机器总结的做法大不相同。直到2000年后,很多公司还是靠人来总结文法规则,比如著名的机器翻译公司SysTran。
科学家们原本以为随着对自然语言语法概括得越来越全面,同时计算机计算能力的提高,这种方法可以逐步解决自然语言理解的问题。但是这种想法很快遇到了麻烦。从下图来看,一个短短的句子居然分析出这么一个复杂的二维树结构,而且居然需要八条文法规则。这样一旦句子稍微长一些,这棵树会变得非常复杂。
如果想用文法规则覆盖哪怕20%的真实语句,文法规则的数量至少是几万条。而且这些文法规则写到后来甚至会出现矛盾。为了解决这些矛盾,还要说明各个规则特定的使用环境。如果想要覆盖50%以上的语句,文法规则的数量将会多到每增加一个新句子就要加入一些新的文法。例如无论在中学和大学的英语考试成绩多么好,也未必能看懂英文的电影。原因就是我们即使学了十年的英语语法,也不能涵盖全部的英语。
并且,用计算机语言解析自然语言是相当困难的。描述自然语言的文法和计算机高级程序语言的文法不同。自然语言在演变的过程中,产生了词义和上下文相关的特性。因此他的文法是比较复杂的上下文有关文法,而程序语言是我们人为设计的。属于上下文无关文法。对于上下文无关文法,计算复杂度基本上是语句长度的六次方。也就是说,长度同为10的程序语言的语句和自然语言的预计。计算机对他们进行语法分析的计算量。后者是前者的一万倍。而且随着句子长度的增长,而这计算时间的差异会以非常大的速度扩大。因此,在20世纪70年代,即使是制造大型机的IBM公司,也不可能采用规则的方法分析一些真实的语句。
1.2 从规则到统计
20世纪70年代,基于规则的语法分析很快走到了尽头。而对于语义的处理则遇到了更大的麻烦,首犯,自然语言中词的多义性很难用规则来描述,而是严重依赖于上下文或是常识。著名人工智能专家明斯基举了一个简单的反例。'the pen in the box' 和 'the box in the pen'。第一句话的意思是钢笔在盒子里。而第二句话则会让外国人有一些困惑,为什么盒子可以装到钢笔里?对于英语是母语者的人来说则很简单。因为这里pen是围栏的意思,整句话翻译成中文就是‘盒子在围栏里’。这里的pen指的是盒子还是围栏通过上下文已经无法解决,需要常识。具体来说就是‘钢笔可以放到盒子里,但是盒子比钢笔大,