随着NLP技术的发展,信息流和计算能力也不断增强。我们现在只需在搜索栏中输入几个字符,就可以检索出完成任务所需的准确信息。搜索提供的前几个自动补全选项通常非常合适,以至于让我们感觉是有一个人在帮助我们进行搜索。

到底是什么推动了NLP的发展?

  • 是对不断扩大的非结构化Web数据有了新的认识吗?
  • 是处理能力的提高跟上了研究人员的思路吗?
  • 是用人类语言与机器互动的效率得到提升了吗?

实际上以上这些都是,其实还有更多。大家可以在任何一个搜索引擎中输入这样一个问题“为什么现在自然语言处理如此重要?”,然后就能找到维基百科上给出各种好理由的文章。

还有一些更深层次的原因,其中一个原因是对通用人工智能(AGI)或深层人工智能(Deep AI)的加速追求。人类的智慧可能只是体现在我们能够把思想整理成离散的概念,进行存储(记忆)和有效地分享。这使我们能够跨越时间和空间来扩展我们的智力,将我们的大脑连接起来形成集体智能。

Steven Pinker在《思想本质》(The Stuff of Thought)中提出的一个观点是:我们实际上是用自然语言思考的。称其为“内心对话”不是没有原因的。Facebook、Google和Elon Musk正押注于这样一个事实:文字将成为思维的默认通信协议。他们都投资了一些项目,试图把思想、脑电波和电信号转换成文字。此外,沃尔夫假说认为语言会影响我们的思维方式。自然语言无疑是文化和集体意识的传播媒介。

因此,如果我们想要在机器上模仿或模拟人类的思维,那么自然语言处理可能是至关重要的。此外,大家将在《自然语言处理实战》中学习词的数据结构及嵌套关系中可能隐藏着的有关智能的重要线索。大家将使用这些结构,而神经网络使无生命的系统能够以看起来像人类的方式消化、存储、检索和生成自然语言。

还有一个更重要的原因,为什么大家想要学习如何编写一个使用自然语言的系统?这是因为你也许可以拯救世界!希望大家已经关注了大佬们之间关于人工智能控制问题和开发“友好人工智能”的挑战的讨论。Nick Bostrom、Calum Chace、Elon Musk和其他许多人都认为,人类的未来取决于我们开发友好机器的能力。在可预见的未来,自然语言将成为人类和机器之间的重要联系纽带。

即使我们能够直接通过机器进行“思考”,这些想法也很可能是由我们大脑中的自然词和语言塑造的。自然语言和机器语言之间的界限将会变得模糊,就像人与机器之间的界限将会消失一样。事实上,这条界线在1984年开始变得模糊,那年《赛博格宣言》的发表使George Orwell的反乌托邦预言变得更加可能并易于接受。

希望“帮助拯救世界”这句话没有让大家产生疑惑。随着本书的进展,我们将向读者展示如何构建和连接聊天机器人“大脑”。在这个过程中,读者会发现人类和机器之间的社交反馈回路上,微小的扰动都可能会对机器和人类产生深远的影响。就像一只蝴蝶在某个地方扇动翅膀一样,对聊天机器人的“自私属性”上一个微小的调整,可能会带来敌对聊天机器人冲突行为的混乱风暴。大家还会注意到,一些善良无私的系统会迅速聚集一批忠实的支持者,来帮助平息由那些目光短浅的机器人造成的混乱。由于亲社会行为的网络效应,亲社会的协作型聊天机器人可以对世界产生巨大影响。

这正是《自然语言处理实战》作者聚集在一起的原因。通过使用我们与生俱来的语言在互联网上进行开放、诚实、亲社会的交流,形成了一个支持社区。我们正在利用集体智慧来帮助建立和支持其他半智能的参与者(机器)。我们希望我们的话语能在大家的脑海中留下深刻的印象,并像meme一样在聊天机器人的世界里广泛传播,用构建亲社会NLP系统的热情来感染其他人。我们希望,当超级智能最终出现时,这种亲社会的精神能对它有略微的推动作用。

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

