TensorFlow自然语言处理

有段时间没有做赠书活动了,前两天在朋友圈调研了一下这本书,大家普遍对这本新书感兴趣,所以赶紧找 机械工业出版社华章公司 的老师赞助了5本书做一次AINLP公众号粉丝福利活动,这次规则稍微调整一下,送给经常留言的同学2本,如果你曾经留过几次言,看到这篇文章后请留言,我会从开奖前的留言的用户中看一下历史留言数据,精选留言排名前2位的同学将直接获得赠书;另外3本抽奖, 公众号后台回复 读书 , 弹出抽奖小程序后点击参与,然后静候开奖就是了,开奖时间是后天晚上8点,也就是7月16号周二20点开奖。中奖用户必须是AINLP公众号粉丝,否则视为自动放弃,请中奖的同学添加微信号 "AINLP2" ,再确认一下快递信息,过期不候。最后 感谢本次活动的赞助者 机械工业出版社华章公司 」, 以下是该书相关信息。

TensorFlow自然语言处理

长按二维码

了解及购买

使用深度学习算法和TensorFlow来编写现代自然语言处理应用程序的实践指南。

编辑推荐

深度学习应用所使用的大部分数据是由自然语言处理(NLP)提供的,而TensorFlow是目前比较重要的深度学习框架。面对当今巨量数据流中众多的非结构化数据,本书详细讲解如何将TensorFlow与NLP二者结合以提供有效的工具,以及如何将这些工具应用于具体的NLP任务。

本书首先介绍NLP和TensorFlow的基础知识,之后讲解如何使用Word2vec及其高级扩展,以便通过创建词嵌入将词序列转换为深度学习算法可用的向量。本书还介绍如何通过卷积神经网络(CNN)和递归神经网络(RNN)等经典深度学习算法执行句子分类和语言生成等重要的NLP任务。你将学习如何在NLP任务中应用高性能的RNN模型(比如长短期记忆单元),还将认识神经机器翻译,并实现一个神经机器翻译器。

通过阅读本书,你将学到:

  • NLP的核心概念和各种自然语言处理方法

  • 使用TensorFlow函数创建神经网络以完成NLP任务

  • 将海量数据处理成可用于深度学习应用的单词表示

  • 使用CNN和RNN执行句子分类和语言生成

  • 使用最先进的RNN(如长短期记忆)执行复杂的文本生成任务

  • 从头开始编写一个真正的神经机器翻译器

  • 未来的NLP趋势和创新

内容简介

第1章是对NLP的简单介绍。该章将首先讨论我们需要NLP的原因。接下来,将讨论NLP中一些常见的子任务。之后,将讨论NLP的两个主要阶段,即传统阶段和深度学习阶段。通过研究如何使用传统算法解决语言建模任务,我们将了解传统阶段NLP的特点。然后,将讨论深度学习阶段,在这一阶段中深度学习算法被大量用于NLP。我们还将讨论深度学习算法的主要系列。最后,将讨论一种最基本的深度学习算法:全连接神经网络。该章结束时会提供一份路线图,简要介绍后面的内容。

第2章介绍Python TensorFlow库,这是我们实现解决方案的主要平台。首先在TensorFlow中编写一段代码,执行一个简单的计算,并讨论从运行代码到得到结果这一过程中到底发生了什么。我们将详细介绍TensorFlow的基础组件。把Tensorflow比作丰富的餐厅,了解如何完成订单,以便进一步加强对TensorFlow的理解。稍后,将讨论TensorFlow的更多技术细节,例如数据结构和操作(主要与神经网络相关)。最后,我们将实现一个全连接的神经网络来识别手写数字。这将帮助我们了解如何使用TensorFlow来实现端到端解决方案。

第3章首先讨论如何用TensorFlow解决NLP任务。在该章中,我们将讨论如何用神经网络学习单词向量或单词表示。单词向量也称为词嵌入。单词向量是单词的数字表示,相似单词有相似值,不同单词有不同值。首先,将讨论实现这一目标的几种传统方法,包括使用称为WordNet的大型人工构建知识库。然后,将讨论基于现代神经网络的方法,称为Word2vec,它在没有任何人为干预的情况下学习单词向量。我们将通过一个实例来了解Word2vec的机制。接着,将讨论用于实现此目的的两种算法变体:skip-gram和连续词袋(CBOW)模型。我们将讨论算法的细节,以及如何在TensorFlow中实现它们。

