内容简介
这是一部讲解如何基于NLP技术和人机交互技术实现聊天机器人的著作。
两位作者聊天机器人领域均有多年大型项目的实战经验,这本书不仅讲解了NLP和人机交互的核心技术,而且从技术、算法、实战3个维度讲解聊天机器人的原理、实现与工程实践。
本书有3个特点:
前瞻性强,专注于NLP和人机交互的前沿技术,以及会话式AI技术在热门场景中的工程实践。
实战性强,每章都提供实战代码,大部分代码简单修改后便可在实际场景中使用;数据集并非简单构造,而是具有真实性。
对比性强,结合应用场景,对比不同技术的优劣,既能指导读者进行技术选型,又能加深读者对不同技术的理解。
本书一共12章,分为三大部分:
第一部分 基础篇(第1-2章)
首先系统介绍了人机交互技术和聊天机器人技术的必备基础,然后讲解了深度学习工具的使用以及NLP开发环境的搭建
第二部分 算法篇(第3-8章)
这部分是核心内容,主要讲解中文自然语言处理的各种算法,包括分词技术、数据预处理、词向量技术、序列标注与中文 NER、文本深度学习、循环神经网络等。
第三部分 实战篇(第9-12章)
主要讲解了语言模型与对话生成、知识图谱问答、自然语言推理、实体语义理解这4种人机交互方面的高阶技术,涵盖信息抽取、槽位填充、语义理解、聊天机器人、问答系统、多轮对话技术等知识点。
封面图
目录
- 前言
- 第1章人机交互导论 1
- 1.1图灵测试 1
- 1.1.1图灵测试相关背景 1
- 1.1.2图灵测试的定义 2
- 1.1.3图灵测试引发的思考 3
- 1.2专家系统 3
- 1.2.1专家系统的定义 3
- 1.2.2专家系统的框架 4
- 1.2.3专家系统的发展 6
- 1.3人机交互 6
- 1.3.1人机交互简介 6
- 1.3.2人机交互模块的发展 7
- 1.3.3自然语言理解 9
- 1.3.4对话管理 10
- 1.3.5自然语言生成 10
- 1.4机器人形态 11
- 1.4.1聊天机器人 12
- 1.4.2任务型机器人 13
- 1.4.3面向FAQ的问答机器人 13
- 1.4.4面向KB的问答机器人 14
- 1.5本章小结 14
- 第2章人机对话前置技术 15
- 2.1深度学习框架 15
- 2.1.1Theano 15
- 2.1.2TensorFlow 16
- 2.1.3Keras 17
- 2.1.4PyTorch 17
- 2.2搭建NLP开发环境 18
- 2.2.1下载和安装Anaconda 18
- 2.2.2conda的使用 21
- 2.2.3中文分词工具——Jieba 22
- 2.2.4PyTorch的下载与安装 24
- 2.2.5Jupyter Notebook远程访问 25
- 2.3TorchText的安装与介绍 26
- 2.4本章小结 29
- 第3章中文分词技术 30
- 3.1分词的概念和分类 30
- 3.2规则分词 31
- 3.2.1正向最大匹配 31
- 3.2.2逆向最大匹配 32
- 3.2.3双向最大匹配 33
- 3.3统计分词 35
- 3.4混合分词 44
- 3.5Jieba分词 44
- 3.6准确率评测 47
- 3.6.1混淆矩阵 48
- 3.6.2中文分词中的P、R、F1计算 49
- 3.7本章小结 51
- 第4章数据预处理 52
- 4.1数据集介绍 52
- 4.2数据预处理 53
- 4.3TorchText预处理 55
- 4.3.1torchtext.data 55
- 4.3.2torchtext.datasets 56
- 4.3.3构建词表 57
- 4.3.4构建迭代器 58
- 4.4本章小结 60
- 第5章词向量实战 61
- 5.1词向量的由来 61
- 5.1.1one-hot模型 61
- 5.1.2神经网络词向量模型 63
- 5.2word2vec 67
- 5.2.1初探word2vec 67
- 5.2.2深入CBOW模型 68
- 5.2.3Skip-gram模型介绍 69
- 5.2.4word2vec模型本质 70
- 5.3glove 71
- 5.3.1初探glove 71
- 5.3.2glove模型原理 72
- 5.4word2vec实战 74
- 5.4.1预处理模块 74
- 5.4.2模型框架 78
- 5.4.3模型训练 79
- 5.4.4模型评估 82
- 5.5glove实战 83
- 5.5.1预处理模块 83
- 5.5.2模型框架 85
- 5.5.3模型训练 86
- 5.5.4模型评估 87
- 5.6本章小结 87
- 第6章序列标注与中文NER实战 88
- 6.1序列标注任务 88
- 6.1.1任务定义及标签体系 88
- 6.1.2任务特点及对比 90
- 6.1.3任务应用场景 92
- 6.2序列标注的技术方案 94
- 6.2.1隐马尔可夫模型 94
- 6.2.2条件随机场 94
- 6.2.3循环神经网络 96
- 6.2.4Bert 97
- 6.3序列标注实战 99
- 6.3.1中文NER数据集 99
- 6.3.2数据预处理 100
- 6.3.3模型训练框架 102
- 6.3.4模型评估 103
- 6.4BiLSTM 104
- 6.4.1参数介绍 104
- 6.4.2BiLSTM模型框架 104
- 6.4.3模型效果评估 106
- 6.5BiLSTM-CRF 107
- 6.5.1参数介绍 107
- 6.5.2BiLSTM-CRF模型框架 107
- 6.5.3模型评价 112
- 6.6本章小结 112
- 第7章文本分类技术 113
- 7.1TFIDF与朴素贝叶斯 113
- 7.1.1TFIDF 113
- 7.1.2朴素贝叶斯 115
- 7.1.3实战案例之新闻分类 116
- 7.2TextCNN 118
- 7.2.1TextCNN网络结构解析 118
- 7.2.2实战案例之新闻分类 121
- 7.3FastText 129
- 7.3.1模型架构 129
- 7.3.2层次softmax 130
- 7.3.3n-gram子词特征 130
- 7.3.4安装与实例解析 131
- 7.4后台运行 134
- 7.5本章小结 134
- 第8章循环神经网络 135
- 8.1RNN 135
- 8.1.1序列数据 135
- 8.1.2神经网络需要记忆 136
- 8.1.3RNN基本概念 136
- 8.1.4RNN的输入输出类型 138
- 8.1.5双向循环神经网络 139
- 8.1.6深层循环神经网络 140
- 8.1.7RNN的问题 141
- 8.1.8RNN PyTorch实现 141
- 8.2LSTM 143
- 8.2.1LSTM网络结构解析 143
- 8.2.2LSTM PyTorch实现 147
- 8.3GRU 149
- 8.3.1GRU网络结构解析 149
- 8.3.2GRU PyTorch实现 151
- 8.4TextRNN 152
- 8.4.1基本概念 152
- 8.4.2实战案例之新闻分类 153
- 8.5TextRCNN 154
- 8.5.1基本概念 154
- 8.5.2实战案例之新闻分类 155
- 8.6实战案例之诗歌生成 155
- 8.6.1数据预处理 156
- 8.6.2模型结构 158
- 8.6.3模型训练 158
- 8.6.4诗歌生成 159
- 8.7本章小结 161
- 第9章语言模型与对话生成 162
- 9.1自然语言生成介绍 162
- 9.2序列生成模型 163
- 9.2.1seq2seq的基本框架 164
- 9.2.2Encoder-Decoder框架的缺点 165
- 9.3经典的seq2seq框架 166
- 9.3.1基于RNN的seq2seq 166
- 9.3.2基于CNN的seq2seq 167
- 9.4Attention机制 169
- 9.4.1序列模型RNN 169
- 9.4.2Attention机制的原理 170
- 9.4.3Self-Attention模型 171
- 9.4.4Transfomer模型介绍 171
- 9.5Bert——自然语言处理的新范式 173
- 9.5.1Bert结构 174
- 9.5.2预训练任务 175
- 9.6聊天机器人实战 177
- 9.6.1数据介绍和数据预处理 177
- 9.6.2实现seq2seq模型 179
- 9.7本章小结 182
- 第10章知识图谱问答 183
- 10.1知识图谱概述 184
- 10.2关系抽取 186
- 10.3人物间关系识别 189
- 10.3.1任务分析 189
- 10.3.2模型设计 190
- 10.3.3代码实现及优化 191
- 10.4图谱构建 196
- 10.4.1Neo4J简介 197
- 10.4.2Neo4J创建图谱示例 198
- 10.5基于深度学习的知识图谱问答模块 203
- 10.5.1数据构造 205
- 10.5.2查询目标检测 206
- 10.5.3查询条件抽取 207
- 10.5.4基于知识图谱查询模块实现 210
- 10.6本章小结 212
- 第11章自然语言推理 213
- 11.1自然语言推理介绍 213
- 11.2自然语言推理常见模型 215
- 11.2.1SIAMESE网络 215
- 11.2.2BiMPM网络 217
- 11.2.3Bert网络 221
- 11.3多轮对话中的答案导向问题 223
- 11.4答案导向问题的实战 224
- 11.4.1数据构造 224
- 11.4.2孪生网络实战 226
- 11.4.3BiMPM网络实战 232
- 11.4.4Bert网络实战 236
- 11.4.5模型结果比较 237
- 11.5本章小结 238
- 第12章实体语义理解 239
- 12.1实体语义理解简介 239
- 12.2现有语义理解系统分析 242
- 12.2.1Time-NLPY/Time-NLP/FNLP 242
- 12.2.2HeidelTime 244
- 12.2.3知识驱动方法与数据驱动方法 246
- 12.3实体语义理解的技术方案 247
- 12.4实体语义理解实战 248
- 12.5数值解析实战 257
- 12.6时间解析实战 262
- 12.6.1时间信息的中间表示 262
- 12.6.2时长解析 263
- 12.6.3日期和时间点 265
- 12.6.4时间段 268
- 12.6.5时间信息的推理计算 270
- 12.7本章小结 273