自然语言处理被誉为人工智能皇冠上的明珠。深度学习等技术的引入为自然语言处理技术带来了一场革命,尤其是近年来出现的基于预训练模型的方法,已成为研究自然语言处理的新范式。本书在介绍自然语言处理、深度学习等基本概念的基础上,重点介绍新的基于预训练模型的自然语言处理技术。本书包括基础知识、预训练词向量和预训练模型三大部分:基础知识部分介绍自然语言处理和深度学习的基础知识和基本工具;预训练词向量部分介绍静态词向量和动态词向量的预训练方法及应用;预训练模型部分介绍几种典型的预训练语言模型及应用,以及预训练模型的进展。除了理论知识,本书还有针对性地结合具体案例提供相应的PyTorch 代码实现,不仅能让读者对理论有更深刻的理解,还能快速地实现自然语言处理模型,达到理论和实践的统一。本书既适合具有一定机器学习基础的高等院校学生、研究机构的研究者,以及希望深入研究自然语言处理算法的计算机工程师阅读,也适合对人工智能、深度学习和自然语言处理感兴趣的学生和希望进入人工智能应用领域的研究者参考。
车万翔博士,哈尔滨工业大学计算机学院教授,博士生导师,教育部青年长江学者,黑龙江省龙江学者青年学者,斯坦福大学访问学者。现任中国中文信息学会计算语言学专业委员会委员、青年工作委员会副主任;中国计算机学会高级会员、曾任YOCSEF哈尔滨主席(2016-2017年度)。在ACL、EMNLP、AAAI、IJCAI等国内外高水平期刊和会议上发表学术论文50余篇,其中AAAI 2013年的文章获得了论文提名奖,论文累计被引用3,000余次(Google Scholar数据),H-index值为29。出版教材 2 部,译著 2 部。目前承担国家自然科学基金、973等多项科研项目。负责研发的语言技术平台(LTP)已被600余家单位共享,提供的在线语言云服务已有用户1万余人,并授权给百度、腾讯、华为等公司使用。2018、2019连续两年获CoNLL国际评测第1名。2015、2016连续两年获Google Focused Research Award(谷歌专注研究奖);2016年,获黑龙江省科技进步一等奖(排名第2);2012年,获黑龙江省技术发明奖二等奖(排名第2);2010年获中国中文信息学会钱伟长中文信息处理科学技术奖一等奖(排名第2)、首届汉王青年创新奖(个人)等多项奖励。2017年,所主讲的MOOC课程《高级语言程序设计(Python)》获国家精品在线开放课程。郭江麻省理工学院计算机科学与人工智能实验室,博士后研究员。毕业于哈尔滨工业大学社会计算与信息检索研究中心,约翰斯?霍普金斯大学联合培养博士,研究方向为自然语言处理与机器学习。在人工智能、自然语言处理领域国际重要会议及期刊(如ACL、EMNLP、AAAI等)发表论文20余篇。是被业界广泛应用的中文语言技术平台LTP的主要研发者之一。2015年,获百度奖学金;2018年,获中文信息学会优秀博士学位论文提名奖。崔一鸣科大讯飞AI研究院资深级研究员、研究主管。本科与硕士毕业于哈尔滨工业大学计算机科学与技术专业并继续攻读博士学位。长期从事阅读理解、问答系统、机器翻译、自然语言处理等相关领域的研究工作。曾以主要研究人员身份参加了国际口语机器翻译评测(IWSLT),NIST OpenMT国际机器翻译评测获得多项冠军。多次获得国际权威机器阅读理解评测冠军,其中包括斯坦福SQuAD挑战赛冠军、国际语义评测SemEval 2018阅读理解任务冠军、对话型阅读理解挑战赛CoQA、QuAC冠军、多步推理阅读理解挑战赛HotpotQA冠军。同时在自然语言处理国际会议ACL、EMNLP、AAAI、IJCAI等上发表十余篇学术论文,申请发明专利十余项,并担任国际会议程序委员会委员,担任国际ESI期刊审稿人等学术职务。
目录
推荐序III
推荐语IV
前言V
数学符号IX
第1 章绪论1
1.1 自然语言处理的概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 自然语言处理的难点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 抽象性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 组合性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 歧义性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4 进化性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.5 非规范性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.6 主观性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.7 知识性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.8 难移植性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 自然语言处理任务体系. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
1.3.1 任务层级. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 任务类别. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 研究对象与层次. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 自然语言处理技术发展历史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
第2 章自然语言处理基础11
2.1 文本的表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
2.1.1 词的独热表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 词的分布式表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3 词嵌入表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.4 文本的词袋表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 自然语言处理任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 语言模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.2 自然语言处理基础任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.3 自然语言处理应用任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 基本问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.1 文本分类问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.2 结构预测问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.3 序列到序列问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4 评价指标. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
2.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
第3 章基础工具集与常用数据集45
3.1 NLTK 工具集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
3.1.1 常用语料库和词典资源. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 常用自然语言处理工具集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
3.2 LTP 工具集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1 中文分词. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.2 其他中文自然语言处理功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
3.3 PyTorch 基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.1 张量的基本概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3.2 张量的基本运算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.3 自动微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.4 调整张量形状. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3.5 广播机制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.6 索引与切片. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.7 降维与升维. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4 大规模预训练数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.1 维基百科数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.2 原始数据的获取. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.3 语料处理方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.4 Common Crawl 数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.5 更多数据集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
3.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
第4 章自然语言处理中的神经网络基础69
4.1 多层感知器模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.1.1 感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.1.2 线性回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.3 Logistic 回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.4 Softmax 回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.1.5 多层感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.1.6 模型实现. . . . .