第4章介绍与单词向量相关的更高级方法。首先,会比较skip-gram和CBOW,讨论其中哪一种有明显优势。接下来,将讨论可用于提高Word2vec算法性能的几项改进。然后,将讨论一种更新、更强大的词嵌入学习算法:GloVe(全局向量)算法。最后,将在文档分类任务中实际观察单词向量。在该练习中,我们将看到单词向量十分强大,足以表示文档所属的主题(例如,娱乐和运动)。

第5章讨论卷积神经网络(CNN),它是擅长处理诸如图像或句子这样的空间数据的神经网络家族。首先,讨论如何处理数据以及处理数据时涉及哪种操作,以便对CNN有较深的理解。接下来,深入研究CNN计算中涉及的每个操作,以了解CNN背后的数学原理。最后,介绍两个练习。第一个练习使用CNN对手写数字图像进行分类,我们将看到CNN能够在此任务上很快达到较高的准确率。接下来,我们将探讨如何使用CNN对句子进行分类。特别地,我们要求CNN预测一个句子是否与对象、人物、位置等相关。

第6章介绍递归神经网络。递归神经网络(RNN)是一个可以模拟数据序列的强大的神经网络家族。首先讨论RNN背后的数学原理以及在学习期间随时间更新RNN的更新规则。然后,讨论RNN的不同变体及其应用(例如,一对一RNN和一对多RNN)。最后,用RNN执行文本生成任务的练习。我们用童话故事训练RNN,然后要求RNN生成一个新故事。我们将看到在持久的长期记忆方面RNN表现不佳。最后,讨论更高级的RNN变体,即RNN-CF,它能够保持更长时间的记忆。

第7章介绍长短期记忆网络。RNN在保持长期记忆方面效果较差,这使我们需要探索能在更长时间内记住信息的更强大技术。我们将在该章讨论一种这样的技术:长短期记忆网络(LSTM)。LSTM功能更强大,并且在许多时间序列任务中表现得优于其他序列模型。首先通过一个例子,研究潜在的数学原理和LSTM的更新规则,以说明每个计算的重要性。然后,将了解为什么LSTM能够更长时间地保持记忆。接下来,将讨论如何进一步提高LSTM预测能力。最后,将讨论具有更复杂结构的几种LSTM变体(具有窥孔连接的LSTM),以及简化LSTM门控循环单元(GRU)的方法。

第8章介绍LSTM的应用:文本生成。该章广泛评估LSTM在文本生成任务中的表现。我们将定性和定量地衡量LSTM产生的文本的好坏程度,还将比较LSTM、窥孔连接LSTM和GRU。最后,将介绍如何将词嵌入应用到模型中来改进LSTM生成的文本。

第9章转到对多模态数据(即图像和文本)的处理。在该章中,我们将研究如何自动生成给定图像的描述。这涉及将前馈模型(即CNN)与词嵌入层及顺序模型(即LSTM)组合,形成一个端到端的机器学习流程。

第10章介绍有关神经机器翻译(NMT)模型的应用。机器翻译指的是将句子或短语从源语言翻译成目标语言。首先讨论机器翻译是什么并简单介绍机器翻译历史。然后,将详细讨论现代神经机器翻译模型的体系结构,包括训练和预测的流程。接下来,将了解如何从头开始实现NMT系统。最后,会探索改进标准NMT系统的方法。

第11章重点介绍NLP的现状和未来趋势。我们将讨论前面提到的系统的相关最新发现。该章将涵盖大部分令人兴奋的创新,并让你直观地感受其中的一些技术。

附录向读者介绍各种数学数据结构(例如,矩阵)和操作(例如,矩阵的逆),还将讨论概率中的几个重要概念。然后将介绍Keras,它是在底层使用TensorFlow的高级库。Keras通过隐藏TensorFlow中的一些有难度的细节使得神经网络的实现更简单。具体而言,通过使用Keras实现CNN来介绍如何使用Keras。接下来,将讨论如何使用TensorFlow中的seq2seq库来实现一个神经机器翻译系统,所使用的代码比在第11章中使用的代码少得多。最后,将向你介绍如何使用TensorBoard可视化词嵌入的指南。TensorBoard是TensorFlow附带的便捷可视化工具,可用于可视化和监视TensorFlow客户端中的各种变量。