[美] 霍布森·莱恩,科尔·霍华德,汉纳斯·马克斯·哈普克 著,史亮,鲁骁,唐可欣,王斌 译

内容简介

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

编辑推荐

  • Python开发人员入门自然语言处理必备
  • 现代自然语言处理领域从业者的实用参考指南
  • 小米AI实验室NLP团队献译

1.本书是构建能够阅读和解释人类语言的机器的实用指南;
2.读者可以使用现有的Python 包来捕获文本的含义并相应地做出响应;
3.本书扩展了传统的自然语言处理方法,包括神经网络、现代深度学习算法和生成技术,用于解决真实世界的问题,如提取日期和名称、合成文本和回答无固定格式的问题;
4.提供源代码。
深度学习领域的**进展使各类应用能够极其精准地理解文本和语音。其结果是,聊天机器人能够模仿真人筛选出与职位高度匹配的简历,完成卓越的预测性搜索,自动生成文档摘要——所有这些都能够以很低的成本实现。新技术的发展连同Keras 和TensorFlow之类的易用工具的出现,使专业品质的自然语言处理(NLP)比以往任何时候都更容易实现。
本书主要内容
● Keras、TensorFlow、gensim和 scikit-learn等工具的使用。
● 基于规则的自然语言处理和基于数据的自然语言处理。
● 可扩展的自然语言处理流水线。
阅读本书,读者需要对深度学习的知识有基本的了解,并具有中等水平的Python 编程技能。

《自然语言处理实战》特色内容:

关于作者

目录

