首页>参考读物>计算机科学与技术>人工智能

Python自然语言处理
作者 : [印度]雅兰·萨纳卡(Jalaj Thanaki) 著
译者 : 张金超 刘舒曼 译
出版日期 : 2018-08-29
ISBN : 978-7-111-60670-3
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 297
开本 : 16
原书名 : Python Natural Language Processing
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书旨在回答三个问题:第一个,什么是自然语言处理;第二个,为什么大多数人会使用Python来开发自然语言处理应用程序;最后一个也很重要的问题,在学习自然语言处理的时候,有哪些Python相关资源可用。读完本书,读者便会对此了然于胸。

图书特色

图书前言

本书的名字会给你带来广阔的联想。作为读者,你会从头学习关于自然语言处理的方方面面。本书用了非常简单的语言来具体阐述NLP中的概念,许多真实有趣的实用样例会加深你对该领域的理解。通过实现这些样例,能提升你的NLP技能。
现在,我来回答一些经常会被问起的NLP领域的问题。这些问题启发了我来写这样一本书。对我来说,让所有读者能够理解我写这本书的初衷,是一件非常重要的事情。
第一个经常被问起的问题是:什么是自然语言处理?第二个是:为什么在开发自然语言处理程序时主要会用Python呢?最后一个重要的问题是:在学习自然语言处理的时候,有哪些资源可用?现在,让我们来看一下答案!
第一个问题的答案是,自然语言,简单来说,就是你所说的、写的、读的或理解的人类自然的语言,同时是交流的媒介。我们使用计算机算法、数学概念、统计技术来处理这些语言,使得机器能够像人一样理解。
现在来回答第二个问题。最简单和直接的原因是Python有大量的库,这些库在你开发自然语言处理应用程序的时候,会让事情变得简单。第二个原因是,如果你有C或是C++的编程经验,你不用再担心会遇到内存泄漏的问题。Python的解释器会为你解决这个问题,你要做的仅仅是关注主要的编程过程。除此之外,Python是一个程序员友好的语言,与其他面向对象的语言比起来,你只需要写少量的代码就可以做更多的事情。因此,所有的这些事实都驱动着人们使用Python来开发自然语言处理应用程序以及其他数据科学相关的应用,以进行更快的建模。
最后一个问题对我来说很重要,因为我经常向朋友解释上面的答案,他们听完后会想学Python,但是有哪些可用的资源呢?我通常会推荐一些书籍、博客、YouTube上的视频,还有Udacity、Coursera等教育平台。但是几天以后,他们还会来问我有没有一个单一的学习资源—书籍或博客。不幸的是,答案是否定的。在那个时刻,我意识到兼顾所有这些资源对他们来说是比较困难的事情。这种痛苦的领悟成了我写作这本书的动力。
所以在这本书里,我尝试着覆盖大多数自然语言处理中的必要知识,这些对每个人来说都是有用的。一个好消息是我提供了很多实用的Python样例,这样读者便既能从理论角度,也能从应用角度出发理解这些概念。阅读、理解、编码是这本书的三个主要部分,会帮助读者轻松学习。
本书内容
第1章提供了对自然语言处理和自然语言处理领域其他分支的介绍。我们会看到构建自然语言处理应用程序的各个阶段,并讨论nltk安装的问题。
第2章展示了语料分析的各个方面。我们将会看到不同类型的语料和语料中展现的数据属性,会接触到各种语料格式,像CSV、JSON、XML、LibSVM等。还会看到关于网页爬取的样例。
第3章会帮助你理解自然语言里面最基本的东西,也就是语言学。我们会看到词法分析、句法分析、语义分析、消歧等诸多概念。也会使用nltk来实际地理解这些概念。
第4章会帮助你弄懂各种不同类型的预处理技术以及该怎样定制它们。我们将会看到预处理的各个阶段,像数据准备、数据处理、数据转换。除了这些,你还会从实际应用的角度来理解预处理。
第5章是自然语言处理应用程序里最核心的部分。我们会看到不同的算法和工具是怎样用于生成机器学习算法的输入的,它们会被用来开发自然语言处理应用程序。我们也会理解特征工程里的统计概念,然后会对这些工具和算法进行定制化开发。
第6章会让你理解处理语义问题时遇到的自然语言处理概念。我们会看到word2vec、doc2vec、GloVe等,以及从《权力的游戏》数据集中获得向量的一些word2vec的实际应用。
第7章会给出很多构建一个规则式系统的细节,以及开发类似自然语言处理系统时,需要牢记的方方面面。我们会看到制定规则的过程和编码规则的过程,也会看到怎样开发一个基于模板的聊天机器人。
第8章会提供给你一些新的机器学习技术。我们会看到用于开发自然语言处理应用程序的各种机器学习算法,也会使用机器学习方法实现一些强大的自然语言处理应用程序。
第9章会介绍人工智能的很多方面。我们将会看到人工神经网络的基本概念,以及如何才能构建一个人工神经网络。我们将会理解深度学习的核心,研究深度学习的数学原理,并看一下深度学习是怎样用来做自然语言理解和自然语言生成的。你可以在这里看到很多有意思的实践样例。
第10章会简单介绍一些框架,像Apache Hadoop、Apache Spark和Apache Flink。
第11章会介绍怎样提高NLP技能。
第12章会介绍针对必要程序的安装指导。
预备知识
下面来说一下阅读这本书的预备知识。不用紧张,这里不涉及数学或统计学知识,仅仅是Python的基本编程语法。除了这些之外,你需要在计算机上安装Python 2.7.X或Python 3.5.X。推荐你使用任意的Linux系统。
Python的一些依赖列表可以在如下链接找到:https://github.com/jalajthanaki/NLPython/blob/master/pip-requirements.txt.
现在来看一下所需的硬件条件。有4GB内存和双核CPU的电脑足够执行普通代码,但是对于机器学习和深度学习样例,你可能需要更多的内存(8GB或16GB)和GPU计算资源。
本书的读者对象
本书面向想应用NLP技术来使他们的应用程序更智能的Python开发者,可作为入门NLP领域的资料。
下载样例源码
本书的代码在GitHub网站上可找到:https://github.com/PacktPublishing/Python-Natural-Language-Processing。另外还有一些拓展资源和视频可以在如下地址找到:https://github.com/PacktPublishing/。
另外,读者还可在机工新阅读网站(www.cmpreading.com) /上搜索本书,下载源代码。
代码文件下载完以后,确保你的解压工具是可用的:
WinRAR/7-Zip在Windows系统下
Zipeg/iZip/UnRar在Mac系统下
7-Zip/PeaZip在Linux系统下