作者简介

图珊·加内格达拉(Thushan Ganegedara) 目前是澳大利亚悉尼大学第三年的博士生。他专注于机器学习和深度学习。他喜欢在未经测试的数据上运行算法。他还是澳大利亚初创公司AssessThreat的首席数据科学家。他在斯里兰卡莫拉图瓦大学获得了理学士学位。他经常撰写有关机器学习的技术文章和教程。此外,他经常通过游泳来努力营造健康的生活方式。

目录

译者序

前言

关于作者

关于审阅者

第1章自然语言处理简介  1

1.1什么是自然语言处理  1

1.2自然语言处理的任务  2

1.3传统的自然语言处理方法  3

1.3.1理解传统方法  4

1.3.2传统方法的缺点  7

1.4自然语言处理的深度学习方法?  8

1.4.1深度学习的历史  8

1.4.2深度学习和NLP的当前状况  9

1.4.3理解一个简单的深层模型—全连接神经网络  10

1.5本章之外的学习路线  12

1.6技术工具简介  14

1.6.1工具说明  15

1.6.2安装Python和scikit-learn  15

1.6.3安装Jupyter Notebook  15

1.6.4安装TensorFlow  16

1.7总结  17

第2章理解TensorFlow  18

2.1TensorFlow是什么  18

2.1.1TensorFlow入门  19

2.1.2TensorFlow客户端详细介绍  21

2.1.3TensorFlow架构:当你执行客户端时发生了什么  21

2.1.4Cafe Le TensorFlow:使用类比理解TensorFlow  23

2.2输入、变量、输出和操作  24

2.2.1在TensorFlow中定义输入  25

2.2.2在TensorFlow中定义变量  30

2.2.3定义TensorFlow输出  31

2.2.4定义TensorFlow操作  31

2.3使用作用域重用变量  40

2.4实现我们的第一个神经网络  42

2.4.1准备数据  43

2.4.2定义TensorFLow图  43

2.4.3运行神经网络  45

2.5总结  46

第3章Word2vec——学习词嵌入  48

3.1单词的表示或含义是什么  49

3.2学习单词表示的经典方法  49

3.2.1WordNet—使用外部词汇知识库来学习单词表示  50

3.2.2独热编码表示方式  53

3.2.3TF-IDF方法  53

3.2.4共现矩阵  54

3.3Word2vec—基于神经网络学习单词表示  55

3.3.1练习:queen = king – he + she吗  56

3.3.2为学习词嵌入定义损失函数  58

3.4skip-gram算法  59

3.4.1从原始文本到结构化的数据  59

3.4.2使用神经网络学习词嵌入  60

3.4.3使用TensorFlow实现skip-gram  67

3.5连续词袋算法  69

3.6总结  71

第4章高级Word2vec  72

4.1原始skip-gram算法  72

4.1.1实现原始skip-gram算法  73

4.1.2比较原始skip-gram算法和改进的skip-gram算法  75

4.2比较skip-gram算法和CBOW算法  75

4.2.1性能比较  77

4.2.2哪个更胜一筹:skip-gram还是CBOW  79

4.3词嵌入算法的扩展  81

4.3.1使用unigram分布进行负采样  81

4.3.2实现基于unigram的负采样  81

4.3.3降采样:从概率上忽视常用词  83

4.3.4实现降采样  84

4.3.5比较CBOW及其扩展算法  84

4.4最近的skip-gram和CBOW的扩展算法  85

4.4.1skip-gram算法的限制  85

4.4.2结构化skip-gram算法  85

4.4.3损失函数  86

4.4.4连续窗口模型  87

4.5GloVe:全局向量表示  88

4.5.1理解GloVe  88

4.5.2实现GloVe  89

4.6使用Word2vec进行文档分类  90

4.6.1数据集  91

4.6.2用词向量进行文档分类  91

4.6.3实现:学习词嵌入  92

