《面向自然语言处理的深度学习:用Python创建神经网络》

举报
华章计算机 发表于 2019/11/19 20:06:34 2019/11/19
【摘要】 本节书摘来自华章计算机《面向自然语言处理的深度学习:用Python创建神经网络》一作者是帕拉什·戈雅尔(Palash Goyal)[印] 苏米特·潘迪(Sumit Pandey) ,卡兰·贾恩(Karan Jain)陶 阳 张冬松 徐 潇 译。

智能系统与技术丛书

面向自然语言处理的深度学习:

用Python创建神经网络

Deep Learning for Natural Language Processing:

Creating Neural Networks with Python

1574165096985043.jpg

   帕拉什·戈雅尔(Palash Goyal)

[印] 苏米特·潘迪(Sumit Pandey) 著

   卡兰·贾恩(Karan Jain)

          陶 阳 张冬松 徐 潇 译

 

 

 

 


 

 

The Translator’s Words

译 者 序

很高兴接受这本书的翻译任务,更加高兴的是能跟读者说说心里话。

接到任务之前,我和团队正在进行人机对话领域的研究与实现工作。我们的导师是国防科技大学计算机学院彭宇行研究员,在他的带领下,我们已经取得了不少成果。这些年导师带领我们在人工智能领域开展了多项研究工作,深度学习算法是其中很重要的一项。所以,我们有较强的理论和实践基础,尤其是近一年来我们一直致力于基于自然语言处理的对话机器人项目的落地实现。正好在这个时候接到了这本书的翻译任务,这种感觉太好了。

拿到这本书之后,我仔细阅读了书的内容,被作者由浅入深、从理论到实践的创作思路深深吸引住了。前面章节对深度学习和自然语言处理的基础理论知识的介绍十分深入,而且强调实用性,也为后面章节的完整实例做好了准备。虽然该书面向的读者是中高级深度学习和自然语言处理开发人员,但读完后你就会感到,即使你在深度学习和自然语言处理方向的知识积累还不够多,也可以立刻开发出一个实际的基于自然语言处理的应用项目。

我们知道,采用计算机技术来研究和处理自然语言是20世纪40年代末50年代初才开始的。几十年来,这项研究取得了长足的进展,成为计算机科学中一门重要的新兴学科—自然语言处理(Natural Language Processing,NLP)。建立自然语言处理模型需要各个方面的知识,比如声学和韵律学、音位学、形态学、词汇学、句法学、语义学、话语分析、语用学等。由于自然语言处理是一个多边缘的交叉学科,除了语言学外,它还涉及多个知识领域,比如计算机科学、数学、统计学、生物学等,尤其是计算机科学领域的深度学习。深度学习是机器学习的一个扩展领域,它已经在文本、图像和语音等领域发挥了巨大作用。在深度学习下实现的算法集合与人脑中的刺激和神经元之间的关系具有相似性。深度学习在计算机视觉、语言翻译、语音识别、图像生成等方面具有广泛的应用。大多数深度学习算法都基于人工神经网络的概念,如今,大量可用的数据和丰富的计算资源使这种算法的训练变得简单了。随着数据量的增长,深度学习模型的性能会不断提高。这些看似高深的理论知识,本书在第1章用很浅显的语言告诉了我们。我向我们的项目团队推荐了这本书,他们反映这本书写得很好,实践性强,特别适用于自然语言处理相关的项目。我就想,如果能把这本优秀的教材翻译成中文,肯定能让国内从事自然语言处理的年轻工程师们从中受益。于是,我欣然接受了本书的翻译任务。

我认真通读本书两遍,对于本书有一定的理解后试着翻译起来,然而不像想象中那样容易。说实话,有时候习惯了阅读英文,即使理解了英文意思,而要把英文的意思表达为确切的中文,大量的术语如何用中文来表达,也是颇费周折、令人踌躇的难题。另外,为了能够及早让本书与读者见面,在我们的导师彭宇行研究员的大力支持下,我跟团队成员商量,请具有较好的自然语言处理方向研究基础的张冬松博士后和海归硕士徐潇两位骨干加入进来,共同完成翻译任务。

接到翻译任务的时候正是暑假,所以我们几乎用了全部的假期时间来进行翻译。暑假之后,每位译者依然十分认真,所有的业余时间都用上了,遇到疑难问题时共同切磋、反复推敲,经常在微信群里讨论,确定最好的翻译结果。每翻译一章,他们就交给我审校,及时统一意见。在我们三人的通力合作下,连续工作两个多月,全书的翻译任务终于大功告成。

