自然语言处理实战

自然语言处理实战:利用Python理解、分析和生成文本

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

编辑推荐

实战自然语言处理及深度学习,涵盖基础知识与实际应用。

内容简介

本书是介绍自然语言处理(NLP)和深度学习的实战书。NLP已成为深度学习的核心应用领域,而深度学习是NLP研究和应用中的必要工具。本书分为3部分:第一部分介绍NLP基础,包括分词、TF-IDF向量化以及从词频向量到语义向量的转换;第二部分讲述深度学习,包含神经网络、词向量、卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆(LSTM)网络、序列到序列建模和注意力机制等基本的深度学习模型和方法;第三部分介绍实战方面的内容,包括信息提取、问答系统、人机对话等真实世界系统的模型构建、性能挑战以及应对方法。本书面向中高级Python开发人员,兼具基础理论与编程实战,是现代NLP领域从业者的实用参考书。

作者简介

作者简介

霍布森.莱恩(Hobson Lane)拥有20年构建自主系统的经验,这些系统能够代表人类做出重要决策。Hobson在Talentpair训练机器完成简历的阅读和理解,以减少招聘者产生的偏见。在Aira,他帮助构建了第一个聊天机器人,为视障人士描述视觉世界。他是Keras、scikit-learn、PyBrain、PUGNLP和ChatterBot等开源项目的积极贡献者。他目前正在从事完全公益的开放科学研究和教育项目,包括构建一个开放源码的认知助手。他在AIAA、PyCon、PAIS和IEEE上发表了多篇论文和演讲,并获得了机器人和自动化领域的多项专利。

科尔.霍华德(Cole Howard)是一位机器学习工程师、NLP实践者和作家。他一生都在寻找模式,并在人工神经网络的世界里找到了自己真正的家。他开发了大型电子商务推荐引擎和面向超维机器智能系统(深度学习神经网络)的最先进的神经网络,这些系统在Kaggle竞赛中名列前茅。他曾在Open Source Bridge和Hack University 大会上发表演讲,介绍卷积神经网络、循环神经网络及其在自然语言处理中的作用。

汉纳斯.马克斯.哈普克(Hannes Max Hapke)是从一位电气工程师转行成为机器学习工程师的。他在高中研究如何在微控制器上计算神经网络时,对神经网络产生了浓厚的兴趣。Hannes喜欢自动化软件开发和机器学习流水线。他与合作者共同开发了面向招聘、能源和医疗应用的深度学习模型和机器学习流水线。Hannes在包括OSCON、Open Source Bridge和Hack University在内的各种会议上发表演讲介绍机器学习。

译者简介

史亮小米NLP高级软件工程师,本科毕业于武汉大学,后保送中科院计算所硕博连读,获得博士学位。目前主要负责小米MiNLP平台的研发工作。

鲁骁小米NLP高级软件工程师,本科、硕士毕业于华中科技大学,博士毕业于中科院计算所。目前主要从事大规模文本分类、内容过滤、人机对话等方向的研发工作。

唐可欣小米NLP软件工程师,本科毕业于西安电子科技大学,硕士毕业于法国巴黎高科电信学院。主要从事语言模型、意图分析、情感分析等方向的研发工作。

王斌小米AI实验室主任、NLP首席科学家,前中科院博导、研究员,中国科学院大学教授。译有《信息检索导论》《大数据:互联网大规模数据挖掘与分布式处理》《机器学习实战》等书籍。

章节目录

版权信息

版 权

版权声明

内容提要

译者简介

译者序

前 言

致 谢

关于本书

关于作者

关于封面插画

资源与支持

第一部分 处理文本的机器

第1章 NLP概述

1.1 自然语言与编程语言

1.2 神奇的魔法

1.2.1 会交谈的机器

1.2.2 NLP中的数学

1.3 实际应用

1.4 计算机“眼”中的语言

1.4.1 锁的语言(正则表达式)

1.4.2 正则表达式

1.4.3 一个简单的聊天机器人

1.4.4 另一种方法

1.5 超空间简述

1.6 词序和语法

1.7 聊天机器人的自然语言流水线

1.8 深度处理

1.9 自然语言智商

1.10 小结

第2章 构建自己的词汇表——分词

2.1 挑战(词干还原预览)

2.2 利用分词器构建词汇表

2.2.1 点积

2.2.2 度量词袋之间的重合度

2.2.3 标点符号的处理

2.2.4 将词汇表扩展到n -gram

2.2.5 词汇表归一化

2.3 情感

2.3.1 VADER:一个基于规则的情感分析器

2.3.2 朴素贝叶斯

2.4 小结

第3章 词中的数学

3.1 词袋

3.2 向量化

向量空间

3.3 齐普夫定律

3.4 主题建模