第 一部分 处理文本的机器 
第 1章 NLP概述 3 
1.1 自然语言与编程语言 3 
1.2 神奇的魔法 4 
1.2.1 会交谈的机器 5 
1.2.2 NLP中的数学 5 
1.3 实际应用 7 
1.4 计算机“眼”中的语言 8 
1.4.1 锁的语言(正则表达式) 9 
1.4.2 正则表达式 9 
1.4.3 一个简单的聊天机器人 11 
1.4.4 另一种方法 14 
1.5 超空间简述 17 
1.6 词序和语法 19 
1.7 聊天机器人的自然语言流水线 20 
1.8 深度处理 22 
1.9 自然语言智商 24 
1.10 小结 26 
第 2章 构建自己的词汇表——分词 27 
2.1 挑战(词干还原预览) 28 
2.2 利用分词器构建词汇表 29 
2.2.1 点积 37 
2.2.2 度量词袋之间的重合度 37 
2.2.3 标点符号的处理 38 
2.2.4 将词汇表扩展到n-gram 43 
2.2.5 词汇表归一化 48 
2.3 情感 55 
2.3.1 VADER:一个基于规则的情感分析器 56 
2.3.2 朴素贝叶斯 58 
2.4 小结 61 
第3章 词中的数学 62 
3.1 词袋 63 
3.2 向量化 67 
3.3 齐普夫定律 74 
3.4 主题建模 76 
3.4.1 回到齐普夫定律 79 
3.4.2 相关度排序 80 
3.4.3 工具 82 
3.4.4 其他工具 83 
3.4.5 Okapi BM25 85 
3.4.6 未来展望 85 
3.5 小结 85 
第4章 词频背后的语义 87 
4.1 从词频到主题得分 88 
4.1.1 TF-IDF向量及词形归并 88 
4.1.2 主题向量 89 
4.1.3 思想实验 90 
4.1.4 一个主题评分算法 94 
4.1.5 一个LDA分类器 95 
4.2 潜在语义分析 99 
4.3 奇异值分解 103 
4.3.1 左奇异向量U 105 
4.3.2 奇异值向量S 106 
4.3.3 右奇异向量VT 107 
4.3.4 SVD矩阵的方向 107 
4.3.5 主题约简 108 
4.4 主成分分析 109 
4.4.1 三维向量上的PCA 111 
4.4.2 回归NLP 112 
4.4.3 基于PCA的短消息语义分析 114 
4.4.4 基于截断的SVD的短消息语义分析 116 
4.4.5 基于LSA的垃圾短消息分类的效果 117 
4.5 潜在狄利克雷分布(LDiA) 119 
4.5.1 LDiA思想 120 
4.5.2 基于LDiA主题模型的短消息语义分析 121 
4.5.3 LDiA+LDA=垃圾消息过滤器 124 
4.5.4 更公平的对比:32个LdiA主题 125 
4.6 距离和相似度 127 
4.7 反馈及改进 129 
4.8 主题向量的威力 132 
4.8.1 语义搜索 133 
4.8.2 改进 135 
4.9 小结 135 
第二部分 深度学习(神经网络) 
第5章 神经网络初步(感知机与反向传播) 139 
5.1 神经网络的组成 140 
5.1.1 感知机 140 
5.1.2 数字感知机 141 
5.1.3 认识偏置 142 
5.1.4 误差曲面 153 
5.1.5 不同类型的误差曲面 154 
5.1.6 多种梯度下降算法 155 
5.1.7 Keras:用Python实现神经网络 155 
5.1.8 展望 158 
5.1.9 归一化:格式化输入 159 
5.2 小结 159 
第6章 词向量推理(Word2vec) 160 
6.1 语义查询与类比 160 
6.2 词向量 162 
6.2.1 面向向量的推理 165 
6.2.2 如何计算Word2vec表示 167 
6.2.3 如何使用gensim.word2vec模块 175 
6.2.4 生成定制化词向量表示 177 
6.2.5 Word2vec和GloVe 179 
6.2.6 fastText 180 
6.2.7 Word2vec和LSA 180 
6.2.8 词关系可视化 181 
6.2.9 非自然词 187 
6.2.10 利用Doc2vec计算文档相似度 188 
6.3 小结 190 
第7章 卷积神经网络(CNN) 191 
7.1 语义理解 192 
7.2 工具包 193 
7.3 卷积神经网络 194 
7.3.1 构建块 195 
7.3.2 步长 196 
7.3.3 卷积核的组成 196 
7.3.4 填充 198 
7.3.5 学习 199 
7.4 狭窄的窗口 199 
7.4.1 Keras实现:准备数据 201 
7.4.2 卷积神经网络架构 206 
7.4.3 池化 206 
7.4.4 dropout 208 
7.4.5 输出层 209 
7.4.6 开始学习(训练) 211 
7.4.7 在流水线中使用模型 212 
7.4.8 前景展望 213 
7.5 小结 214 
第8章 循环神经网络(RNN) 215 
8.1 循环网络的记忆功能 217 
8.1.1 随时间反向传播算法 221 
8.1.2 不同时刻的权重更新 223 
8.1.3 简要回顾 225 
8.1.4 难点 225 
8.1.5 利用Keras实现循环神经网络 226 
8.2 整合各个部分 230 
8.3 自我学习 231 
8.4 超参数 232 
8.5 预测 235 
8.5.1 有状态性 236 
8.5.2 双向RNN 236 
8.5.3 编码向量 238 
8.6 小结 238 
第9章 改进记忆力:长短期记忆网络(LSTM) 239 
9.1 长短期记忆(LSTM) 240 
9.1.1 随时间反向传播 247 
9.1.2 模型的使用 250 
9.1.3 脏数据 251 
9.1.4 “未知”词条的处理 254 
9.1.5 字符级建模 255 
9.1.6 生成聊天文字 260 
9.1.7 进一步生成文本 262 
9.1.8 文本生成的问题:内容不受控 269 
9.1.9 其他记忆机制 269 
9.1.10 更深的网络 270 
9.2 小结 271 
第 10章 序列到序列建模和注意力机制 272 
10.1 编码-解码架构 272 
10.1.1 解码思想 273 
10.1.2 似曾相识? 275 
10.1.3 序列到序列对话 276 
10.1.4 回顾LSTM 277 
10.2 组装一个序列到序列的流水线 278 
10.2.1 为序列到序列训练准备数据集 278 
10.2.2 Keras中的序列到序列模型 279 
10.2.3 序列编码器 280 
10.2.4 思想解码器 281 
10.2.5 组装一个序列到序列网络 282 
10.3 训练序列到序列网络 282 
10.4 使用序列到序列网络构建一个聊天机器人 284 
10.4.1 为训练准备语料库 285 
10.4.2 建立字符字典 286 
10.4.3 生成独热编码训练集 286 
10.4.4 训练序列到序列聊天机器人 287 
10.4.5 组装序列生成模型 288 
10.4.6 预测输出序列 288 
10.4.7 生成回复 289 
10.4.8 与聊天机器人交谈 290 
10.5 增强 290 
10.5.1 使用装桶法降低训练复杂度 290 
10.5.2 注意力机制 291 
10.6 实际应用 292 
10.7 小结 294 
第三部分 进入现实世界(现实中的NLP挑战) 
第 11章 信息提取(命名实体识别与问答系统) 297 
11.1 命名实体与关系 297 
11.1.1 知识库 298 
11.1.2 信息提取 300 
11.2 正则模式 300 
11.2.1 正则表达式 301 
11.2.2 把信息提取当作机器学习里的特征提取任务 302 
11.3 值得提取的信息 303 
11.3.1 提取GPS位置 303 
11.3.2 提取日期 304 
11.4 提取人物关系(事物关系) 309 
11.4.1 词性标注 309 
11.4.2 实体名称标准化 313 
11.4.3 实体关系标准化和提取 314 
11.4.4 单词模式 314 
11.4.5 文本分割 314 
11.4.6 为什么split('.! ')函数不管用 316 
11.4.7 使用正则表达式进行断句 316 
11.5 现实世界的信息提取 318 
11.6 小结 319 
第 12章 开始聊天(对话引擎) 320 
12.1 语言技能 321 
12.1.1 现代方法 322 
12.1.2 混合方法 326 
12.2 模式匹配方法 327 
12.2.1 基于AIML的模式匹配聊天机器人 328 
12.2.2 模式匹配的网络视图 334 
12.3 知识方法 334 
12.4 检索(搜索)方法 336 
12.4.1 上下文挑战 336 
12.4.2 基于示例检索的聊天机器人 338 
12.4.3 基于搜索的聊天机器人 341 
12.5 生成式方法 343 
12.5.1 聊聊NLPIA 343 
12.5.2 每种方法的利弊 345 
12.6 四轮驱动 345 
12.7 设计过程 347 
12.8 技巧 349 
12.8.1 用带有可预测答案的问题提问 349 
12.8.2 要有趣 350 
12.8.3 当其他所有方法都失败时,搜索 350 
12.8.4 变得受欢迎 350 
12.8.5 成为连接器 351 
12.8.6 变得有情感 351 
12.9 现实世界 351 
12.10 小结 352 
第 13章 可扩展性(优化、并行化和批处理) 353 
13.1 太多(数据)未必是好事 353 
13.2 优化NLP算法 354 
13.2.1 索引 354 
13.2.2 高级索引 355 
13.2.3 基于Annoy的高级索引 357 
13.2.4 究竟为什么要使用近似索引 361 
13.2.5 索引变通方法:离散化 362 
13.3 常数级内存算法 363 
13.3.1 gensim 363 
13.3.2 图计算 363 
13.4 并行化NLP计算 364 
13.4.1 在GPU上训练NLP模型 364 
13.4.2 租与买 365 
13.4.3 GPU租赁选择 366 
13.4.4 张量处理单元TPU 367 
13.5 减少模型训练期间的内存占用 367 
13.6 使用TensorBoard了解模型 369 
13.7 小结 372 
附录A 本书配套的NLP工具 373 
附录B 有趣的Python和正则表达式 380 
附录C 向量和矩阵(线性代数基础) 385 
附录D 机器学习常见工具与技术 391 
附录E 设置亚马逊云服务(AWS)上的GPU 403 
附录F 局部敏感哈希 415 
资源 421 
词汇表 428

