这是一本讲述如何用NLP技术进行文本内容理解的著作,也是一本系统讲解NLP算法的著作,是作者在NLP和内容理解领域多年经验的总结。
本书结合内容理解的实际业务场景,系统全面、循序渐进地讲解了各种NLP算法以及如何用这些算法高效地解决内容理解方面的难题,主要包括如下几个方面的内容:
(1)文本特征表示
文本特征表示是NLP的基石,也是内容理解的基础环节,本书详细讲解了离散型表示方法和分布型表示方法等特征表示方法及其应用场景,还讲解了词向量的评判标准。
(2)内容重复理解
详细讲解了标题重复、段落重复、文章重复的识别方法和去重算法。
(3)内容通顺度识别及纠正
详细讲解了内容通顺度的识别方法以及纠正不通顺内容的方法。
(4)内容质量
详细讲解了多种内容质量相关的算法,以及如何搭建高质量的知识问答体系的流程。
(5)标签体系构建
详细讲解了针对内容理解的标签体系的建设流程和方法,以及多种相关算法。
(6)文本摘要生成
详细讲解了抽取式文本摘要和生成式文本摘要两种流行的文本摘要生成方法,以及文本摘要的常用数据集和文本摘要评价方法。
(7)文本纠错
详细讲解了文本纠错的传统方法、深度学习方法、工业界解决方案,以及常用的文本纠错工具的安装和使用。
(1)作者背景资深:作者是资深AI技术专家,BAT高级算法工程师。
(2)作者经验丰富:作者在NLP、内容理解等领域有多年实践经验。
(3)揭秘大模型:揭秘大模型的底层技术原理,详解文本内容理解和生产的技术细节。
(4)解决6大难题:为内容重复理解、内容通顺度识别及纠正、内容质量、标签体系构建、文本摘要生成、文本纠错6大内容理解难题提供基于NLP的解决方案。
(5)结合业务场景:所有内容、技术、算法均从实际业务场景出发,从问题的角度拆解问题。
(6)大量NLP算法:书中系统讲解了可用于内容理解的各种NLP算法的原理和使用。
(7)包含大量案例:以实战为导向,用案例贯穿全书。
Preface
前 言
为何写作本书
随着人工智能的蓬勃发展,大量应用场景中都会涉及文本的内容理解技术。由于场景不同,目前文本内容理解没有统一的模板,解决起来并不容易。市场上有各种各样的机器学习、深度学习、自然语言处理等资料,但是都没有与业务场景紧密地联系起来,即使有联系也很笼统,并没有涉及实际业务场景中非常琐碎的细节问题。而只有把这些细节问题解决好,才能更好地发展业务。同时,市面上从问题的角度讲解算法等相关知识的书很少,而在业务场景中更多的是通过简单且匹配的技术解决业务问题。所以,我想把如何从问题的角度拆解问题,然后通过匹配的技术解决业务问题的方法分享给大家。
在很多人眼里,写书是一件很困难的事情。不过我很想挑战一下,想在这种痛苦的煎熬之后,榨干自己的思想,交上一份满意的答卷。而且我一直坚信写书是一件非常有意义的事情,不仅能将自己积淀的知识固化下来,还能在回顾技术的过程中闪现更多新的想法。最最重要的是,我觉得把自己的技术经验、业务经验、深度思考等分享给更多的人,让更多的人可以站在前人的经验上继续前行,是一件无私且伟大的事情。
这本书是我和自己读研时期的挚友共同完成的。写书不仅加深了我们之间的友谊,还让我们更加坚信,科技可以改变世界。
本书读者对象
1)统计学及相关专业的学生、IT从业者。本书的初衷是帮助从业者及相关专业的学生拥有大量理论知识却缺乏实战经验的人员,将理论知识和实践联动起来,以更好地解决业务问题,达到对算法、技术、业务场景中的问题知其然且知其所以然的目的。
2)信息科学和计算机科学爱好者。对于信息科学和计算机科学爱好者来说,本书也是一本全面了解人工智能领域的应用、技术、场景的指南,书中没有太多晦涩难懂的数学公式,而是通过业务中的问题思考技术的使用。
3)人工智能相关专业的研究人员。
本书主要内容
自然语言处理的目的是让计算机能够理解人类的语言。本书旨在从文本内容理解的角度入手,详细介绍文本特征表示、内容重复理解、内容通顺度识别及纠正、内容质量、标签体系、文本摘要生成及文本纠错等内容。本书采用以应用贯穿始终的方式进行相关技术的介绍和说明。
具体来说,本书主要从以下几个方面介绍自然语言处理中的相关技术及其应用。
第1章详细介绍了文本特征的表示方法,包括离散型特征表示方法与分布型特征表示方法,以及词向量的评判标准。
第2章主要从应用的角度介绍了标题、段落和文章重复三种场景以及三种场景的具体实现。
第3章介绍了数据增强方法、句子通顺度识别方法以及纠正不通顺内容的方法。
第4章从应用的角度详细介绍了知识问答质量体系的搭建方法,方便大家后续在业务中快速实践。
第5章主要讲述了标签体系的原理及构建过程中用到的3种主要算法。
第6章介绍了文本摘要生成中两类流行的方法,包括抽取式文本摘要和生成式文本摘要,还介绍了文本摘要的几种常用数据集以及文本摘要的评价方法。
第7章介绍了文本中错误的类型、来源,文本纠错常用的方法与框架,并介绍了常用的文本纠错工具的安装以及使用方法。
本书内容特色
本书的特色在于详细且全面地介绍了目前流行的NLP算法,给出了丰富的理论知识,并结合代码进行讲解,以带领读者更好地理解算法。另外书中还介绍了如何在实际业务中高效地解决问题,使读者站在更高的角度,更加全面且具体地了解NLP技术。
资源和勘误
由于作者水平有限,书中难免存在一些错误或者不准确的地方,恳请读者批评指正。读者可通过发送电子邮件到617803337@qq.com反馈建议或意见。
致谢
感谢家人对我的理解和支持。当我有出版一本书的想法的时候,他们一直鼓励我,相信我是在做一件非常有意义的事情。
感谢我的挚友谷雪、孟子尧、张朋莉愿意和我一起做这件有趣的事情。在与大家合作的过程中我成长了很多。
感谢颖颖老师对我的厚爱,范红星对我的陪伴,感谢我生命中的所有老师及让我成长的人。
感谢机械工业出版社的出版工作者。有了大家的辛勤付出,本书才得以顺利面世。
这本书是友谊、工作以及科研成果的结晶,也是我们并肩作战的见证,希望它可以将我们的实践经验、科研经验固化下来,帮助更多的人少走弯路,更快地成长。
谨以此书献给我们的青春,献给热爱算法并为之奋斗的朋友们。因为相信,所以坚定。
李明琦
李明琦
资深AI技术专家,现就职于BAT,担任高级算法工程师。长期致力于机器学习、深度学习、NLP等技术在实际业务场景中的落地,在内容理解方面有丰富的经验,主导的内容质量项目曾获得最佳项目奖。
先后发表人工智能相关的学术论文2篇,申请人工智能领域的发明专利5项。在GitHub上贡献了大量内容质量、问答系统、NLP等方面的代码,在CSDN撰写了一些与算法、机器学习、内容理解相关的文章,深受欢迎。
谷 雪
现为葡萄牙米尼奥大学博士生,涉及的研究领域为神经架构搜索、自然语言处理、情感分析,博士期间着力于细粒度情感原因提取。先后发表过学术论文2篇,其中一篇是神经架构搜索的综述,另一篇是基于进化策略的神经架构演化方法。在GitHub上贡献了大量深度学习、机器学习代码,在CSDN上分享了服务器配置、数据分析、图像去噪、情感分析等方向的多篇文章。
孟子尧
在人工智能技术领域有非常深厚的积累,擅长机器学习和深度学习,尤其是深度学习中的图像分类和自然语言处理等技术。热衷于开源的应用和推广,在GitHub和CSDN上贡献了许多代码和文章。在《计算机研究与发展》上发表过1篇人工智能相关论文。
CONTENTS
目 录
前言
第1章 文本特征表示 1
1.1 语料与语料预处理 1
1.1.1 语料和语料库 1
1.1.2 语料预处理 2
1.2 文本特征表示方法 6
1.2.1 离散型特征表示方法 6
1.2.2 分布型特征表示方法 13
1.3 词向量的评判标准 29
1.3.1 内部评估 29
1.3.2 外在评估 31
1.4 本章小结 34
第2章 内容重复理解 35
2.1 标题重复 35
2.1.1 标题符号规整化处理 36
2.1.2 Jieba分词 39
2.1.3 LAC分词 43
2.1.4 基于分词及字符串等
方式进行重复识别 45
2.2 段落重复识别实例 47
2.2.1 段落重复识别 47
2.2.2 基于N-gram算法进行
内容去重 48
2.2.3 平滑处理技术 54
2.3 基于相似度计算的文章判重 57
2.3.1 文本相似度计算任务
的分析 57
2.3.2 距离度量方式 58
2.3.3 基于SimHash算法进行
文本重复检测 62
2.4 本章小结 66
第3章 内容通顺度识别及纠正 67
3.1 数据增强 67
3.2 基于FastText算法的句子
通顺度识别 73
3.2.1 CBOW模型 74
3.2.2 FastText算法原理 75
3.2.3 FastText算法实战 81
3.3 基于TextCNN算法的分类
任务实现 93
3.3.1 专有名词简介 93
3.3.2 算法介绍 94
3.3.3 参数调优经验总结 96
3.3.4 基于Keras工具实现TextCNN算法 96
3.4 基于TextRNN算法的分类
任务实现 98
3.4.1 LSTM和BiLSTM 98
3.4.2 TextCNN和TextRNN
识别效果对比 105
3.5 基于Seq2Seq模型的
纠正策略 106
3.5.1 Seq2Seq模型原理 106
3.5.2 纠正不通顺句子的方法 108
3.6 本章小结 114
第4章 内容质量 116
4.1 GBDT算法 116
4.1.1 GBDT算法概述 117
4.1.2 负梯度拟合 117
4.1.3 GBDT回归算法 118
4.1.4 GBDT分类算法 119
4.2 XGBoost算法 121
4.2.1 从GBDT到XGBoost 121
4.2.2 XGBoost损失函数 122
4.2.3 XGBoost损失函数的
优化求解 124
4.2.4 XGBoost算法流程 125
4.2.5 XGBoost算法参数
及调优 127
4.3 知识问答质量体系的搭建 129
4.3.1 知识问答质量体系
建立的意义 130
4.3.2 整体的项目实施方案 130
4.3.3 知识问答质量体系
搭建流程 133
4.4 本章小结 142
第5章 标签体系构建 143
5.1 标签体系 143
5.1.1 标签体系的重要性 143
5.1.2 标签体系的分类 144
5.1.3 构建标签体系 146
5.2 TF-IDF算法 151
5.2.1 TF-IDF算法介绍 151
5.2.2 TF-IDF算法实现 152
5.3 PageRank算法 155
5.4 TextRank算法 163
5.4.1 TextRank算法的使用
场景 164
5.4.2 TextRank算法的
优缺点 168
5.5 本章小结 168
第6章 文本摘要生成 169
6.1 文本摘要相关介绍 169
6.1.1 文本摘要问题定义 169
6.1.2 文本摘要分类 170
6.1.3 文本摘要的技术和方法 170
6.2 基于无监督的抽取式文本摘要 172
6.2.1 基于经验的文本摘要 173
6.2.2 基于主题模型的
文本摘要 175
6.2.3 基于图的文本摘要 182
6.2.4 基于特征评分的
文本摘要 185
6.2.5 基于聚类的文本摘要 188
6.3 基于有监督的抽取式文本摘要 191
6.4 基于深度神经网络的生成式
文本摘要 201
6.5 文本摘要常用数据集 210
6.6 文本摘要评价方法 211
6.6.1 自动评价方法 211
6.6.2 人工评价方法 213
6.7 本章小结 213
第7章 文本纠错 214
7.1 错误来源及类型 214
7.2 文本纠错的3种传统方法 215
7.2.1 模板匹配 215
7.2.2 编辑距离匹配 216
7.2.3 HANSpeller 框架 217
7.3 文本纠错深度学习方法 220
7.3.1 英文文本纠错方法 220
7.3.2 中文文本纠错方法 224
7.4 工业界解决方法 233
7.4.1 3阶段级联的纠错方案 234
7.4.2 符合多种场景的通用
纠错方案 236
7.4.3 保险文本的纠错方案 237
7.5 文本纠错工具 239
7.5.1 pycorrector 239
7.5.2 xmnlp 240
7.6 本章小结 242