4.6.4实现:词嵌入到文档嵌入  92

4.6.5文本聚类以及用t-SNE可视化文档嵌入  93

4.6.6查看一些特异点  94

4.6.7实现:用K-means对文档进行分类/聚类  95

4.7总结  96

第5章用卷积神经网络进行句子分类  97

5.1介绍卷积神经网络  97

5.1.1CNN基础  97

5.1.2卷积神经网络的力量  100

5.2理解卷积神经网络  100

5.2.1卷积操作  100

5.2.2池化操作  103

5.2.3全连接层  104

5.2.4组合成完整的CNN  105

5.3练习:在MNIST数据集上用CNN进行图片分类  105

5.3.1关于数据  106

5.3.2实现CNN  106

5.3.3分析CNN产生的预测结果  108

5.4用CNN进行句子分类  109

5.4.1CNN结构  110

5.4.2随时间池化  112

5.4.3实现:用CNN进行句子分类  112

5.5总结  115

第6章递归神经网络  116

6.1理解递归神经网络  116

6.1.1前馈神经网络的问题  117

6.1.2用递归神经网络进行建模  118

6.1.3递归神经网络的技术描述  119

6.2基于时间的反向传播  119

6.2.1反向传播的工作原理  120

6.2.2为什么RNN不能直接使用反向传播  120

6.2.3基于时间的反向传播:训练RNN  121

6.2.4截断的BPTT:更有效地训练RNN  121

6.2.5BPTT的限制:梯度消失和梯度爆炸  122

6.3RNN的应用  123

6.3.1一对一RNN  123

6.3.2一对多RNN  123

6.3.3多对一RNN  124

6.3.4多对多RNN  124

6.4用RNN产生文本  125

6.4.1定义超参数  125

6.4.2将输入随时间展开用于截断的BPTT  125

6.4.3定义验证数据集  126

6.4.4定义权重和偏置  126

6.4.5定义状态持续变量  127

6.4.6用展开的输入计算隐藏状态和输出  127

6.4.7计算损失  128

6.4.8在新文本片段的开头重置状态  128

6.4.9计算验证输出  128

6.4.10计算梯度和优化  129

6.4.11输出新生成的文本块  129

6.5评估RNN的文本结果输出  130

6.6困惑度:衡量文本结果的质量  131

6.7有上下文特征的递归神经网络:更长记忆的RNN  132

6.7.1RNN-CF的技术描述  132

6.7.2实现RNN-CF  133

6.7.3RNN-CF产生的文本  138

6.8总结  140

第7章长短期记忆网络  142

7.1理解长短期记忆网络  142

7.1.1LSTM是什么  143

7.1.2更详细的LSTM  144

7.1.3LSTM与标准RNN的区别  149

7.2LSTM如何解决梯度消失问题  150

7.2.1改进LSTM  152

7.2.2贪婪采样  153

7.2.3集束搜索  153

7.2.4使用词向量  154

7.2.5双向LSTM(BiLSTM)  155

7.3其他LSTM的变体  156

7.3.1窥孔连接  156

7.3.2门循环单元  157

7.4总结  159

第8章LSTM应用:文本生成  160

8.1数据集  160

8.1.1关于数据集  160

8.1.2数据预处理  162

8.2实现LSTM  162

8.2.1定义超参数  163

8.2.2定义参数  163

8.2.3定义LSTM单元及操作  165

8.2.4定义输入和标签  165

8.2.5定义处理序列数据所需的序列计算  166

8.2.6定义优化器  167

8.2.7随时间衰减学习率  167

8.2.8做预测  168

8.2.9计算困惑度(损失)  168

8.2.10重置状态  169

8.2.11贪婪采样避免单峰  169

8.2.12生成新文本  169

8.2.13生成的文本样例  170

8.3LSTM与窥孔LSTM和GRU对比  171

8.3.1标准LSTM  171

8.3.2门控循环单元(GRU)  172

8.3.3窥孔LSTM  174

8.3.4训练和验证随时间的困惑度  175

8.4改进LSTM:集束搜索  176

8.4.1实现集束搜索  177

8.4.2集束搜索生成文本的示例  179

8.5LSTM改进:用单词替代n-gram生成文本  179