上架指导

人工智能\自然语言处理

封底文字

本书从自然语言处理的基础讲起,阐述了Python成为搭建自然语言处理系统的首选语言的原因,例如其强大的社区支持和众多便捷的框架。本书还对各种免费的语料和不同类型的数据集进行了介绍,便于针对具体的自然语言处理应用找到合适的数据和处理方法。同时,本书也讲了如何对句子的不同部分进行处理和分析。
  在阅读本书的过程中,你将学会对文本进行句法和语义的分析,也会了解自然语言中歧义的处理方法,弄清文本分析的各种应用场景。你也会学到如何搭建一个自然语言处理的环境,来对句子和语言进行分析。你还会理解如何运用机器学习方法和深度学习方法从文本中抽取信息。
本书特色:
涉及的自然语言处理任务和方法较多,内容比较概述。适合初学者根据本书所讲内容,对自然语言处理这个任务有一个比较明晰结构化的图景认识,能够走通一个自然语言处理系统的搭建流程。
本书用大量的例子帮助读者理解概念和算法,同时作者有较强的工业界背景,非常强调系统和算法的实现,且提供了大量的可执行代码供读者学习。
本书偏重于教会读者入门自然语言处理领域的方法,提供了大量的学习建议。

译者序

人类从蛮荒时代进入文明时代的一个重要标志是文字的出现,即开始以符号的形式记录发生的事件。一方面,文字的出现说明人类的思维方式开始从具象往抽象方向进化,能够从现实当中具体的事情联想到某个或某些由抽象线条构成的符号,也能从这些符号演绎出现实中的事情;另一方面,文字的出现使得人类社会具有了存储信息和传递信息的能力,促成了个体和群体之间跨越地域和时间的交流。
中国人的远古神话传说中,仓颉造字引发了“天雨粟,鬼夜哭”。唐人张彦远对此的解释是:有字之后,“造化不能藏其秘,故天雨粟;灵怪不能遁其形,故鬼夜哭”。文字对于人类文明的贡献远超过像冶炼、排水等这些生产生活中的实用技术。历史和文化以文字为载体,传播千年,横跨世界。当今时代,文字依旧扮演着信息传递载体的作用。不同的是,我们目前日常接触和处理的文本信息大部分存在于计算机、手机等数字设备上。借助高速的计算设备,使用有效的算法对这些数字化的文本信息进行处理分析、抽取语义、完成特定任务,就是自然语言处理(Natural Language Processing,NLP)要做的事情。
目前我们所处的时代,被称为大数据(Big Data)时代和人工智能(Artificial Intelligence)时代。所谓的大数据中最大部分的数据就是文本数据,互联网上每天会产生常人难以想象规模的文本数据,人类社会的绝大部分知识蕴含在文本信息中。人工智能研究中一个重要的部分就是实现机器设备和人的无障碍交互,而人类最自然、最常用和最精确的交互方式便是使用语言和文字。因此可以从一定程度上说,计算设备对自然语言处理的能力,决定了其人工智能的智力。
本书致力于系统介绍自然语言处理领域中的一些概念、术语、应用任务、算法和技术、系统搭建方法等,非常适合作为对自然语言处理任务感兴趣的初学者进入该领域的入门书籍。书中第1章对自然语言处理任务进行了总体介绍,第2章介绍了语料和数据的获取和构建方法,第3章介绍了句子的结构,第4章介绍了数据预处理的方法,第5章和第6章介绍了特征工程和一些算法,第7章介绍了规则式自然语言处理系统的搭建方式,第8章介绍了自然语言处理中的机器学习方法,第9章介绍了自然语言处理中的深度学习方法,第10章介绍了一些高级工具,第11章给了一些实用的学习建议,以帮助读者进行提升,第12章是书中用到的软件和环境的安装指导。
本书具有几个明显的特点:
涉及的自然语言处理任务和方法较多,内容比较概述。初学者根据本书所讲内容,对自然语言处理会有一个比较明晰的结构化的图景认识,能够走通自然语言处理系统的搭建流程。
书中有大量的例子帮助读者理解概念和算法,同时由于作者拥有较强的工业界背景,书中非常强调系统和算法的实现,提供了大量的可执行代码供读者学习。
本书更偏重于教会读者入门自然语言处理领域的方法,提供了大量的学习建议,供读者参考。
最后,非常感谢刘群老师的推荐和机械工业出版社华章分社的信任,让我们承担了本书的翻译工作。在几个月的时间里,我和我的博士生师妹刘舒曼对这本书进行了认真的翻译和校对。在这个过程中,我们也从书中学习到了丰富的知识,看到了作者一些有趣的工业界视角,在此向作者Jalaj Thanaki女士致谢!