这么一本优秀的著作在给我们带来无穷动力的同时,无疑也给翻译工作带来了无形的压力。为了尽量保证每章译稿的质量并保证译文的前后一致性,整本书的审校工作全部由我本人独立完成,同时我及时反馈并提供了统一的术语翻译。在翻译过程中我们阅读了大量相关的教材和论文,也包括网上的常用译法以及公认的英文术语,并前后进行了六次自我校对。在校对过程中,有很多师门的兄弟姐妹们也提出了很多宝贵的意见和建议。对于他们无私的帮助,我表示由衷的感谢。感谢我们的导师彭宇行研究员对我们的翻译工作给予的支持和肯定。另外还要感谢我的妻子,在前前后后两个多月时间里,我几乎所有的时间都用在翻译和校对上,而她却默默地承担起照顾两个孩子的责任。

虽然得到了大家的帮助,翻译团队也认真努力,但由于我们的专业水平、理解能力和文字功底十分有限,加之时间仓促,最后的译稿中一定还存在不少理解上的偏差,译文也会有生硬之处。希望读者不吝赐教,提出宝贵的修改意见和建议,以便我们能够对现有译稿不断改进。

谢谢!

 

陶 阳

 

 

 

 

PREFACE

前  言

本书使用适当和完整的神经网络体系结构示例,例如用于自然语言处理(NLP)任务的循环神经网络(RNN)和序列到序列(seq2seq),以较为全面的方式简化和呈现深度学习的概念。本书试图弥合理论与应用之间的缺口。

本书以循序渐进的方式从理论过渡到实践,首先介绍基础知识,然后是基础数学,最后是相关示例的实现。

前三章介绍NLP的基础知识,从最常用的Python库开始,然后是词向量表示,再到高级算法,例如用于文本数据的神经网络。

最后两章完全侧重于实现,运用广泛流行的Python工具TensorFlow和Keras,处理诸如RNN、长短期记忆(LSTM)网络、seq2seq等复杂架构。我们尽最大努力遵循循序渐进的方法,最后集合全部知识构建一个问答系统。

本书旨在为想要学习面向NLP的深度学习技术的读者提供一个很好的起点。

本书中展示的所有代码都在GitHub上以IPython notebook和脚本的形式公开,使读者能够实践这些示例,并以自己感兴趣的任何方式对它们进行扩展。

 

 

 

 

Acknowledgements

致  谢

这项工作得以完成,主要得益于那些信任我们的人,他们在整个工作过程中参与讨论、阅读、写作,付出了宝贵的时间,无论是校对还是整体设计,都是功不可

没的。

我们特别感谢Apress的协调编辑Aditee Mirashi,他一直支持和激励我们完成这项任务,并积极地为我们提供有价值的建议,以便我们按时实现目标。

我们感谢Santanu Pattanayak,他阅读了所有章节并提出了宝贵的意见,为本书的最终定稿做了大量工作。

在完成这个项目的过程中,没有人比我们的家庭成员更重要。我们要感谢我们的父母,无论我们追求什么,他们的爱和指导都与我们同在。他们是我们的终极榜样,为我们完成写作提供了无尽的灵感。

 

 

 

 

About the AuthorS

关于作者

Palash Goyal是一名高级数据科学家,目前从事将数据科学和深度学习用于在线营销领域的工作。他曾在印度理工学院(IIT)的Guwahati分校学习数学和计算机科学,毕业后他开始在快节奏环境中工作。

他在电子商务、旅游、保险和银行等行业拥有丰富的经验,热衷于数学和金融。他利用深度学习和强化学习技术进行价格预测与投资组合管理,在业余时间管理他的多种加密货币和最新的首次代币发行(ICO)。他追踪数据科学领域的最新趋势,并在博客http://madoverdata.com上分享这些趋势。他还会在空闲时发表与智慧农业相关的文章。

Sumit Pandey毕业于印度理工学院(IIT)的Kharagpur分校,曾在AXA Business Services工作了大约一年,担任数据科学顾问。他目前正在创办自己的企业。

Karan Jain是Sigtuple公司的一名产品分析师,他在那里研究尖端的AI驱动诊断产品。此前,他曾在医疗保健解决方案公司Vitrana担任数据科学家。他喜欢在快节奏的数据初创公司工作。在闲暇时间,Karan深入涉猎基因组学、BCI接口和光遗传学。最近,他对用于便携式诊断的POC设备和纳米技术产生了兴趣。Karan在LinkedIn上有3000多名粉丝。

 

 

 

About the Technical Reviewer

关于技术审校人员

