PYTHON
PYTHON
PYTHON
PYTHON 自然语言处理中文翻译
作者:Steven Bird, Ewan Klein & Edward Loper
英文版出版社:O'REILLY
翻译:陈涛(weibo.com/chentao1999)
译者的话
译者的话
译者的话
译者的话
作为一个自然语言处理的初学者,看书看到“训练模型”,这模型那模型的,一直不知
道模型究竟是什么东西。看了这本书,从预处理数据到提取特征集,训练模型,测试修改等,
一步一步实际操作了之后,才对模型一词有了直观的认识(算法的中间结果,存储在计算机
中的一个个 pkl 文件,测试的时候直接用,前面计算过的就省了)。以后听人谈“模型”的
时候也有了底气。当然,模型还有很多其他含义。还有动词的“配价”、各种搭配、客观逻
辑对根据文法生成的句子的约束如何实现?不上机动手做做,很难真正领悟。
自然语言处理理论书籍很多,讲实际操作的不多,能讲的这么系统的更少。从这个角度
讲,本书是目前世界上最好的自然语言处理实践教程。初学者若在看过理论之后能精读本书,
必定会有获益。这也是翻译本书的目的之一。
本书是译者课余英文翻译练习,抛砖引玉。书中存在很多问题,尤其是第 10 章命题逻
辑和一阶逻辑推理在自然语言处理中的应用。希望大家多多指教。可以在微博上找到我(w
eibo.com/chentao1999)。虽然读中文翻译速度更快,但直接读原文更能了解作者的本意。
原书作者在书的最后列出了迫切需要帮助改进的条目,对翻译本书建议使用目标语言的
例子,目前本书还只能照搬英文的例子,希望有志愿者能加入本书的中文化进程中,为中文
自然语言处理做出贡献。
将本书作学习和研究之用,欢迎传播、复制、修改。山寨产品请留下译者姓名和微博。
用于商业目的,请与原书版权所有者联系,译者不承担由此产生的责任。
译者
2012 年 4 月 7 日
2
PYTHON 自然语言处理
从输入法联想提示(pre
dictive text)、email 过滤到自
动文本摘要、机器翻译,大
量的语言相关的技术都离不
开自然语言处理的支持,而这本书提供了自
然语言处理非常方便的入门指南。通过它,
你将学到如何写能处理大量非结构化文本
的 Python 程序。你将获得有丰富标注的涵
盖语言学各种数据结构的数据集,而且你将
学到分析书面文档内容和结构的主要算法。
通过大量的例子和联系,《PYTHON 自
然语言处理》将会帮助你:
���� 从非结构化文本中提取信息,无论是猜
测主题还是识别“命名实体”。
���� 分析文本的语言学结构,包括文法和语
果你对开发 Web 应用、分析多种语言的新
闻来源或者收集濒危语言感兴趣,或者仅仅
对以程序员的视角看人类语言如何运作好
奇,你将发现《PYTHON 自然语言处理》
不仅迷人而且极其有用。
“少有的一本书,用如此清晰的方法如
此优美整洁的代码处理如此复杂的问
题……这是一本从中可以学习自然语言处
理的书。”
——Ken Getz,
MCW Technologies 高级顾问
Steven BirdBirdBirdBird 是墨尔本大学计算机科学
Steven
Steven
Steven
和软件工程系副教授,宾夕法尼亚大学语言
义分析
学数据联盟高级研究助理。
���� 访问流行的语言学数据集,包括 WordWordWordWord
EwanEwanEwanEwan KleinKleinKleinKlein 是爱丁堡大学信息学院语
NetNetNetNet 和 treebanks
treebanks
treebanks
treebanks
���� 整合从语言学到人工智能的多个领域
的技术
通过使用 Python 程序设计语言和自然
语言工具包(NTLK)的开源函数库,本书
将帮助你获得自然语言处理的实际经验。如
言技术教授。
Edward LopeLopeLopeLoperrrr 是宾夕法尼亚大学基于
Edward
Edward
Edward
机器学习的自然语言处理方向的刚毕业的
博士,现在是波士顿的 BBN Technologies
的研究员。
3
PYTHON 自然语言处理
StevenBird,EwanKlein&EdwardLoper
北京 • 剑桥 • 法纳姆 • 科隆 • 塞瓦斯托波尔 • 台北 • 东京
4
Python
Python
Python
Python 自然语言处理
by Steven Bird, Ewan Klein, and Edward Loper
Copyright © 2009 Steven Bird, Ewan Klein, and Edward Loper. All rights reserved.
Printed in the United States of America.
O’Reilly Media, Inc.出版, 1005 Gravenstein Highway North, Sebastopol, CA 95472.
可以购买 O’Reilly 出版的书用于教育、商业或者销售推广使用。大多数图书都有网络
版(http://my.safaribooksonline.com)。更多的信息请联系我们的企业/机构销售部门:(800)
998-9938 or corporate@oreilly.com.。
编辑:Julie Steele
制作编辑:Loranah Dimant
拷贝编辑:Genevieve d’Entremont
校对:Loranah Dimant
索引编者:Ellen Troutman Zaig
封面设计:Karen Montgomery
内页设计:David Futato
插画:Robert Romano
版本说明:
2009 年六月:第一版
Nutshell Handbook, the Nutshell Handbook 标志, 以及 O’Reilly 标志是 O’Reilly Me
dia, Inc.的注册商标。《PYTHON 自然语言处理》,露脊鲸图案以及相关的商品外观是 O’Re
illy Media, Inc.的商标。
制造商和经销商为了区分他们的产品而声明一些名称为商标。这些名称也出现在本书
中,O’Reilly Media, Inc.知道这是商标,使用盖帽或者小的盖帽来印刷。
在本书编写过程中已经采取一切可能的预防措施,所以出版商和作者对书中的错误和遗
漏以及使用此书包含的信息所造成的损害不承担责任。
ISBN: 978-0-596-51649-9
[M]
1244726609
5
目录
PYTHON 自然语言处理中文翻译...................................................................................... 2
译者的话................................................................................................................... 2
PYTHON 自然语言处理.............................................................................................3
目录................................................................................................................................. 6
前言............................................................................................................................... 15
读者........................................................................................................................ 15
强调........................................................................................................................ 16
你将学到什么?....................................................................................................... 16
篇章结构................................................................................................................. 16
为什么使用 Python?................................................................................................17
软件安装需求.......................................................................................................... 18
自然语言工具包(NLTK)....................................................................................... 18
教师请看................................................................................................................. 19
本书使用的约定....................................................................................................... 20
使用例子代码.......................................................................................................... 20
Safari®联机丛书...................................................................................................... 21
如何联系我们.......................................................................................................... 21
致谢........................................................................................................................ 22
版税........................................................................................................................ 22
第 1 章 语言处理与 Python.............................................................................................. 23
1.1 语言计算:文本和单词...................................................................................... 23
Python 入门.......................................................................................................23
NLTK 入门........................................................................................................24
搜索文本.......................................................................................................... 26
计数词汇.......................................................................................................... 28
1.2 近观 Python:将文本当做词链表........................................................................ 30
链表................................................................................................................. 30
索引列表.......................................................................................................... 32
变量................................................................................................................. 34
字符串.............................................................................................................. 35
1.3 计算语言:简单的统计...................................................................................... 36
频率分布.......................................................................................................... 36
细粒度的选择词................................................................................................ 38
词语搭配和双连词(bigrams).......................................................................... 39
计数其他东西................................................................................................... 39
1.4 回到 Python:决策与控制..................................................................................... 41
条件................................................................................................................. 41
对每个元素进行操作......................................................................................... 42
嵌套代码块....................................................................................................... 43
6
条件循环.......................................................................................................... 44
1.5 自动理解自然语言.................................................................................................... 45
词意消歧.......................................................................................................... 46
指代消解.......................................................................................................... 46
自动生成语言................................................................................................... 46
机器翻译.......................................................................................................... 47
人机对话系统................................................................................................... 48
文本的含义....................................................................................................... 49
NLP 的局限性................................................................................................... 49
1.6 小结......................................................................................................................... 50
1.7 深入阅读.................................................................................................................. 50
1.8 练习......................................................................................................................... 51
第 2 章 获得文本语料和词汇资源....................................................................................54
2.1 获取文本语料库..................................................................................................54
古腾堡语料库................................................................................................... 54
网络和聊天文本................................................................................................ 56
布朗语料库....................................................................................................... 57
路透社语料库................................................................................................... 59
就职演说语料库................................................................................................ 59
标注文本语料库................................................................................................ 60
在其他语言的语料库......................................................................................... 62
文本语料库的结构............................................................................................ 64
载入你自己的语料库......................................................................................... 65
2.2 条件频率分布.................................................................................................... 66
条件和事件....................................................................................................... 66
按文体计数词汇................................................................................................ 66
绘制分布图和分布表......................................................................................... 67
使用双连词生成随机文本.................................................................................. 68
2.3 更多关于 Python:代码重用............................................................................... 70
使用文本编辑器创建程序.................................................................................. 70
函数................................................................................................................. 70
模块................................................................................................................. 71
2.4 词典资源........................................................................................................... 72
词汇列表语料库................................................................................................ 73
发音的词典....................................................................................................... 75
比较词表.......................................................................................................... 78
2.5 WordNet..............................................................................................................79
意义与同义词................................................................................................... 79
WordNet 的层次结构......................................................................................... 81
更多的词汇关系................................................................................................ 82
语义相似度....................................................................................................... 83
2.6 小结.................................................................................................................. 84
2.7 深入阅读........................................................................................................... 85
2.8 练习.................................................................................................................. 85
7