推荐给中高级Python开发人员的自然语言处理书相关推荐

  1. 针对Python开发人员的10个很棒的项目创意

    Python是世界上使用最广泛的编程语言之一,并且可以为其通用性质做出贡献,这使其成为解决各个领域问题的合适工具.使用Python,您不仅可以为网络开发程序,还可以为桌面和命令行开发程序.Python ...

  2. 微软的python开发工具_面向 Python 开发人员的 Azure 工具

    面向 Python 开发人员的 Azure 工具Azure tools for Python developers 08/06/2020 本文内容 Visual Studio CodeVisual S ...

  3. python实现微信自动加群_为Python开发人员提供实时代码片段,Kite获1700万美元A轮融资...

    [猎云网(微信号:)]1月29日报道(编译:孙家乐) Kite是一款为Python开发人员提供实时代码片段的工具,它在由Trinity Ventures领投的A轮融资中获得了1700万美元.最新版本的 ...

  4. 面向Python开发人员的综合置信区间全面理解

    面向Python开发人员的综合置信区间全面理解 置信区间是以范围表示并汇总统计中的不确定性的.换句话说,这是一系列我们确信自己真正价值所在的价值观.例如:我有95%的信心认为人口平均数在8.76到15 ...

  5. python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...

    原标题:实践是最好的老师:给中级 Python 开发人员的 13 个项目构想 学习 python 的基础知识是一种美妙的体验.但是,学习的喜悦可以被对实践项目的渴望所取代.想要建立项目是正常的,因此需 ...

  6. python开发中级_针对中级Python开发人员的13个项目构想

    python开发中级 Learning the basics of Python is a wonderful experience. But the euphoria of just learnin ...

  7. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  8. python项目开发计划_面向中级 Python 开发人员的 13 个项目构想

    建立信心:无论项目的复杂程度如何,你都会更加相信自己创建软件的能力. 探索其他技术:你将了解构建完整产品所需的其他技术,如数据库.服务器和其他语言. 更好地理解编程概念:你将学习更好地编写代码,并了解 ...

  9. python玩加件大师_如何聘请Python开发人员并确定真正的大师

    python玩加件大师 "The joy of coding is in seeing a short, concise, readable, and small amount of cle ...