Santanu Pattanayak目前在GE Digital担任数据科学家,并且是深度学习相关书籍《Pro Deep Learning with TensorFlow-A Mathematical Approach to Advanced Artificial Intelligence in Python》的作者。他拥有大约12年的工作经验,其中8年从事数据分析/数据科学工作,他还具有开发和数据库的技术背景。

在加入GE之前,Santanu曾在RBS、Capgemini和IBM等公司任职。他毕业于加尔各答的Jadavpur大学,获得了电子工程专业学位,并且是一名狂热的数学爱好者。Santanu目前正在攻读印度理工学院(IIT)Hyderabad分校的数据科学硕士学位。他还将时间投入数据科学黑客马拉松和Kaggle比赛中,他在Kaggle中全球排名前500位。Santanu出生并成长在印度西孟加拉邦,现与妻子居住在印度班加罗尔。

 

 

 

CONTENTS

目  录

译者序

前言

致谢

关于作者

关于技术审校人员

第1章 自然语言处理和深度学习概述  1

1.1 Python包  2

1.1.1 NumPy  2

1.1.2 Pandas  6

1.1.3 SciPy  9

1.2 自然语言处理简介  11

1.2.1 什么是自然语言处理  11

1.2.2 如何理解人类的语言  11

1.2.3 自然语言处理的难度是什么  11

1.2.4 我们想通过自然语言处理获得什么  13

1.2.5 语言处理中的常用术语  13

1.3 自然语言处理库  14

1.3.1 NLTK  14

1.3.2 TextBlob  15

1.3.3 SpaCy  17

1.3.4 Gensim  19

1.3.5 Pattern  20

1.3.6 Stanford CoreNLP  21

1.4 NLP入门  21

1.4.1 使用正则表达式进行文本搜索  21

1.4.2 将文本转换为列表  21

1.4.3 文本预处理  22

1.4.4 从网页中获取文本  22

1.4.5 移除停止词  23

1.4.6 计数向量化  23

1.4.7 TF-IDF分数  24

1.4.8 文本分类器  25

1.5 深度学习简介  25

1.6 什么是神经网络  27

1.7 神经网络的基本结构  29

1.8 神经网络的类型  32

1.8.1 前馈神经网络  33

1.8.2 卷积神经网络  33

1.8.3 循环神经网络  33

1.8.4 编码器-解码器网络  34

1.8.5 递归神经网络  35

1.9 多层感知器  35

1.10 随机梯度下降  37

1.11 反向传播  40

1.12 深度学习库  42

1.12.1 Theano  42

1.12.2 Theano安装  43

1.12.3 Theano示例  44

1.12.4 TensorFlow  45

1.12.5 数据流图  46

1.12.6 TensorFlow安装  47

1.12.7 TensorFlow示例  47

1.12.8 Keras  49

1.13 下一步  52

第2章 词向量表示  53

2.1 词嵌入简介  53

2.2 word2vec  56

2.2.1 skip-gram模型  58

2.2.2 模型成分:架构  58

2.2.3 模型成分:隐藏层  58

2.2.4 模型成分:输出层  60

2.2.5 CBOW模型  61

2.3 频繁词二次采样  61

2.4 word2vec代码  64

2.5 skip-gram代码  67

2.6 CBOW代码  75

2.7 下一步  83

第3章 展开循环神经网络  85

3.1 循环神经网络  86

3.1.1 什么是循环  86

3.1.2 前馈神经网络和循环神经网络之间的差异  87

3.1.3 RNN基础  88

3.1.4 自然语言处理和RNN  91

3.1.5 RNN的机制  93

3.1.6 训练RNN  96

3.1.7 RNN中隐藏状态的元意义  98

3.1.8 调整RNN  99

3.1.9 LSTM网络  99

3.1.10 序列到序列模型  105

3.1.11 高级seq2seq模型  109

3.1.12 序列到序列用例  113

3.2 下一步  122

第4章 开发聊天机器人  123

4.1 聊天机器人简介  123

4.1.1 聊天机器人的起源  124

4.1.2 聊天机器人如何工作  125

4.1.3 为什么聊天机器人拥有如此大的商机  125

4.1.4 开发聊天机器人听起来令人生畏  126

4.2 对话型机器人  127

4.3 聊天机器人:自动文本生成  141

4.4 下一步  170

第5章 实现研究论文:情感分类  171

5.1 基于自注意力机制的句子嵌入  172

5.1.1 提出的方法  173

5.1.2 可视化  178

5.1.3 研究发现  181

5.2 实现情感分类  181

5.3 情感分类代码  182

5.4 模型结果  191

5.5 可提升空间  196

5.6 下一步  196


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。