3.4.1 回到齐普夫定律

3.4.2 相关度排序

3.4.3 工具

3.4.4 其他工具

3.4.5 Okapi BM25

3.4.6 未来展望

3.5 小结

第4章 词频背后的语义

4.1 从词频到主题得分

4.1.1 TF-IDF向量及词形归并

4.1.2 主题向量

4.1.3 思想实验

4.1.4 一个主题评分算法

4.1.5 一个LDA分类器

4.2 潜在语义分析

思想实验的实际实现

4.3 奇异值分解

4.3.1 左奇异向量U

4.3.2 奇异值向量S

4.3.3 右奇异向量V T

4.3.4 SVD矩阵的方向

4.3.5 主题约简

4.4 主成分分析

4.4.1 三维向量上的PCA

4.4.2 回归NLP

4.4.3 基于PCA的短消息语义分析

4.4.4 基于截断的SVD的短消息语义分析

4.4.5 基于LSA的垃圾短消息分类的效果

4.5 潜在狄利克雷分布(LDiA)

4.5.1 LDiA思想

4.5.2 基于LDiA主题模型的短消息语义分析

4.5.3 LDiA+LDA=垃圾消息过滤器

4.5.4 更公平的对比:32个LDiA主题

4.6 距离和相似度

4.7 反馈及改进

线性判别分析

4.8 主题向量的威力

4.8.1 语义搜索

4.8.2 改进

4.9 小结

第二部分 深度学习(神经网络)

第5章 神经网络初步(感知机与反向传播)

5.1 神经网络的组成

5.1.1 感知机

5.1.2 数字感知机

5.1.3 认识偏置

5.1.4 误差曲面

5.1.5 不同类型的误差曲面

5.1.6 多种梯度下降算法

5.1.7 Keras:用Python实现神经网络

5.1.8 展望

5.1.9 归一化:格式化输入

5.2 小结

第6章 词向量推理(Word2vec)

6.1 语义查询与类比

类比问题

6.2 词向量

6.2.1 面向向量的推理

6.2.2 如何计算Word2vec表示

6.2.3 如何使用gensim.word2vec模块

6.2.4 生成定制化词向量表示

6.2.5 Word2vec和GloVe

6.2.6 fastText

6.2.7 Word2vec和LSA

6.2.8 词关系可视化

6.2.9 非自然词

6.2.10 利用Doc2vec计算文档相似度

6.3 小结

第7章 卷积神经网络(CNN)

7.1 语义理解

7.2 工具包

7.3 卷积神经网络

7.3.1 构建块

7.3.2 步长

7.3.3 卷积核的组成

7.3.4 填充

7.3.5 学习

7.4 狭窄的窗口

7.4.1 Keras实现:准备数据

7.4.2 卷积神经网络架构

7.4.3 池化

7.4.4 dropout

7.4.5 输出层

7.4.6 开始学习(训练)

7.4.7 在流水线中使用模型

7.4.8 前景展望

7.5 小结

第8章 循环神经网络(RNN)

8.1 循环网络的记忆功能

8.1.1 随时间反向传播算法

8.1.2 不同时刻的权重更新

8.1.3 简要回顾

8.1.4 难点

8.1.5 利用Keras实现循环神经网络

8.2 整合各个部分

8.3 自我学习

8.4 超参数

8.5 预测

8.5.1 有状态性

8.5.2 双向RNN

8.5.3 编码向量

8.6 小结

第9章 改进记忆力:长短期记忆网络(LSTM)

9.1 长短期记忆(LSTM)

9.1.1 随时间反向传播

9.1.2 模型的使用

9.1.3 脏数据

9.1.4 “未知”词条的处理

9.1.5 字符级建模

9.1.6 生成聊天文字

9.1.7 进一步生成文本

9.1.8 文本生成的问题:内容不受控

9.1.9 其他记忆机制

9.1.10 更深的网络

9.2 小结

第10章 序列到序列建模和注意力机制

10.1 编码-解码架构

10.1.1 解码思想

10.1.2 似曾相识?

10.1.3 序列到序列对话

10.1.4 回顾LSTM

10.2 组装一个序列到序列的流水线

10.2.1 为序列到序列训练准备数据集

10.2.2 Keras中的序列到序列模型

10.2.3 序列编码器

10.2.4 思想解码器

10.2.5 组装一个序列到序列网络

10.3 训练序列到序列网络

生成输出序列

10.4 使用序列到序列网络构建一个聊天机器人

10.4.1 为训练准备语料库

10.4.2 建立字符字典

10.4.3 生成独热编码训练集

10.4.4 训练序列到序列聊天机器人

10.4.5 组装序列生成模型

10.4.6 预测输出序列

10.4.7 生成回复

10.4.8 与聊天机器人交谈

