前言
随着移动互联网的飞速发展,特别是物联网(InternetofThing,IoT)的飞速发展,人与设备的语言交互场景也越来越多,并且越来越成为核心。这种语言的交互既包括纯文字的,也包括语音的。自然语言处理(NaturalLanguageProcessing,NLP)就是以电子计算机、编程语言为工具对人类特有的书面和口头形式的自然语言信息进行各种类型处理和加工的技术。当然,随着技术的不断发展,其处理领域也出现了跨形态的组合。比如通过与图形图像处理技术的结合,可以实现看图说话、在线答题等应用。所以,自然语言处理是一门涉及语言学、计算机科学,当然还有数学的交叉性科学。
自然语言处理的目的是为了让计算机能够理解人的语言,然后做出相应的处理或者应答。根据应用场景的不同,自然语言处理可以分为如下三点:(1)信息抽取,包括自动摘要、自动检索、舆情分析等;(2)语言理解,包括机器翻译、人机对话、语义理解等;(3)跨形态组合,包括看图说话、语音自动合成、辅助教学等。这些应用都是利用自然语言处理技术,对所需要处理的信息进行挖掘和分析,找出人们想要的东西,进而做出响应。而落实到具体的应用,又会衍生出很多不同的应用系统,由此衍生出来的应用系统包括但不限于:信息自动抽取系统、信息自动检索系统、文本信息挖掘系统、机器翻译系统、人机对话系统、图片描述自动生成系统、语音自动识别系统、语音自动合成系统、计算机辅助教学系统,等等。
因为自然语言自身的复杂性,比如:很多歧义、结构复杂多样、表达千变万化,导致其处理方法纷繁复杂,要考虑非常多的情景。所以上述这些系统之间又存在交叉,或者上下关联,或者前后依赖等复杂的关系。而这些复杂的应用对于一个初学者来说,是非常庞杂和难以掌握的,在学习的过程中难免存在因为其中某一个细节不能掌握,而影响整个进程的进度。或者是虽然理解了算法的数学原理,但是怎么在实际场景中应用,以及当前算法能解决哪些实际问题,还是不了解。在笔者学习的过程中,发现目前出版的一些书籍,或者是偏理论性的,会介绍很多自然语言处理技术发展的历史,比如符号逻辑的发展轨迹、语义网络的发展轨迹、语言学派和统计学派的“恩怨情仇”,会让初学者在学习的过程中抓不住重点,有时候又感觉它们好像就是一回事;又或者介绍的内容过于技术,开篇就把其中涉及的一些数学知识全都介绍一遍,因为这其中有很多数学知识是比较高阶的,比如隐马尔科夫链、条件随机场、数理逻辑推理等,在介绍数学知识的过程中,又难免会涉及相关的证明。本来其数学形式就比较复杂,再加上连环的证明就更难懂了,对于数学基础稍微薄弱一点的读者,就感觉没有学习的欲望和必要了。但是在实际应用中,其实这些烦琐的证明根本不需要,有时候只需要记住一个结论,然后根据自己数据的情况,优化模型中的参数就可以了。所以笔者就想结合自己学习过程中和实际工作中的一些经验和教训,从应用的角度来对自然语言处理中的一些技术进行介绍。在介绍的时候,希望尽量地避免烦琐和突兀的数学证明,从应用的角度尽可能简洁明了地对一个算法或者处理系统进行简要的介绍,先让大家对这个方法有一个直观感性的认识,然后再深入了解其中的难点,进而深入学习和攻克难点。
本书采用以应用为主,算法和实现为辅的形式对自然语言处理中的一些技术进行介绍。对于算法数学原理的介绍,都是穿插在每一个应用的介绍中,对每一部分的数学知识进行分别介绍和讲解,没有开篇便对所涉及的数学知识进行一个全面的介绍,这样大家就不会因为某一个部分的数学知识不完备,或者掌握起来有困难而放弃整个知识体系的学习,这样大家就可以独立学习和掌握。同时因为知识遗忘的必然性,笔者将数学知识融入到应用中进行介绍,就更容易让读者记住。否则前后脱节之后,就忘记了之前讲解的数学原理,即使在应用中又要重新学习,也并不一定能够知道具体的应用原理。
因此,笔者完全从应用的角度来进行各个内容的组织,没有涉及太多的处理技术起源、变革、发展等历史信息。这一方面是因为各个技术都有自己的长处和缺点,这个是理论学派争论的焦点,但不是应用层面应该关心或者需要表明立场的地方;另一方面作为主要介绍应用实战的书,这里更多的是想让读者了解对于同一个问题目前的一些处理的方法和这些方法之间的优劣,以及相互的关联,以便找到解决问题更好的方法,这样也更有利于整个事情的发展。所以从做事情的本身来说,我们需要关心的是事情怎么能够做起来,没有做起来是因为什么,所以我们更多关心的是“术”的事情,而对于“道”的层面更多的是了解,是取众家之长,来“集大成”,而不能剑走偏锋。
目前,随着源工具的不断增加,大家对底层应用的开发需求在逐渐降低,所以本书先从上层应用介绍入手,让读者能够直接用起来,这样更有利于读者边实践边学习,也可以避免大家因为学习底层技术太难而阻碍后期应用的学习。从企业的角度出发,缺的也不是底层通用的处理技术和能力,更多的是缺少对实际业务的处理能力,业务跑起来之后,整个系统便会随着业务的发展而不断发展。所以本书采用以应用贯串始终的方式来进行相关技术的介绍和说明。
具体来说,本书主要从以下三个方面介绍了自然语言处理中相关的一些技术。
1)语义模型详解:主要是从应用的角度介绍自然语言处理中的一些语义处理模型,比如关键词提取、计算词距离、文本自动生成等。
2)自然语言处理系统基础算法:这一部分主要是从基础系统搭建的角度对相关算法进行介绍。包括分词、词性标注、句法分析等。这两部分介绍的内容又分别从使用原理、实现原理、具体的代码实现,以及对当前方法的思考这四个角度进行介绍。
3)系统案例实战:介绍了搭建一个舆情分析和挖掘系统所要涉及的环节、各个环节的算法实现,以及部分实现代码。
本书在写作过程中力求普及并与实践相结合,尽可能地照顾到不同层次不同专业的读者。另外,本书是以应用场景来组织各个内容的,每一个章节都包含一个完整的应用解决方案:问题解决的原理、实现的算法原理、具体算法的实现,所以读者可以根据自己的需要独立地学习各个章节的内容。在各个章节的学习过程中,笔者强烈建议读者在学习具体方法之前,一定要认真地理解所要解决问题的具体场景。要理解当前场景的输入是什么、输出是什么,为什么会是这样的结构,只有弄明白了这些,才会对算法有更深入的理解,也才能更好地使用所学习的算法,做到举一反三。因为算法本身是一种数据处理逻辑,所以只要具有相同处理逻辑的问题都可以用同样的算法,比如最大熵模型发挥了巨大的作用是人们找到了其适用的场景,而不是对模型进行各种变形以让其去适合具体的应用。
本书在写作的过程中参考了很多国内外学者的论文和著作。如果没有他们的出色工作,没有他们极为宝贵的研究成果,本书是写不出来的。在本书出版之际,谨向他们表示衷心的感谢。
在本书写作过程中,笔者常为自己的学识不足而苦恼、自然语言处理作为一门交叉性边缘性学科,涉及语言学、计算机科学、数学等各个方面的知识,笔者学识浅陋,论述之中倘有不当,恳请读者批评指正。有任何意见和建议请发到392071814@qq.com,不胜感激。
最后,谨向帮助、支持和鼓励我完成本书的我的家人、同事、领导、朋友以及出版社的领导、编辑致以深深的敬意和真挚的感谢!
作者
2017年9月于杭州
作者简介
兰红云,湖北襄阳人。曾任职于猎豹移动,现为阿里影业数据挖掘专家,拥有多年的算法和数据挖掘的工作经验,申请过多项算法专利。研究方向包括自然语言处理和机器学习。
目录
第1篇语义模型详解
第1章关键词抽取模型 3
1.1 TF-IDF算法实现关键词抽取 4
1.2 TextRank算法实现关键词抽取 11
1.3 基于语义的统计语言模型实现关键词抽取 16
第2章短语抽取模型 22
2.1 基于互信息和左右信息熵实现短语抽取 23
2.2 TextRank算法实现短语抽取 28
2.3 LDA算法实现短语抽取 31
第3章自动摘要抽取模型 38
3.1 决策树算法实现自动摘要 39
3.2 基于逻辑回归算法实现自动摘要 44
3.3 贝叶斯算法实现自动摘要 50
第4章深度学习——计算任意词距离模型 55
4.1 FP-Growth算法实现词距离计算 56
4.2 N-Gram算法实现词距离计算 61
4.3 BP算法实现词距离计算 65
第5章拼音汉字混合识别模型 70
5.1 贝叶斯模型实现拼音汉字混合识别 71
5.2 HMM模型实现拼音汉字混合识别 75
5.3 RNN神经网络模型实现拼音汉字混合识别 80
第6章文本自动生成模型 87
6.1 基于关键词的文本自动生成模型 88
6.2 RNN模型实现文本自动生成 93
第2篇自然语言处理系统基础算法
第7章Dijkstra算法 101
7.1 算法应用原理介绍 102
7.2 算法数学原理介绍 102
7.3 算法源码说明 106
7.4 算法应用扩展 107
第8章AC-DoubleArrayTrie算法 108
8.1 算法应用原理介绍 109
8.2 算法数学原理介绍 111
8.3 算法应用扩展 116
第9章最大熵算法 117
9.1 算法应用原理介绍 118
9.2 算法数学原理介绍 119
9.3 算法源码说明 124
9.4 算法应用扩展 125
第10章CRF算法 126
10.1 算法应用原理介绍 127
10.2 算法数学原理介绍 130
10.3 算法源码说明 135
10.4 算法应用扩展 136
第11章马尔可夫逻辑网算法 137
11.1 算法应用原理介绍 138
11.2 算法数学原理介绍 142
11.3 算法源码说明 144
11.4 算法应用扩展 145
第12章DIPRE算法 147
12.1 算法应用原理介绍 148
12.2 算法数学原理介绍 151
12.3 算法源码说明 152
12.4 算法应用扩展 153
第13章LSTM算法 155
13.1 算法应用原理介绍 156
13.2 算法数学原理介绍 158
13.3 算法源码说明 163
13.4 算法应用扩展 165
第14章TransE算法 166
14.1 算法应用原理介绍 167
14.2 算法数学原理介绍 170
14.3 算法源码说明 172
14.4 算法应用扩展 174
第3篇系统案例实战
第15章搭建舆情分析与挖掘的系统 177
15.1 系统功能设计简述 178
15.2 系统模块实现详解 181
15.3 系统实现源码说明 186
内容摘要
本书主要从语义模型详解、自然语言处理系统基础算法和系统案例实战三个方面,介绍了自然语言处理中相关的一些技术。对于每一个算法又分别从应用原理、数学原理、代码实现,以及对当前方法的思考四个方面进行讲解。本书面向的读者为有志于从事自然语言处理相关工作的在校学生、企事业单位工作人员等人群。本书的结构是由浅入深地进行相关内容的介绍,以满足不同层次读者的学习需求。
主编推荐
全书主要从语义模型详解、自然语言处理系统基础算法和系统案例实战三个方面,介绍了自然语言处理中相关的一些技术。每一个算法又分别从应用原理、数学原理、代码实现,以及对当前方法的思考四个方面进行讲解。
1)语义模型详解:从应用的角度介绍自然语言处理中的一些语义处理模型,比如关键词提取、计算词距离、文本自动生成等。
2)自然语言处理系统基础算法:这一部分主要是从基础系统搭建的角度对相关算法进行介绍。包括分词、词性标注、句法分析等。
3)系统案例实战:介绍了搭建一个舆情分析和挖掘系统所涉及的环节、各个环节的算法实现,以及部分实现代码。
精彩内容
。。。
以下为对购买帮助不大的评价