没有合适的资源?快使用搜索试试~ 我知道了~
首页Python自然语言处理实践教程:入门与项目实战
"《Python自然语言处理》是一本由Steven Bird、Ewan Klein和Edward Loper合著的英文书籍,中文版由陈涛翻译。该书专注于将复杂的自然语言处理理论转化为实际操作,适合初学者系统地学习自然语言处理。书中内容涵盖了从预处理数据、特征提取到模型训练和测试的全过程,通过实例让读者深入理解模型的实质,即算法在计算机中的表示形式,以及如何通过编程避免重复计算。 本书的特点在于它注重实践而非理论的深度,作者将抽象的概念转化为具体步骤,使读者能够通过动手实践掌握关键技能。对于初学者来说,阅读完理论后精读本书,能够极大地提升理解和应用能力。书中还提到了Python在各种实际应用场景中的运用,如输入法联想提示、邮件过滤、自动文本摘要和机器翻译,这些都是自然语言处理技术的实际体现。 尽管翻译可能存在不足,尤其是在第10章关于命题逻辑和一阶逻辑推理的部分,但译者鼓励读者提供反馈,并表示原著作者希望使用目标语言(中文)的例子。目前,由于人力限制,中文版仍主要依赖于英文例题,期待志愿者参与将本书进一步本土化,推动中文自然语言处理的发展。 本书可供学习研究使用,鼓励传播、复制和修改,但商业用途需与原著版权所有者联系,以确保版权合规。译者提醒,所有基于本书的衍生作品应保留译者的署名和微博信息。《Python自然语言处理》是一本实用且富有实践价值的教材,对于希望进入这个领域的读者来说,无疑是一本不可多得的指南。"
资源详情
资源推荐
16
强调
强调
强调
强调
本书是一本 实用 的介绍 NLP 的书。你将通过例子 来 学习,编写真正的程序,体会到能
够通过实践验证自己想法的价值 。 如果你没有学过编程 , 本书将教你 如何 编程 。 与其他编程
书籍不同的是,我们提供了丰富的来自 NLP 领域的实例和练习。我们撰写本书的方法也是
讲究 原则和条理 的 , 无论是严谨的语言学还是计算分析学 , 我们不回避所涉及到 的 基础理论
。
我们曾经试图在理论与实践之间寻求 折中 , 确定它们之间的联系与边界 。 最终我们认识到只
要能从中受益而感到 快乐 这些 都是 无关紧要 的 , 所以我们竭尽所能插入了很多既有益又有趣
的应用和例子,有些甚至有些异想天开。
请注意本书并不是一本工具书 。 本书讲述的 Python 和 NLP 是精心挑选的 , 并通过教程
的形式展现的 。 关于参考材料 , 请查阅 http://python.org/ 和 http://www.nltk.org/ , 那里有大量
可搜索的资源。
本书也不是高深的计算机科学文章 。 书中的内容属于初级和中级 , 目标读者是那些想要
学习如何使用 Python 和自然语言分析包来分析文本的人。
你将学到什么?
你将学到什么?
你将学到什么?
你将学到什么?
通过钻研本书,你将学到:
� 十分简单的程序如何就能帮你处理和分析语言数据,以及如何写这些程序
� NLP 与语言学的关键概念是如何用来描述和分析语言的
� NLP 中的数据结构和算法是怎样的
� 语言数据是如何存储为标准格式,以及如何使用数据来评估 NLP 技术的性能
根据读者知识背景和学习 NLP 的动机不同,从本书中获得的技能和知识也将不同,详
情见表 P-1 :
表 P-1. 读者的目标和背景不同,阅读本书可获得的技能和知识
目标 艺术人文背景 理工背景
语言分析 操控大型语料库,设计语言模型 , 验
证由经验得出的假设。
使用数据建模 , 数据挖掘和知识发现的
技术来分析自然语言。
语言技术 应用 NLP 技术构筑健壮的系统处理
语言学任务。
使用健壮的语言处理软件中的语言学
算法和数据结构
篇章结构
篇章结构
篇章结构
篇章结构
本书前几章按照概念的难易程度编排 。 先是实用性很强的语言处理的入门介绍 , 讲述如
何使用很短的 Python 程序分析感兴趣的文本信息 ( 1 -3 章 ) 。 接着是结构化程序设计章节 ( 第
4 章 ) ,用来巩固散布在前面几章中的编程要点。之后 , 速度加快,我们用一系列章节讲述
语言处理的主要内容: 标注 、分类和信息提取( 5-7 章 ) 。接下来的三章探索分析句子、识
别句法结构和构建 表示 句意的方法( 8-10 章 ) 。最后一章讲述如何有效管理语言数据(第 1
1 章 ) 。本书结尾处的后记简要讨论了 NLP 的过去和未来。
每一章中我们都在两种不同的叙述风格间切换 。 一种风格是以自然语言为主线 。 我们分
析语言 , 探索语言学概 ; 在讨论中使用编程的例子 。 我们经常会使用尚未系统介绍的 Pytho
n 结构 , 这样你可以在钻研这些程序如何运作的细节之前了解 它们 的效能 。 就像学习一门外
语的惯用表达一样 , 你能够买到好吃的糕点而不必先学会复杂的提问句型 。 叙述的另一种风
17
格是以程序设计语言为主线。我们将分析程序、探索算法,而语言学例子将扮演配角。
每章结尾都有一系列分级练习 , 用于巩固学到的知识 。 练习按照如下的标准分级 : ○ 初
级练习:对范例代码作稍微修改等简单的练习; ◑ 中级练习:深入探索材料的一个方面 , 需
要仔细的分析和设计 ; ● 高级练习 : 开放的任务 , 挑战你对材料的理解并迫使你独立思考解
决的方案(新学编程的读者应该跳过这些 ) 。
每一章都有深入阅读环节和放在 http://www.nltk.org/ 网上的一个 “ 额外 ” 环节,用来介
绍更深入的材料和一些网络资源。所有实例代码都可从网上下载。
为什么使用
为什么使用
为什么使用
为什么使用 Python
Python
Python
Python ?
?
?
?
Python 是一种简单但功能强大的编程语言,非常适合处理语言数据。 Python 可以从 htt
p://www.python.org/ 免费下载,能够在各种平台上安装运行。
下面的 4 行 Python 程序就可以操作
file.txt
文件 ,输出 所有后缀是 “ ing ” 的词。
>>> for line
in
open("file.txt"):
... for word
in
line.split():
...
if
word.endswith('ing'):
... print word
这段程序演示了 Python 的一些主要特征。首先,使用空白符号缩进代码,从而使 if 后
面的代码都在前面一行 for 语句的范围之内 ; 这保证了检查单词是否以 “ ing ” 结尾的测试对
所有单词都进行。第二, Python 是面向对象语言。每一个变量都是包含特定属性和方法的
对象 。例如:变量 “ line ” 的值不仅仅是一行字符串,它是一个 string 对象,包含用来把字
符串分割成词的 split() 方法(或叫操作、函数 ) 。我们在对象名称后面写句号(点)再写方
法 名称 就可以调用对象的一个方法,即 line.splie() 。第三,方法的参数写 在 括号内。例如 :
上面的例子中的 word.endswith('ing') , 参数 “ ing ” 表示我们需要找的是 “ ing ” 结尾的词而不
是别的结尾的词。最后也是最重要的, Python 的可读性如此之强以至于可以相当容易的猜
出程序的功能 , 即使你以前从未写过一行代码。
我们选择 Python 是 因为它 的 学习曲线比较平缓, 文法 和语义都很清晰,具有良好的处
理字符串的功能。作为解释性语言, Python 便于交互式编程。作为面向对象语言, Pytho n
允许数据和方法被方便的封装和重用。作为动态语言, Python 允许属性等到程序运行时才
被添加到对象,允许变量自动类型转换,提高开发效率。 Python 自带强大的标准库,包括
图形编程、数值处理和网络连接等组件。
Python 在世界各地的工业 、 科研 、 教育领域应用广泛 。 它因为提高了软件的生产效率
、
质量和可维护性而备受称赞 。 http://www.python.org/about/success/ 中列举了许多成功使用 Pyt
hon 的故事。
NLTK 定义了一个使用 Python 进行 NLP 编程的基础工具。它提供重新表示自然语言处
理相关数据的基本类 , 词性标注 、 文法分析 、 文本分类等任务的标准接口以及这些任务的标
准实现 , 可以组合起来解决复杂的问题。
NLTK 自带大量文档。作为本书的补充, http://www.nltk.org/ 网站提供的 API 文档涵盖
工具包中每一个模块 、 类和函数 , 详细说明了各种参数 , 还给出了用法示例 。 该网站还为广
大用户 、 开发人员和导师提供 了 很多 包含 大量的例子和测试用例 的 HOWTO 。
18
软件安装需求
软件安装需求
软件安装需求
软件安装需求
为了充分利用好本书,你应该安装一些免费的软件包。 http://www.nltk.org/ 上有这些软
件包当前的下载链接和安装说明。
Python
本书的例子都假定你正在使用 Python 2.4 或 2.5 版本。一旦 NLTK 的依赖库支持 Pytho
n3.0 ,我们将把 NLTK 移植到 Python 3.0 。
NLTK
本书的代码示例使用 NLTK 2.0 版本。 NLTK 的后续版本将是兼容的。
NLTK-Data
包含本书中分析和处理的语言语料库。
NumPy (推荐)
这是一个科学计算库 , 支持多维数组和线性代数 , 在某些计算概率 、 标记 、 聚类和分类
任务中用到。
Matplotlib (推荐)
这是一个用于数据可视化的 2D 绘图库,本书 在 产生线图和条形图的程序例子中用到 。
NetworkX (可选)
这是一个用于存储和操作由节点和边组成的网络结构的函数库 。 可视化语义网络还需要
安装 Graphviz 库。
Prover9 (可选)
这是一个使用一阶等式逻辑定理 的 自动证明器,用于支持语言处理中的推理。
自然语言工具包(
自然语言工具包(
自然语言工具包(
自然语言工具包( NLTK
NLTK
NLTK
NLTK )
)
)
)
NLTK 创建于 2001 年 , 最初是宾州大学计算机与信息科学系计算语言学课程的一部分
。
从那以后 , 在数十名贡献者的帮助下不断发展壮大 。 如今 , 它已被几十所大学的课程所采纳
,
并作为许多研究项目的基础。表 P -2 列出了 NLTK 的一些最重要的模块。
表 P-2. 语言处理任务与相应 NLTK 模块以及功能描述
语言处理任务 NLTK
NLTK
NLTK
NLTK 模块 功能描述
获取和处理语料库
nltk.corpus
语料库和词典的标准化接口
字符串处理
nltk.tokenize, nltk.stem
分词,句子分解提取主干
搭配发现
nltk.collocations
t- 检验,卡方,点互信息 PMI
词性 标识符
nltk.tag
n-gram , backoff , Brill , HMM , TnT
分类
nltk.classify, nltk.cluster
决策树 , 最大熵 , 贝叶斯 , EM , k-means
分块
nltk.chunk
正则表达式, n-gram ,命名实体
解析
nltk.parse
图表,基于特征,一致性,概率,依赖
语义解释
nltk.sem, nltk.inference
λ 演算,一阶逻辑,模型检验
指标评测
nltk.metrics
精度,召回率,协议系数
概率与估计
nltk.probability
频率分布,平滑概率分布
应用
nltk.app, nltk.chat
图形化的关键词排序,分析器, WordNe t
查看器,聊天机器人
语言学领域的工作
nltk.toolbox
处理 SIL 工具箱格式的数据
NLTK 设计中的四个主要目标:
19
简易性
提供一个直观的框架和大量模块,使用户获取 NLP 知识而不必陷入像标注语言数据那
样繁琐的 事务 中。
一致性
提供一个 具有一致的 接口和数据结构并且方法名称容易被猜到的统一的框架。
可扩展性
提供一种结构 , 新的软件模块包括同一个任务中的不同的实现和相互冲突的方法都可以
方便添加进来。
模块化
提供可以独立使用而与工具包的其他部分无关的组件。
对比上述目标 , 我们回避了工具包的潜在实用性 。 首先 , 虽然工具包提供了广泛的工具
,
但它不是面面俱全的。它是一个工具包而不是一个系统,它将会随着 NLP 领域一起演化。
第二,虽然这个工具包的效率足以支持实际的任务,但它运行时的性能还没有高度优化 。 这
种优化往往涉及更复杂的算法或使用 C 或 C++ 等较低一级的编程语言来实现。这将影响工
具包的可读性且更难以安装 。 第三 , 我们试图避开巧妙的编程技巧 , 因为我们相信清楚直白
的实现比巧妙却可读性差的方法好。
教师请看
教师请看
教师请看
教师请看
自然语言处理一般是在本科或研究生层次的高年级开设的为期一个学期的课程 。 很多教
师都发现 , 在如此短的时间里涵盖理论和实践 两 个方面是十分困难的 。 有些课程注重理论而
排挤 实践练习 , 剥夺了学生编写程序自动处理语言 带来的 挑战和兴奋 感 。 另一些课程仅仅教
授语言学编程而不包含任何重要的 NLP 内容。最初开发 NLTK 就是为了解决这个问题,使
在一个学期里同时教授大量理论和实践成为可能,无论 学生 事先 有没有编程经验。
算法和数据结构在所有 NLP 教学大纲中都十分重要。它们本身可能非常枯燥,而 NLT
K 提供的交互式图形用户界面能一步一步看到算法过程,使它们变得鲜活。大多说 NLT
K
组件都有一个无需用户输入任何数据就能执行有趣的任务的示范性例子 。 学习本书的一个有
效的方法就是交互式重现书中的例子,把它们输入到 Python 会话控制台,观察它们做了些
什么,修改它们去探索试验或理论问题。
本书包含了数百个练习 , 可作为学生作业的基础 。 最简单的练习涉及用指定的方式修改
已有的程序片段来回答一个具体的问题 。 另一个极端 , NLTK 为研究生水平的研究项目提供
了一个灵活的框架 , 包括所有的基本数据结构和算法的标准实现 , 几十个广泛使用的数据集
(语料库 ) 的接口 , 以及一个灵活可扩展的体系结构 。 NLTK 网站上还有其他资源支持教学
中使用 NLTK 。
我们相信本书是唯一为学生提供在学习编程的环境中学习 NLP 的综合性框架。各个章
节和练习通过 NLTK 紧密耦合,并将各章材料分割开,为学生(即使是那些以前没有编程
经验的学生)提供一个实用的 NLP 的入门指南。学完这些材料后,学生将准备好尝试一本
更加深层次的教科书,例如 : 《语音和语言处理 》 ,作者是 Jurafsky 和 Martin (Prentice Hal
l
出版社, 2008 年 ) 。
本书介绍编程概念的顺序与众不同 。 以一个重要的数据类型 : 字符串列表 ( 链表 ) 开始
,
然后介绍重要的控制结构如推导和条件式等 。 这些概念允许我们在一开始就做一些有用的语
言处理。有了这样做的冲动,我们回过头来系统的介绍一些基础概念,如字符串,循环 , 文
件等。这样的方法同更传统的方法达到了同样的效果而不必要求读者自己已经对编程感兴
趣。
20
表 P-3 列出了两个课程计划表。第一个适用于艺术人文专业,第二个适用于理工科 。 其
他的课程计划应该涵盖前 5 章 , 然后把剩余的时间投入单独的领域 , 例如 : 文本分类 ( 第 6
、
7 章 ) 、文法(第 8 、 9 章 ) 、语义(第 10 章)或者语言数据管理(第 11 章 ) 。
表 P-3. 课程计划建议;每一章近似的课时数
章节 艺术人文专业 理工科
第 1 章,语言处理与 Python 2-4 2
第 2 章 , 获得文本语料和词汇资源 2-4 2
第 3 章,处理原始文本 2-4 2
第 4 章,编写结构化程序 2-4 1-2
第 5 章,分类和标注单词 2-4 2-4
第 6 章,学习本文分类 0-2 2-4
第 7 章,从文本提取信息 2 2-4
第 8 章,句子结构分析 2-4 2-4
第 9 章,构建基于特征的文法 2-4 1-4
第 10 章,分析句子的意义 1-2 1-4
第 11 章,语言学数据管理 1-2 1-4
总计 18-36 18-36
本书使用的约定
本书使用的约定
本书使用的约定
本书使用的约定
本书使用以下印刷约定:
黑体
表示新的术语。
斜体
用在段落中表示语言学例子、文本的名称和 URL ,文件名和后缀名也用斜体。
等宽字体
用来表示程序清单 , 用在段落中表示变量 、 函数名 、 语句或关键字等程序元素 。 也用来
表示程序名。
等宽斜体
表示应由用户提供的值或上下文决定的值来代替文本中的值 , 也在程序代码例子中表示
元变量。
使用例
使用例
使用例
使用例 子
子
子
子 代码
代码
代码
代码
本书是为了帮你完成你的工作 的 。 一般情况下 , 你都可以在你的程序或文档中使用本书
此图标表示警告或重要提醒。
此图标表示提示、建议或一般性注意事项。
剩余381页未读,继续阅读
yanglingo0
- 粉丝: 0
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功