推荐序

数据科学正极速地改变着这个世界和我们的商业领域,例如零售业、银行和金融服务业、出版业、制药业、制造业等。各种不同格式的数据以指数级别的速度在产生,包括定量的数据、定性的数据、有结构的数据、无结构的数据、语音数据、视频数据等。可以利用这些数据来避免风险和诈骗、改善用户体验、增加营收、精简作业等。
许多机构正在快速地拥抱数据科学并投资了很多高端的数据科学团队。在银行和金融保险领域从业12年多,我见证了该领域接受把数据分析当作生意来做,而不再仅仅是用来支持服务。这一点在金融科技和数字贷款领域尤其明显。
在Jalaj上大学时,我就已经认识她了,她的活力四射和强大的自我驱动力让我印象深刻。她的研究能力、毅力、投入程度、纪律性和快速掌握复杂概念的能力,让她在短短4年的企业工作中,取得了极大的成就。
Jalaj在数学和统计方面有很好的天赋,并且在面对学习工业界新出现的复杂数据统计分析方法时,表现出了持续的热情。她有丰富的数据科学领域的工作经验,我目睹她完成了很多令人瞩目的项目,这些项目围绕着自然语言处理、机器学习、基础语言学分析、神经网络和深度学习展开。她的工作节奏高效快速,并有很高的工作热情,这些给其所在的组织带来了明确可量化的成果。
Jalaj最特别的品质之一是,她时刻准备着解决商业中的各种问题,不论是最基本的问题还是最复杂的问题。她是一个很好的团队合作者,能够保证所在机构从她的出色才能中获得最大收益。
在本书中,Jalaj会带领我们开始一场令人兴奋并深刻的自然语言处理之旅。她会从基本概念讲起,直至最新的概念,例如机器学习方法和深度学习方法是如何应用在自然语言处理中的。
祝愿Jalaj在未来做的更好!