8.5.1维度灾难  179

8.5.2Word2vec补救  180

8.5.3使用Word2vec生成文本  180

8.5.4使用LSTM-Word2vec和集束搜索生成的文本示例  181

8.5.5随时间困惑度  182

8.6使用TensorFlow RNN API  183

8.7总结  186

第9章LSTM应用:图像标题生成  188

9.1了解数据  188

9.1.1ILSVRC ImageNet数据集  189

9.1.2MS-COCO数据集  189

9.2图像标题生成实现路径  191

9.3使用CNN提取图像特征  193

9.4实现:使用VGG-16加载权重和推理  193

9.4.1构建和更新变量  194

9.4.2预处理输入  195

9.4.3VGG-16推断  196

9.4.4提取图像的向量化表达  197

9.4.5使用VGG-16预测类别概率  197

9.5学习词嵌入  198

9.6准备输入LSTM的标题  198

9.7生成LSTM的数据  199

9.8定义LSTM  201

9.9定量评估结果  203

9.9.1BLEU  203

9.9.2ROUGE  204

9.9.3METEOR  204

9.9.4CIDEr  206

9.9.5模型随着时间变化的BLEU-4  206

9.10为测试图像生成标题  207

9.11使用TensorFlow RNN API和预训练的GloVe词向量  210

9.11.1加载GloVe词向量  210

9.11.2清洗数据  212

9.11.3使用TensorFlow RNN API和预训练的词嵌入  213

9.12总结  218

第10章序列到序列学习:神经机器翻译  220

10.1机器翻译  220

10.2机器翻译简史  221

10.2.1基于规则的翻译  221

10.2.2统计机器翻译(SMT)  222

10.2.3神经机器翻译(NMT)  223

10.3理解神经机器翻译  225

10.3.1NMT原理  225

10.3.2NMT架构  226

10.4为NMT系统准备数据  228

10.4.1训练阶段  229

10.4.2反转源句  229

10.4.3测试阶段  230

10.5训练NMT  230

10.6NMT推理  231

10.7BLEU评分:评估机器翻译系统  232

10.7.1修正的精确度  232

10.7.2简短惩罚项  233

10.7.3最终BLEU得分  233

10.8从头开始实现NMT:德语到英语的翻译  233

10.8.1数据介绍  234

10.8.2处理数据  234

10.8.3学习词嵌入  235

10.8.4定义编码器和解码器  236

10.8.5定义端到端输出计算  238

10.8.6翻译结果  239

10.9结合词嵌入训练NMT  241

10.9.1最大化数据集词汇表和预训练词嵌入之间的匹配  241

10.9.2将嵌入层定义为TensorFlow变量  243

10.10改进NMT  245

10.10.1教师强迫  246

10.10.2深度LSTM  247

10.11注意力  247

10.11.1突破上下文向量瓶颈  247

10.11.2注意力机制细节  248

10.11.3注意力NMT的翻译结果  253

10.11.4源句子和目标句子注意力可视化  254

10.12序列到序列模型的其他应用:聊天机器人  256

10.12.1训练聊天机器人  256

10.12.2评估聊天机器人:图灵测试  257

10.13总结  258

第11章自然语言处理的现状与未来  259

11.1NLP现状  259

11.1.1词嵌入  260

11.1.2神经机器翻译  264

11.2其他领域的渗透  266

11.2.1NLP与计算机视觉结合  266

11.2.2强化学习  268

11.2.3NLP生成式对抗网络  269

11.3走向通用人工智能  270

11.3.1一个模型学习全部  271

11.3.2联合多任务模型:为多个NLP任务生成神经网络  272

11.4社交媒体NLP  273

11.4.1社交媒体中的谣言检测  274

11.4.2社交媒体中的情绪检测  274

11.4.3分析推特中的政治框架  274

11.5涌现的新任务  275

11.5.1讽刺检测  275

11.5.2语言基础  276

11.5.3使用LSTM略读文本  276

11.6新兴的机器学习模型  277

11.6.1阶段LSTM  277

11.6.2扩张RNN(DRNN)  278

11.7总结  278

11.8参考文献  279

附录数学基础与高级TensorFlow  282

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章