今天给大家推荐一本自然语言处理的经典入门书,几天前小编就想到这本书《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自然语言处理》开始你的学习之旅了,小编祝你阅读愉快!
,