Sarita Arora
SMECorner首席分析官
印度孟买

图书目录

译者序
推荐序
作者介绍
关于审校人员
前言
第1章 引言 1
1.1 自然语言处理 1
1.2 基础应用 5
1.3 高级应用 6
1.4 NLP和Python相结合的优势 7
1.5 nltk环境搭建 7
1.6 读者提示 8
1.7 总结 9
第2章 实践理解语料库和数据集 10
2.1 语料库 10
2.2 语料库的作用 11
2.3 语料分析 13
2.4 数据属性的类型 16
2.4.1 分类或定性数据属性 16
2.4.2 数值或定量数据属性 17
2.5 不同文件格式的语料 18
2.6 免费语料库资源 19
2.7 为NLP应用准备数据集 20
2.7.1 挑选数据 20
2.7.2 预处理数据集 20
2.8 网页爬取 21
2.9 总结 23
第3章 理解句子的结构 24
3.1 理解NLP的组成 24
3.1.1 自然语言理解 24
3.1.2 自然语言生成 25
3.1.3 NLU和NLG的区别 25
3.1.4 NLP的分支 26
3.2 上下文无关文法 26
3.3 形态分析 28
3.3.1 形态学 28
3.3.2 词素 28
3.3.3 词干 28
3.3.4 形态分析 28
3.3.5 词 29
3.3.6 词素的分类 29
3.3.7 词干和词根的区别 32
3.4 词法分析 32
3.4.1 词条 33
3.4.2 词性标注 33
3.4.3 导出词条的过程 33
3.4.4 词干提取和词形还原的区别 34
3.4.5 应用 34
3.5 句法分析 34
3.6 语义分析 36
3.6.1 语义分析概念 36
3.6.2 词级别的语义 37
3.6.3 上下位关系和多义词 37
3.6.4 语义分析的应用 38
3.7 消歧 38
3.7.1 词法歧义 38
3.7.2 句法歧义 39
3.7.3 语义歧义 39
3.7.4 语用歧义 39
3.8 篇章整合 40
3.9 语用分析 40
3.10 总结 40
第4章 预处理 42
4.1 处理原始语料库文本 42
4.1.1 获取原始文本 42
4.1.2 小写化转换 44
4.1.3 分句 44
4.1.4 原始文本词干提取 46
4.1.5 原始文本词形还原 46
4.1.6 停用词去除 48
4.2 处理原始语料库句子 50
4.2.1 词条化 50
4.2.2 单词词形还原 51
4.3 基础预处理 52
4.4 实践和个性化预处理 57
4.4.1 由你自己决定 57
4.4.2 预处理流程 57
4.4.3 预处理的类型 57
4.4.4 理解预处理的案例 57
4.5 总结 62
第5章 特征工程和NLP算法 63
5.1 理解特征工程 64
5.1.1 特征工程的定义 64
5.1.2 特征工程的目的 64
5.1.3 一些挑战 65
5.2 NLP中的基础特征 65
5.2.1 句法分析和句法分析器 65
5.2.2 词性标注和词性标注器 81
5.2.3 命名实体识别 85
5.2.4 n元语法 88
5.2.5 词袋 89
5.2.6 语义工具及资源 91
5.3 NLP中的基础统计特征 91
5.3.1 数学基础 92
5.3.2 TF-IDF 96
5.3.3 向量化 99
5.3.4 规范化 100
5.3.5 概率模型 101
5.3.6 索引 103
5.3.7 排序 103
5.4 特征工程的优点 104
5.5 特征工程面临的挑战 104
5.6 总结 104
第6章 高级特征工程和NLP算法 106
6.1 词嵌入 106
6.2 word2vec基础 106
6.2.1 分布语义 107
6.2.2 定义word2vec 108
6.2.3 无监督分布语义模型中的必需品 108
6.3 word2vec模型从黑盒到白盒 109
6.4 基于表示的分布相似度 110
6.5 word2vec模型的组成部分 111
6.5.1 word2vec的输入 111
6.5.2 word2vec的输出 111
6.5.3 word2vec模型的构建模块 111
6.6 word2vec模型的逻辑 113
6.6.1 词汇表构建器 114
6.6.2 上下文环境构建器 114
6.6.3 两层的神经网络 116
6.6.4 算法的主要流程 119
6.7 word2vec模型背后的算法和数学理论 120
6.7.1 word2vec算法中的基本数学理论 120
6.7.2 词汇表构建阶段用到的技术 121
6.7.3 上下文环境构建过程中使用的技术 122
6.8 神经网络算法 123
6.8.1 基本神经元结构 123
6.8.2 训练一个简单的神经元 124
6.8.3 单个神经元的应用 126
6.8.4 多层神经网络 127
6.8.5 反向传播算法 127
6.8.6 word2vec背后的数学理论 128
6.9 生成最终词向量和概率预测结果的技术 130
6.10 word2vec相关的一些事情 131
6.11 word2vec的应用 131
6.11.1 实现一些简单例子 132
6.11.2 word2vec的优势 133
6.11.3 word2vec的挑战 133
6.11.4 在实际应用中使用word2vec 134
6.11.5 何时使用word2vec 135
6.11.6 开发一些有意思的东西 135
6.11.7 练习 138
6.12 word2vec概念的扩展 138
6.12.1 para2vec 139
6.12.2 doc2vec 139
6.12.3 doc2vec的应用 140
6.12.4 GloVe 140
6.12.5 练习 141
6.13 深度学习中向量化的重要性 141
6.14 总结 142
第7章 规则式自然语言处理系统 143
7.1 规则式系统 144
7.2 规则式系统的目的 146
7.2.1 为何需要规则式系统 146
7.2.2 使用规则式系统的应用 147
7.2.3 练习 147
7.2.4 开发规则式系统需要的资源 147
7.3 规则式系统的架构 148
7.3.1 从专家系统的角度来看规则式系统的通用架构 149
7.3.2 NLP应用中的规则式系统的实用架构 150
7.3.3 NLP应用中的规则式系统的定制架构 152
7.3.4 练习 155
7.3.5 Apache UIMA架构 155
7.4 规则式系统的开发周期 156
7.5 规则式系统的应用 156
7.5.1 使用规则式系统的NLP应用 156
7.5.2 使用规则式系统的通用AI应用 157
7.6 使用规则式系统来开发NLP应用 157
7.6.1 编写规则的思维过程 158
7.6.2 基于模板的聊天机器人应用 165
7.7 规则式系统与其他方法的对比 168
7.8 规则式系统的优点 169
7.9 规则式系统的缺点 169
7.10 规则式系统面临的挑战 170
7.11 词义消歧的基础 170
7.12 规则式系统近期发展的趋势 171
7.13 总结 171
第8章 自然语言处理中的机器学习方法 172
8.1 机器学习的基本概念 172
8.2 自然语言处理应用的开发步骤 176
8.2.1 第一次迭代时的开发步骤 177
8.2.2 从第二次到第N次迭代的开发步骤 177
8.3 机器学习算法和其他概念 179
8.3.1 有监督机器学习方法 179
8.3.2 无监督机器学习方法 206
8.3.3 半监督机器学习算法 210
8.3.4 一些重要概念 211
8.3.5 特征选择 215
8.3.6 维度约减 219
8.4 自然语言处理中的混合方法 221
8.5 总结 221
第9章 NLU和NLG问题中的深度学习 223
9.1 人工智能概览 223
9.1.1 人工智能的基础 223
9.1.2 人工智能的阶段 225
9.1.3 人工智能的种类 227
9.1.4 人工智能的目标和应用 227
9.2 NLU和NLG之间的区别 232
9.2.1 自然语言理解 232
9.2.2 自然语言生成 232
9.3 深度学习概览 233
9.4 神经网络基础 234
9.4.1 神经元的第一个计算模型 235
9.4.2 感知机 236
9.4.3 理解人工神经网络中的数学概念 236
9.5 实现神经网络 249
9.5.1 单层反向传播神经网络 249
9.5.2 练习 251
9.6 深度学习和深度神经网络 251
9.6.1 回顾深度学习 251
9.6.2 深度神经网络的基本架构 251
9.6.3 NLP中的深度学习 252
9.6.4 传统NLP和深度学习NLP技术的区别 253
9.7 深度学习技术和NLU 255
9.8 深度学习技术和NLG 262
9.8.1 练习 262
9.8.2 菜谱摘要和标题生成 262
9.9 基于梯度下降的优化 265
9.10 人工智能与人类智能 269
9.11 总结 269
第10章 高级工具 270
10.1 使用Apache Hadoop作为存储框架 270
10.2 使用Apache Spark作为数据处理框架 272
10.3 使用Apache Flink作为数据实时处理框架 274
10.4 Python中的可视化类库 274
10.5 总结 275
第11章 如何提高你的NLP技能 276
11.1 开始新的NLP职业生涯 276
11.2 备忘列表 277
11.3 确定你的领域 277
11.4 通过敏捷的工作来实现成功 278
11.5 NLP和数据科学方面一些有用的博客 278
11.6 使用公开的数据集 278
11.7 数据科学领域需要的数学知识 278
11.8 总结 279
第12章 安装指导 280
12.1 安装Python、pip和NLTK 280
12.2 安装PyCharm开发环境 280
12.3 安装依赖库 280
12.4 框架安装指导 281
12.5 解决你的疑问 281
12.6 总结 281

教学资源推荐
作者: [美] 安东尼·D. 约瑟夫(Anthony D. Joseph) 布莱恩·尼尔森(Blaine Nelson) 本杰明·I. P. 鲁宾斯坦(Benjamin I. P. Rubinstein) J. D. 泰格(J. D. Tygar) 著
作者: 蔡自兴 等编著
作者: [英]大卫·巴伯(David Barber) 著
作者: [澳] 萨尔曼·汗(Salman Khan) 侯赛因·拉哈马尼(Hossein Rahmani) 赛义德·阿法克·阿里·沙(Syed Afaq Ali Shah) 穆罕默德·本纳努恩(Mohammed Bennamoun) 著
参考读物推荐
作者: [美]谢林·托马斯(Sherin Thomas)苏丹舒·帕西(Sudhanshu Passi)著
作者: [意大利]保罗·加莱奥内(Paolo Galeone) 著
作者: [法]本杰明·普朗什(Benjamin Planche),[法]艾略特·安德烈斯(Eliot Andres) 著