最新文章

  1. 简单mongo的副本集搭建
  2. 中数组的合并_【美团面试题】合并两个有序数组
  3. 【学习笔记】网络层:应用模型、DNS系统、文件传输协议FTP
  4. Java Web学习总结(32)——Java程序员最亲睐的Web框架
  5. it项目管理案例_盈通顾问项目管理精英训练营(第一期)
  6. Qt——P27 QListWidget控件
  7. UVA10943 How do you add【递推打表】
  8. 大魔王覃超解说 2017 Google I/O丨今晚直播!
  9. mysql redo/binlog 放在ssd盘或SAS盘性能差异测试
  10. 手机电源键关不了屏幕_没有home键iphone强关机,关机你会吗?小的快来!
  11. fftshift函数详解
  12. mysql在财务分析中的作用_财务报表分析的作用和目的
  13. 页面交换文件pagefile.sys-虚拟内存页面文件
  14. 个人和企业拥有专利的25个好处!
  15. Python新手入门指导
  16. 根据股票代码特征分类
  17. paper reading——《Improving Person Re-identification by Attribute and Identity Learning》
  18. 手机如何将图片转换为pdf
  19. BZOJ 2844 albus就是要第一个出场(线性基)
  20. 标题 穿越雷区 java_6届国赛java试题 4: 穿越雷区

热门文章

  1. 最长的指定瑕疵度的元音字串
  2. Python GUI制作实例 wxPython使用多线程 防假死含wxFormBuilder的文件及源码
  3. CentOs 7源码安装 Python3
  4. VR AR应用开发交流大会在天津成功举办 京津VR AR企业交流心得共促合作
  5. Linux随笔19-MySQL主从复制、Percona XtraBackup实现全量和增量备份、ProxySQL实现读写分离
  6. 安装应用提示安装失败或不能安装,报INSTALL_FAILED_DUPLICATE_PERMISSION错误
  7. 冷冻莴苣的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. Mac用户学Python-Day1:安装与环境配置
  9. 原来网易的lofter界面是模仿的是tumblr
  10. Tipask,Tipask建站,Tipask插件