大数据时代的到来,为人工智能的飞速发展带来前所未有的数据红利。在大数据的喂养下,大量知识不断涌现,如何有效地发掘这些知识呢?知识图谱横空出世。本书是一本讲解如何使用TensorFlow 2构建知识图谱的入门教程,引导读者掌握基于深度学习的知识图谱构建概念、理论和方法。 本书分为13章:第1章从搭建环境开始,包含TensorFlow CPU 版本和GPU版本的安装,并通过一个知识图谱的例子引导读者开始学习;第2~4章介绍TensorFlow API的使用;第5章是Dataset API,学习使用原生API处理数据的方法;第6~8章是实战准备部分,介绍ResNet模型、词嵌入(word embedding)模型、情感分类;第9 ~10章在注意力模型基础上搭建了编码器模型;第11~13章搭建了知识图谱联合抽取模型,利用本书所学知识实战知识图谱的搭建过程和性能提升方案。 本书内容详尽、示例丰富,适合作为知识图谱和深度学习读者的参考书,同时也适合开设人工智能专业的大中专院校师生阅读,还可作为高等院校计算机及相关专业教材使用。
本书介绍TensorFlow构建知识图谱的核心技术,帮助读者掌握使用深度学习构建知识图谱的方法,以及使用神经网络的技术要点和基于深度学习的应用程序编写技巧。
知识图谱(Knowledge Graph)的概念由谷歌首先提出,旨在实现更智能的搜索引擎。目前,随着智能信息服务应用的不断发展,知识图谱已被广泛应用于智能搜索、智能问答、个性化推荐、情报分析、反欺诈等领域。另外,通过知识图谱能够将Web上的信息、数据以及链接关系聚集为知识,使信息资源更易于计算、理解以及评价,并且形成一套Web语义知识库。知识图谱以其强大的语义处理能力与开放互联能力可为互联网上的知识互联奠定扎实的基础,使Web 3.0提出的知识之网愿景成为可能。
随着深度学习在各个领域中获得的成功应用,科研人员尝试着使用深度学习去解决知识图谱构建的问题,因为这两个领域的相关特征信息都是相对低层次的,可以借助深度学习的强大学习能力学习其中的复杂信息,目前来看这个尝试是成功的,应用深度学习技术可以简单有效地构建知识图谱。
本书选用TensorFlow 2作为深度学习的框架,从基础语法开始到使用TensorFlow 2进行深度学习知识图谱的构建和实战代码的编写,全面介绍使用TensorFlow 2进行知识图谱构建的核心技术和涉及的相关知识,内容翔实。
同时,本书并不是一个简单的实战案例书,而是在讲解和演示实例代码的过程中,对TensorFlow 2核心内容进行深入分析,重要内容均结合代码进行实战讲解,围绕深度学习基本原理介绍了大量实战案例。读者通过这些实例,可以深入地掌握深度学习和TensorFlow 2的相关内容,并能掌握使用深度学习构建知识图谱的技能。
本书是一本面向初级和中级读者的优秀教程。通过本书的学习,读者能够掌握使用深度学习进行知识图谱构建的方法,以及在TensorFlow 2框架下使用神经网络的要点,掌握基于深度学习应用程序的编写技巧。
本书特色
(1)重实战,讲原理。本书立足于深度学习,以知识图谱实战为目的进行讲解,提供完整可运行的知识图谱代码,并对基本原理进行讲解,可以让读者直接将其应用到实际生产环境中。
(2)版本新,易入门。本书详细介绍TensorFlow 2.4的安装,包括CPU版本和GPU版本,同时还包括各种开发工具和框架的安装。
(3)作者经验丰富,代码编写细腻。作者是长期奋战在科研和工业界的一线算法设计和程序编写人员,实战经验丰富,对代码中可能会出现的各种问题和坑有丰富的处理经验,能够使读者少走很多弯路。
(4)理论扎实,深入浅出。在代码设计的基础上,本书还深入浅出地介绍深度学习需要掌握的一些基本理论,作者通过公式与图示结合的方式对理论做介绍,方便读者理解相关内容。
(5)对比多种应用方案,实战案例丰富。本书采用大量的实例,同时提供一些实现同类功能的其他解决方案,覆盖使用TensorFlow 2进行深度学习开发中常用的知识。
本书内容及知识体系
本书完整地介绍使用TensorFlow 2构建知识图谱的方法,主要内容如下:
第1章是理论基础篇,首先讲解知识图谱的概念、它与自然语言处理的关系,然后搭建知识图谱的开发环境,包括Anaconda、PyCharm、TensorFlow 2.4,后构建一个简单的知识图谱。
第2章从Model的设计开始,循序渐进地介绍TensorFlow 2的编程方法,以及结合Keras进行TensorFlow 2模型设计的完整步骤和自定义层的方法。本章内容看起来很简单,却是本书的技术基础和核心精华,读者一定要反复阅读,认真掌握其中的所有知识点和代码编写方法。
第3章是TensorFlow 2的理论部分,介绍反馈神经网络的实现和核心的两个算法,通过图示结合理论公式的方式详细介绍这两个算法,后手动实现一个反馈神经网络。使用卷积神经网络来识别物体是深度学习的一个经典应用。
第4章详细介绍卷积神经网络的原理以及各个模型的使用和自定义方法,并借助卷积神经网络(CNN)算法构建一个简单的CNN模型以进行MNIST数字识别。
第5章介绍TensorFlow新版本的数据读写方法,以及TensorFlow 2自带的Dataset API进行数据的序列化存储方法,重点演示将数据重新读取和调用的程序编写技巧。
第6章介绍ResNet的基本思想和设计技术。ResNet是一个具有里程碑性质的框架,标志着粗犷的卷积神经网络设计向着精确化和模块化的方向转化,ResNet本身的程序编写非常简单,但是其中蕴含的设计思想却是跨越性的。
第7章主要介绍自然语言处理的基本的词嵌入的训练和使用,以一个有趣的问题引导读者从文本清洗开始,到词嵌入的计算,以及利用文本的不同维度和角度对文本进行拆分。
第8章主要介绍自然语言处理的一个基本架构循环神经网络的基本理论和方法。本章与第6章内容互补,可以加深读者对深度学习中不同模块和架构的理解。
第9章开始进行更细化的自然语言处理部分,总结和复习本书前面所学的内容,并使用深度学习工具实现一个解码器,从而解决拼音到文字的转换。这一章的目的是对前期内容的总结,也为后续的预训练模型的基本理论和使用打下基础。
第10章是预训练模型的部分,综合应用前文介绍的注意力模型,介绍使用预训练模型进行深度学习训练的方法,并教会读者可以使用不同的预训练模型达到不同的效果。
第11~12章分别演示多标签文本分类实战和命名实体识别实战,同时这两个实战也是分步构建知识图谱的基础。这两章内容既复习了前面章节所讲解的知识,也为下一章构建知识图谱联合抽取模型打下基础。
第13章的实战案例综合本书讲解的知识,融合前两章的模型构建了知识图谱,并提出其性能优化的方法。此实战案例既可以用于学习演示,也可以作为实际应用的程序进行移植。
源码、课件、数据集、开发环境下载
本书配套源码、课件、数据集、开发环境,需要使用微信扫描右边二维码下载,可按页面提示把链接转发到自己的邮箱中下载。如果有问题,请联系booksaga@163.com,邮件主题为TensorFlow知识图谱实战。
适合阅读本书的读者
? Python编程人员
? AI初学者
? 知识图谱初学者
? 深度学习初学者
? 自然语言处理初学者
? 人工智能专业的师生
? 培训机构的师生
? 其他对智能化、自动化感兴趣的开发者
勘误和感谢
由于笔者的水平有限,加上TensorFlow版本的演进较快、本书编写时间跨度较长,书中难免会出现疏漏的地方,恳请读者来信批评指正。
感谢出版社的所有编辑在本书编写和审核过程中提供的无私帮助和宝贵建议,正是由于他们的耐心和支持才让本书得以出版。感谢家人对笔者的支持和理解,这些都给予笔者莫大的动力,让自己的努力更加有意义。
王晓华
2021年9月
王晓华,计算机专业讲师,长期讲授面向对象程序设计、数据结构、Hadoop程序设计等研究生和本科生相关课程;主要研究方向为云计算、数据挖掘。曾主持和参与多项国家和省级科研课题,独立科研项目获省级成果认定,发表过多篇论文,拥有一项国家专利。著有《Spark MLlib机器学习实践》《TensorFlow深度学习应用实践》《OpenCV TensorFlow深度学习与计算机视觉实战》《TensorFlow 2.0卷积神经网络实战》《TensorFlow Keras自然语言处理实战》等图书。
第1章 知识图谱的前世今生 1
1.1 何谓自然语言处理 1
1.1.1 自然语言处理是门技术 1
1.1.2 传统的自然语言处理 2
1.2 自然语言处理为什么难以简单的情感分析为例 3
1.2.1 自然语言处理的难点 3
1.2.2 自然语言处理小练习:酒店评论的情感分类 5
1.3 知识图谱到底是什么 8
1.3.1 知识图谱的应用 9
1.3.2 知识图谱中的三元组 10
1.4 搭建环境1:安装Python 11
1.4.1 Anaconda的下载与安装 12
1.4.2 PyCharm的下载与安装 14
1.4.3 Python代码小练习:计算softmax函数 17
1.5 搭建环境2:安装TensorFlow 2.X的GPU版本 18
1.5.1 10/20/30系列显卡选择的GPU版本 18
1.5.2 TensorFlow 2.4 GPU版本基础显卡推荐和前置软件安装 19
1.5.3 TensorFlow小练习:Hello TensorFlow 22
1.6 实战知识图谱的展示 22
1.6.1 步:数据的准备 22
1.6.2 第二步:数据的处理 23
1.6.3 第三步:知识图谱的展示 24
1.6.4 第四步:更多的连线 25
1.6.5 一个需要解决的小问题 25
1.7 本章小结 26
第2章 TensorFlow和Keras快速入门 27
2.1 Keras让一切变简单 27
2.1.1 深度学习,始于模型 28
2.1.2 使用Keras API实现鸢尾花分类的例子(顺序模型) 28
2.1.3 使用Keras函数式编程实现鸢尾花分类的例子(重点) 31
2.1.4 使用保存的Keras模式对模型进行复用 34
2.1.5 使用TensorFlow 标准化编译对iris模型进行拟合 34
2.1.6 多输入单一输出TensorFlow 编译方法(选学) 38
2.1.7 多输入多输出TensorFlow 编译方法(选学) 42
2.2 全连接层详解 43
2.2.1 全连接层的定义与实现 43
2.2.2 使用TensorFlow 自带的API实现全连接层 45
2.2.3 打印显示已设计的model结构和参数 48
2.3 懒人的福音Keras模型库 49
2.3.1 ResNet50模型和参数的载入 50
2.3.2 使用ResNet作为特征提取层建立模型 52
2.4 本章小结 54
第3章 深度学习的理论基础 55
3.1 BP神经网络简介 56
3.2 BP神经网络两个基础算法详解 59
3.2.1 小二乘法(LS算法)详解 59
3.2.2 道士下山的故事梯度下降算法 61
3.2.3 小二乘法的梯度下降算法及其Python实现 64
3.3 反馈神经网络反向传播算法介绍 70
3.3.1 深度学习基础 70
3.3.2 链式求导法则 71
3.3.3 反馈神经网络原理与公式推导 72
3.3.4 反馈神经网络原理的激活函数 78
3.3.5 反馈神经网络原理的Python实现 79
3.4 本章小结 83
第4章 卷积神经网络实战 84
4.1 卷积运算基本概念 84
4.1.1 卷积运算 85
4.1.2 TensorFlow 中卷积函数实现详解 86
4.1.3 池化运算 88
4.1.4 softmax激活函数 89
4.1.5 卷积神经网络原理 90
4.2 卷积实战:MNIST手写体识别 93
4.2.1 MNIST数据集 93
4.2.2 MNIST数据集特征和标签介绍 95
4.2.3 TensorFlow 2.X编程实战:MNIST数据集 97
4.2.4 使用自定义的卷积层实现MNIST识别 101
4.3 本章小结 104
第5章 Datasets数据集和TensorBoard可视化 105
5.1 TensorFlow Datasets简介 105
5.1.1 Datasets 数据集的安装 107
5.1.2 Datasets 数据集的使用 107
5.2 Datasets 数据集的使用FashionMNIST 109
5.2.1 FashionMNIST数据集下载与展示 110
5.2.2 模型的建立与训练 111
5.3 使用Keras对FashionMNIST数据集进行处理 113
5.3.1 获取数据集 113
5.3.2 数据集的调整 114
5.3.3 使用Python类函数建立模型 114
5.3.4 Model的查看和参数打印 115
5.3.5 模型的训练和评估 117
5.4 使用TensorBoard可视化训练过程 119
5.4.1 TensorBoard文件夹设置 119
5.4.2 TensorBoard的显式调用(推荐使用Chrome或Edge浏览器) 120
5.4.3 TensorBoard的使用 122
5.5 本章小结 126
第6章 ResNet实现神经网络的飞跃 127
6.1 ResNet基础原理与程序设计基础 127
6.1.1 ResNet诞生的背景 127
6.1.2 模块工具的TensorFlow 实现不要重复造轮子 130
6.1.3 TensorFlow 高级模块layers用法简介 131
6.2 ResNet实战:CIFAR100数据集分类 138
6.2.1 CIFAR100数据集简介 138
6.2.2 ResNet残差模块的实现 141
6.2.3 ResNet网络的实现 143
6.2.4 使用ResNet对CIFAR100数据集进行分类 146
6.3 本章小结 147
第7章 有趣的词嵌入word embedding 148
7.1 文本数据处理 148
7.1.1 数据集介绍和数据清洗 149
7.1.2 停用词的使用 151
7.1.3 词向量训练模型word2vec使用介绍 153
7.1.4 文本主题的提取:基于TF-IDF(选学) 156
7.1.5 文本主题的提取:基于TextRank(选学) 160
7.2 更多的word embedding方法fastText和 预训练词向量 163
7.2.1 fastText的原理与基础算法 163
7.2.2 fastText训练以及与TensorFlow 2.X的协同使用 164
7.2.3 使用其他预训练参数做TensorFlow词嵌入矩阵(中文) 170
7.3 针对文本的卷积神经网络模型简介字符卷积 171
7.3.1 字符(非单词)文本的处理 172
7.3.2 卷积神经网络文本分类模型的实现conv1d(一维卷积) 179
7.4 针对文本的卷积神经网络模型词卷积 180
7.4.1 单词的文本处理 181
7.4.2 卷积神经网络文本分类模型的实现conv2d(二维卷积) 183
7.5 使用卷积对文本分类的补充内容 186
7.5.1 汉字的文本处理 186
7.5.2 其他的一些细节 188
7.6 本章小结 189
第8章 情感分类 190
8.1 GRU与情感分类 190
8.1.1 使用GRU的情感分类 190
8.1.2 什么是GRU 191
8.1.3 TensorFlow 中的GRU层详解 193
8.1.4 单向不行就双向 194
8.2 实战:情感分类 195
8.2.1 使用TensorFlow 自带的模型做文本分类 195
8.2.2 使用自定义的DPCNN做模型分类 199
8.3 本章小结 203
第9章 编码器自然语言处理的归宿 204
9.1 编码器的核心注意力模型 205
9.1.1 输入层初始词向量层和位置编码器层 205
9.1.2 自注意力层 207
9.1.3 ticks和LayerNormalization 212
9.1.4 多头自注意力 213
9.2 编码器的实现 216
9.2.1 前馈层的实现 216
9.2.2 编码器的实现 218
9.3 实战编码器:汉字拼音转化模型 221
9.3.1 汉字拼音数据集处理 222
9.3.2 汉字拼音转化模型的确定 223
9.3.3 模型训练部分的编写 226
9.3.4 推断函数的编写 228
9.4 本章小结 229
第10章 BERT站在巨人肩膀上的预训练模型 230
10.1 预训练模型BERT 230
10.1.1 BERT基本架构与应用 231
10.1.2 BERT预训练任务与Fine-Tuning 232
10.2 实战BERT:中文文本分类 235
10.2.1 使用Hugging face获取BERT预训练模型 235
10.2.2 BERT实战文本分类 236
10.3 更多的预训练模型 241
10.4 本章小结 244
第11章 知识图谱实战1:多标签文本分类 245
11.1 多标签文本基本内容 245
11.1.1 多标签分类不等于多分类 245
11.1.2 多标签分类的激活函数sigmoid 246
11.2 多标签文本实战 247
11.2.1 步:数据的获取与处理 247
11.2.2 第二步:选择特征抽取模型 251
11.2.3 第三步:训练模型的建立 252
11.2.4 第四步:多标签文本分类的训练与预测 253
11.3 本章小结 256
第12章 知识图谱实战2:命名实体识别 257
12.1 命名实体识别的基本内容 257
12.1.1 什么是命名实体识别 257
12.1.2 深度学习在命名实体识别中的应用 258
12.1.3 命名实体识别CRF层简介 258
12.1.4 命名实体识别一般的模型架构详解 259
12.2 方法一:BERT命名实体识别实战 260
12.2.1 步:数据的获取与处理 260
12.2.2 第二步:BERT模型设计 262
12.2.3 第三步:完整的BERT模型训练 263
12.2.4 第四步:使用BERT命名实体识别模型进行预测 263
12.3 方法二:BiLSTM-CRF命名实体识别实战 265
12.3.1 步:数据的获取与处理 265
12.3.2 第二步:BiLSTM-CRF模型设计 265
12.3.3 第三步:BiLSTM-CRF模型的训练 266
12.3.4 第四步:使用BiLSTM的预测 268
12.4 本章小结 269
第13章 知识图谱实战3: 基于联合抽取的知识图谱模型 270
13.1 基于联合抽取的知识图谱模型实战 270
13.1.1 什么是联合抽取 270
13.1.2 步:数据的处理 272
13.1.3 第二步:模型的设计 274
13.1.4 第三步:联合抽取模型的训练 274
13.2 知识图谱模型提升 276
13.2.1 更换预训练模型进行提升 276
13.2.2 更换损失函数进行提升 276
13.2.3 使用Mixture-of-Experts修正联合抽取模型 279
13.3 本章小结 281