10.5 增强

10.5.1 使用装桶法降低训练复杂度

10.5.2 注意力机制

10.6 实际应用

10.7 小结

第三部分 进入现实世界(现实中的NLP挑战)

第11章 信息提取(命名实体识别与问答系统)

11.1 命名实体与关系

11.1.1 知识库

11.1.2 信息提取

11.2 正则模式

11.2.1 正则表达式

11.2.2 把信息提取当作机器学习里的特征提取任务

11.3 值得提取的信息

11.3.1 提取GPS位置

11.3.2 提取日期

11.4 提取人物关系(事物关系)

11.4.1 词性标注

11.4.2 实体名称标准化

11.4.3 实体关系标准化和提取

11.4.4 单词模式

11.4.5 文本分割

11.4.6 为什么split('.!?')函数不管用

11.4.7 使用正则表达式进行断句

11.5 现实世界的信息提取

11.6 小结

第12章 开始聊天(对话引擎)

12.1 语言技能

12.1.1 现代方法

12.1.2 混合方法

12.2 模式匹配方法

12.2.1 基于AIML的模式匹配聊天机器人

12.2.2 模式匹配的网络视图

12.3 知识方法

12.4 检索(搜索)方法

12.4.1 上下文挑战

12.4.2 基于示例检索的聊天机器人

12.4.3 基于搜索的聊天机器人

12.5 生成式方法

12.5.1 聊聊NLPIA

12.5.2 每种方法的利弊

12.6 四轮驱动

Will的成功

12.7 设计过程

12.8 技巧

12.8.1 用带有可预测答案的问题提问

12.8.2 要有趣

12.8.3 当其他所有方法都失败时,搜索

12.8.4 变得受欢迎

12.8.5 成为连接器

12.8.6 变得有情感

12.9 现实世界

12.10 小结

第13章 可扩展性(优化、并行化和批处理)

13.1 太多(数据)未必是好事

13.2 优化NLP算法

13.2.1 索引

13.2.2 高级索引

13.2.3 基于Annoy的高级索引

13.2.4 究竟为什么要使用近似索引

13.2.5 索引变通方法:离散化

13.3 常数级内存算法

13.3.1 gensim

13.3.2 图计算

13.4 并行化NLP计算

13.4.1 在GPU上训练NLP模型

13.4.2 租与买

13.4.3 GPU租赁选择

13.4.4 张量处理单元TPU

13.5 减少模型训练期间的内存占用

13.6 使用TensorBoard了解模型

如何可视化词嵌入

13.7 小结

附录A 本书配套的NLP工具

A.1 Anaconda3

A.2 安装nlpia

A.3 集成开发环境

A.4 Ubuntu包管理器

A.5 Mac

A.5.1 一个Mac包管理器

A.5.2 一些工具包

A.5.3 准备工作

A.6 Windows

虚拟化

A.7 NLPIA自动化

附录B 有趣的Python和正则表达式

B.1 处理字符串

B.1.1 字符串类型(str和bytes)

B.1.2 Python中的模板(.format())

B.2 Python中的映射(dict和OrderedDict)

B.3 正则表达式

B.3.1 “|”——或

B.3.2 “()”——分组

B.3.3 “[]”——字符类

B.4 代码风格

B.5 技巧

附录C 向量和矩阵(线性代数基础)

向量

距离

附录D 机器学习常见工具与技术

D.1 数据选择和避免偏见

D.2 模型拟合程度

D.3 数据集划分

D.4 交叉拟合训练

D.5 抑制模型

D.5.1 正则化

D.5.2 dropout

D.5.3 批归一化

D.6 非均衡训练集

D.6.1 过采样

D.6.2 欠采样

D.6.3 数据增强

D.7 性能指标

D.7.1 分类的衡量指标

D.7.2 回归的衡量指标

D.8 专业技巧

附录E 设置亚马逊云服务(AWS)上的GPU

创建AWS GPU实例的步骤

成本控制

附录F 局部敏感哈希

F.1 高维向量的区别

F.1.1 向量空间上的索引与哈希

F.1.2 关于高维的思考

F.2 高维索引

F.2.1 局部敏感哈希

F.2.2 近似最近邻

F.3 推文点赞预测

资源

词汇表

自然语言处理实战是2020年由人民邮电出版社出版,作者[美]霍布森·莱恩。

