今天给大家推荐一本自然语言处理的经典入门书,几天前小编就想到这本书《Python自然语言处理》,自然语言处理入门或自学都很合适,堪称NLP的入门经典书。豆瓣评分:8.2。
来自豆瓣截图
本书基于Python编程语言及名为自然语言工具包(Natural Language Toolkit, NLTK)的开源库。NLTK包含大量的软件、数据和文档,所有这些都可以从http://www.nltk.org/上免费下载。NLTK的发行版本支持Windows、Macintosh和UNIX平台。强烈建议你下载Python和NLTk,与我们一起尝试书中的例子和练习。
读者评论这本书
不管你的编程经验如何?初学编程?
初学编程?
配图来自百度
本书的前几章适合没有编程经验的读者,只要你不怕应对新概念和学习新的计算机技能。书中的例子和数以百计的分级练习,你都可以亲自尝试一下。如果你需要关于Python的更一般的介绍,http://docs.python.org/给出了Python资源列表。
初学Python?
配图来自百度
有经验的程序员可以很快掌握书中的Python代码,而把更多精力专注于自然语言处理。所有涉及的Python功能都经过精心解释和举例说明,你很快就会体会到Python在这些应用领域的妙用。书中的语言索引会帮你查找书中的相关论述。
已经精通Python?
你可以浏览一下Python的例子并且钻研从第1章开始就提到的语言分析材料。很快你就能在这个神奇的领域展现你的技能。
《Python自然语言处理》是一本介绍NLP的实用书籍。你将通过例子学习编写真正的程序,并通过实践验证自己想法的价值。如果你没有学过编程,本书将教你如何编程。与其他编程书籍不同的是,我们提供了丰富的NLP实例和练习。我们撰写本书时讲究探究原理,无论是严谨的语言学还是计算分析学,我们不回避所涉及的任何基础理论。我们曾经试图在理论与实践之间寻求折中,确定它们之间的联系与边界。最终我们认识到如果不能寓教于乐,几乎无法实现这个目标,所以我们竭尽所能写入了很多既有益又有趣的应用和例子,有的甚至有些异想天开。
请注意本书并不是一本工具书。本书讲述的Python和NLP是精心挑选的,并通过教程的形式展现的。关于参考材料,请查阅http://python.org/和http://www.nltk.org/,那里有大量可搜索的资源。
本书也不是高深的计算机科学文章。书中的内容属于入门级和中级,目标读者是那些想要学习如何使用Python和自然语言分析包来分析文本的人。若想学习NLTK中更高级的算法,你可以查阅http://www.nltk.org/中的Python代码库,或查询在本书中引用的其他文献。
Edward Loper、Ewan Klein和Steven Bird,斯坦福大学,2007年7月
Steven Bird是墨尔本大学计算机科学和软件工程系副教授,宾夕法尼亚大学的语言数据联盟高级副研究员。他于1990年在英国爱丁堡大学完成计算音韵学博士,导师是Ewan Klein。后来到喀麦隆开展夏季语言学研究所主持的Grassfields班图语语言实地调查。最近,他作为语言数据联盟副主任带领研发队伍花了几年时间,创建已标注文本的大型数据库的模型和工具。在墨尔本大学,他建立了一个语言技术研究组,并在各级本科计算机科学课程任教。2009年,史蒂芬成为计算语言学学会主席。
Ewan Klein是英国爱丁堡大学信息学院语言技术教授。于1978年在剑桥大学完成形式语义学博士学位。在苏塞克斯和纽卡斯尔大学工作多年后,开始在爱丁堡从事教学工作。于1993年他参与了爱丁堡语言科技集团的建立,并一直与之密切联系。从2000年到2002年,他离开大学,在圣克拉拉的埃迪法公司的总部—爱丁堡的自然语言的研究小组担任研发经理,负责处理口语对话。Ewan是欧洲章计算语言学协会(European Chapter of the Association for Computational Linguistics)前任主席,并且是人类语言技术(ELSNET)欧洲卓越网络的创始成员和协调员。
Edward Loper最近完成了宾夕法尼亚大学自然语言处理的机器学习博士学位。爱德华是史蒂芬在2000年秋季计算语言学研究生课程的学生,也是教师助手和NLTK开发的成员。除了NLTK,他帮助开发了用于记录和测试Python软件的两个包:epydoc和doctest。
看看这些章节里的“为什么”能不能解除你心中的疑惑和你想学的知识。
第1章 语言处理与Python
我们能够很容易地得到数百万数量级的文本。假设我们会写一些简单的程序,那可以用它来做些什么?本章将解决以下几个问题。
(1)通过将技术性较简单的程序与大规模文本结合起来,我们能实现什么?
(2)如何自动地提取出关键字和词组,用来总结文本的风格和内容?
(3)Python编程语言为上述工作提供了哪些工具和技术?
(4)自然语言处理中有哪些有趣的挑战呢?
第2章 获得文本语料和词汇资源
在自然语言处理的实际项目中,通常要使用大量的语言数据或者语料库。本章的目的是要回答下列问题。
(1)什么是有用的文本语料库和词汇资源,如何使用Python获取它们?
(2)哪些Python结构最适合这项工作?
(3)编写Python代码时如何避免重复的工作?
第3章 处理原始文本
文本的最重要来源无疑是网络。探索现成的文本集合,如我们在前面章节中看到的语料库,是很方便的。然而,每个人都有自己的文本来源,需要学习如何访问它们。
本章的目的是要回答下列问题。
(1)怎样才能编写程序访问本地和网络上的文件,从而获得无限的语言材料?
(2)如何把文档分割成单独的单词和标点符号,并进行文本语料上分析?
(3)怎样编写程序产生格式化的输出,并把结果保存在文件中?
第4章 编写结构化程序
现在,对Python编程语言处理自然语言的知识已经有了体会。不过,如果你是Python或者编程新手,你仍然要努力对付Python,并尚未感觉到能完全掌握它。在这一章中,我们将解决以下问题。
(1)怎么能写出结构良好、可读的程序,使你和其他人能够很容易地重用它?
(2)基本结构块,如循环、函数及赋值,是如何执行的?
(3)Python编程的陷阱有哪些,你将如何避免它们?
第5章 分类和标注词汇
我们早在小学就学过名词、动词、形容词和副词之间的差异。这些“词类”不是文法家闲的没事发明的,而是对许多语言处理任务都有帮助的分类。正如我们将看到的,这些分类源于对文本中词分布的简单分析。本章的目标就是要回答下列问题。
(1)什么是词汇分类,在自然语言处理中它们如何使用?
(2)对于存储词汇和它们的分类来说什么是好的Python数据结构?
(3)如何自动标注文本中每个词汇的词类?
第6章 学习分类文本
模式识别是自然语言处理的一个核心部分。以-ed结尾的词往往是过去时态动词(见第5章)。频繁使用will暗示着这是新闻文本(见第3章)。这些可观察到的模式——词的结构和词频——恰好与特定方面的含义相关联,如:时态和主题。但我们怎么知道从哪里开始寻找,哪一方面的形式与哪一方面的含义相关联?
本章的目标是要回答下列问题。
(1)怎样才能识别出语言数据中明显用于分类的特征?
(2)怎样才能构建用于自动执行语言处理任务的语言模型?
(3)从这些模型中我们可以学到哪些关于语言的知识?
第7章 从文本提取信息
对于任何给定的问题,很可能已经有人把答案写在某个地方了。以电子化提供的自然语言文本的数量真的惊人,并且与日俱增。然而,自然语言的复杂性使访问这些文本中的信息非常困难。NLP还需要一定的发展,才能适用于各种复杂的文本。如果我们不将我们的精力集中在一个问题或“实体关系”的有限集合上,例如:“不同的设施位于何处”或“谁被什么公司雇用”上,我们就能取得重大进展。本章的目的是要回答下列问题。
(1)如何能构建一个系统,以至从非结构化文本中提取结构化数据?
(2)有哪些稳健的方法识别一个文本中描述的实体和关系?
(3)哪些语料库适合这项工作,如何使用它们来训练和评估模型?
第8章 分析句子结构
前面的章节重点关注词:如何识别它们,分析它们的结构,给它们分配词汇类别,以及获得它们的含义。我们还学习了如何识别词序列或n-grams的模式。然而,这些方法只是触碰到了管理句子用到的复杂约束条件的表面。我们需要一种能处理自然语言中显著歧义的方法。我们还需要应对这样一个事实:句子有无限的可能,而我们只能写有限的程序来分析其结构和发现它们的含义。
本章的目的是要回答下列问题。
(1)如何使用形式化语法来描述无限的句子集合的结构?
(2)如何使用句法树来表示句子结构?
(3)解析器如何分析句子并自动构建语法树?
第9章 建立基于特征的文法
自然语言具有广泛的文法结构,用第8章中所描述的简单方法很难处理如此广泛的文法结构。为了获得更大的灵活性,可改变对待文法类别如S、NP和V的方式。我们将这些原子标签分解为类似字典的结构,以便可以提取一系列的值作为特征。
本章的目的是要回答下列问题。
(1)怎样用特征扩展无关上下文文法的框架,以获得对文法类别和产生式的更细粒度的控制?
(2)特征结构的主要形式化属性是什么,如何使用它们来计算?
(3)我们现在用基于特征的文法能获得哪些语言模式和文法结构?
第10章 分析语句的含义
我们已经了解到利用计算机的能力来处理大规模文本是多么有用。现在既然已经有了分析机制和基于特征的文法,那么能否做一些类似分析语句的含义的事情?本章的目的是要回答下列问题。
(1)如何表示自然语言的含义,并能通过计算机进行处理?
(2)怎样才能将意思表示与无限制的语句集相关联?
(3)怎样才能通过连接意思表示与句子的程序来存储信息?
第11章 语言数据管理
已标注的语言数据的结构化集合在NLP的大部分领域都是至关重要的;然而,在使用它们的过程中我们仍面临着许多问题。本章的目的是要回答下列问题。
(1)如何设计一种新的语言资源,并确保它的覆盖面、平衡及文档支持广泛的用途?
(2)现有数据对某些分析工具格式不兼容,如何才能将其转换成合适的格式?
(3)有什么好的方法来记录已经创建的资源,从而使其他人可以很容易地找到它?
如果以上章节可以吸引到你,那么你可以准备一本《Python自然语言处理》开始你的学习之旅了,小编祝你阅读愉快!