得书感谢您对《自然语言处理实战》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
机器学习实战 电子书
《机器学习实战》面向日常任务的高效实战内容,介绍并实现机器学习的主流算法。
深度学习原理与实践 电子书
(1)大量图例,简单易懂。作者亲自绘制了大量插图,力求还原深度学习的算法思想,分解和剖析晦涩的算法,用图例来表示复杂的问题。生动的图例也能给读者带来阅读乐趣,快乐地学习算法知识,体会深度学习的算法本质。 (2)简化公式,生动比喻。深度学习和机器学习类的书中通常会有大量复杂冗长的算法公式,为了避免出现读者读不懂的情况,本书尽可能地统一了公式和符号,简化相关公式,并加以生动的比喻进行解析。在启发读者的同时,锻炼读者分析问题和解决问题的能力。 (3)算法原理,代码实现。在介绍深度学习及相关算法的原理时,不仅给出了对应的公式,还给出了实现和求解公式的代码,让读者明确该算法的作用、输入和输出。原理与代码相结合,使得读者对深度学习的算法实现更加具有亲切感。 (4)深入浅出,精心剖析。理解深度学习需要一定的机器学习知识,本书在D1章介绍了深度学习与机器学习的关系,并简要介绍了机器学习的内容。在内容安排上,每章依次介绍模型框架的应用场景、结构和使用方式,最后通过真实的案例去全面分析该模型结构。目的是让读者可以抓住深度学习的本质。 (5)入门实践,案例重现。每一章最后的真实案例不是直接堆砌代码,而是讲解使用该算法模型的原因和好处。从简单的背景知识出发,使用前文讲解过的深度学习知识实现一个实际的工程项目。实践可以用于及时检验读者对所学知识的掌握程度,为读者奠定深度学习的实践基础。 将一本技术书籍写得通俗易懂谈何容易,但《深度学习原理与实践》这本书确实做到了。书中对近年来火热的深度学习理论知识进行简单剖析,化繁为简,没有局限于坐而论道,而是将实例和数学理论相结合,让读者能够快速理解各种模型并上手实践,值得细读。 --唐春明 广州大学数学与信息学科学院副院长 本书从原理、方法、实践这 3 个维度系统地介绍了深度学习的方方面面,内容详实,解读清晰,细节与全貌兼顾,既适合初学者阅读,也可以作为深入研究的参考用书。 --杨刚 西安电子科技大学教授 近年来出版的深度学习相关图书中,本书是我见过非常有指导意义的中文书籍之一。本书对 ANN、CNN、RNN 等模型进行深入浅出的介绍,引入大量图例和简化后的公式,让算法浅显易懂。每一章的实践内容都给人惊喜,强烈推荐! --吴健之 腾讯音乐高级工程师 作为产品经理,我能看懂的深度学习书籍实在太少了。本书恰到好处,插图丰富直观,数学公式简练,很喜欢此类风格的图书,易懂好学。即使你不是程序员或算法专家,该书也值得一看! --张瑞 中软国际高级产品经理
深度学习 电子书
深度学习是机器学习的一个分支,它能够使计算机通过层次概念来学习经验和理解世界。
Python 3破冰人工智能:从入门到实战 电子书
数学基础:从历年数学建模竞赛入手,解读人工智能中的数学方法。 编程实践:100余个代码实例,全面讲解网络爬虫、数据存储与数据分析等内容。 算法应用:实战案例辅以丰富图解,详尽分析人工智能算法特性及其应用场景。
Spark海量数据处理:技术详解与平台实战 电子书
在数字经济时代,数据是重要的资源要素;同时,新的数据又在源源不断地产生,企业面临的一个基本问题就是如何管理和利用这些数据,这对传统的数据处理方法与分析框架提出了新的诉求和挑战,也是全球业界与学界为关心的问题。为了满足大数据时代对信息的快速处理的需求,一个分布式的开源计算框架Apache Spark应运而生。经过十年的发展,Spark已经成为目前大数据处理的标杆,在整个业界得到了广泛的使用。对大数据工程师来说,用Spark构建数据管道无疑是很好的选择,而对数据科学家来说,Spark也是高效的数据探索工具。 本书基于Spark发行版2.4.4写作而成,包含大量的实例与一个完整项目,技术理论与实战相结合,层次分明,循序渐进。本书不仅介绍了如何开发Spark应用的基础内容,包括Spark架构、Spark编程、SparkSQL、Spark调优等,还探讨了Structured Streaming、Spark机器学习、Spark图挖掘、Spark深度学习、Alluxio系统等高级主题,同时完整实现了一个企业背景调查系统,借鉴了数据湖与Lambda架构的思想,涵盖了批处理、流处理应用开发,并加入了一些开源组件来满足业务需求。学习该系统可以使读者从实战中巩固所学,并将技术理论与应用实战融会贯通。 本书适合准备学习Spark的开发人员和数据分析师,以及准备将Spark应用到实际项目中的开发人员和管理人员阅读,也适合计算机相关专业的高年级本科生和研究生学习和参考,对于具有一定的Spark使用经验并想进一步提升的数据科学从业者也是很好的参考资料。