且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《NLTK基础教程——用NLTK和Python库构建机器学习应用》——1.1 为什么要学习NLP

更新时间:2022-09-27 23:05:35

本节书摘来异步社区《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书中的第1章,第1.1节,作者:Nitin Hardeniya,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 为什么要学习NLP

关于这个问题,我们可以先来看看Gartner公司新一轮的趋势报告,你可以很清晰地看到,NLP技术赫然高居榜首。目前,NLP已被认为是业界最为稀缺的技能之一。自大数据的概念问世之后,我们所面对的主要挑战是——业界需要越来越多不仅能处理结构化数据,同时也能处理半结构化或非结构化数据的人才。对于我们所生产出来的那些博客、微博、Facebook订阅、聊天信息、E-mail以及网络评论等,各公司都在致力于收集所有不同种类的数据,以便建立更好的客户针对性,形成有意义的见解。而要想处理所有的这些非结构化数据源,我们就需要掌握一些NLP技能的人员。

身处信息时代,我们甚至不能想象生活中没有Google会是什么样子。我们会因一些最基本的事情而用到Siri;我们会需要用垃圾过滤器来过滤垃圾邮件;我们会需要在自己的Word文档中用到拼写检查器等。在现实世界中所要用到的NLP应用数不胜数,如图1-1所示。

《NLTK基础教程——用NLTK和Python库构建机器学习应用》——1.1 为什么要学习NLP

在这里,我们可以再列举一些令人惊叹的NLP应用实例。虽然你很可能已经用过它们,但未必知道这些应用是基于NLP技术的。

拼写校正(MS Word/其他编辑器)。
搜索引擎(Google、Bing、Yahoo!、WolframAlpha)。
语音引擎(Siri、Google Voice)。
垃圾邮件分类(所有电子邮件服务)。
新闻订阅(Google、Yahoo!等)。
机器翻译(Google翻译与其他类似服务)。
IBM Watson[1]。
构建上述这些应用都需要非常具体的技能,需要优秀的语言理解能力和能有效处理这些语言的工具。因此,这些不仅是各NLP最具优势领域的未来趋势,同时也是我们用NLP这种最独特技能所能创建的应用种类。

在实现上面提到的某些应用以及其他基本的NLP预处理时,我们有许多开源工具可用。这些工具有些是由相关组织在建立自己的NLP应用时开发的,而有些则纯粹属于开源项目。下面我们就来看一份NLP工具的小清单。

GATE。
Mallet。
Open NLP。
UIMA。
Stanford toolkit。
Genism。
Natural Language Tool Kit (NLTK)。

上述大多数工具都是用Java编写的,在功能上也都很相似。尽管这里有一些工具功能很强大,且提供了各种NLP实用工具,但如果我们考虑到易用性和其对相关概念的解释度的话,NLTK的得分就非常高了。NLTK库是一个非常易学的工具包,这得益于Python本身非常平缓的学习曲线(毕竟NLTK是用它编写的),人们学习起来会非常快。NLTK库中收纳了NLP领域中的绝大部分任务,它们都被实现得非常优雅,且易于使用。正是出于上述的这些原因,NLTK如今已成为了NLP社区最流行的库之一。

在这里,我们会假设读者已经对Python语言有了一定程度的了解。如果你还不了解的话,我们希望你先去学习一下Python。如今在互联网上可以找到大量的Python基础教程,并且能让你对该语言进行一个快速概览的图书也不在少数。当然,我们也会针对不同主题与你探讨Python的一些特性。但就目前而言,只要你掌握了基本的Python知识,如列表、字符串、正则表达式以及基本的I/O操作,就可以继续读下去了。

注意 提示: 

你可以从下列任意一网站中获取Python安装包。

https://www.python.org/downloads/。
http://continuum.io/downloads。
https://store.enthought.com/downloads/。

这里我会推荐读者选用来自Anaconda或Canopy的Python发行版。因为这些发行版本身就具备了一些捆绑库,如SciPy、numpy、scikit等,它们可用于数据分析及其他与NLP相关领域的应用。甚至,NLTK也是该发行版的一部分。

注意 提示: 

请参照下面网址中的说明来安装NLTK与NLTK数据:

http://www.nltk.org/install.html。```
下面,让我们来测试一下。

请在操作系统中打开终端,并运行:

$ python`
该命令应该会为你打开一个Python解释器:

Python 2.6.6 (r266:84292, Oct 15 2013, 07:32:41)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

我希望你在这里会得到一个与上面情况类似的输出。当然,你也有可能会看到一个不太一样的输出,因此理想情况下,我们应该准备最新版本的Python(建议是2.7版)、GCC编译器,以及其他操作系统的细部安排。当然,我们知道Python目前最新的版本是3.0以上,但对于其他任意的开源系统来说,我们应该保守地选择一个更稳定的版本,而不是贸然跳到最新版本。如果你已经将项目迁移到Python 3.0+,那就务必参阅下面链接中的说明,以便了解那些被添加的新特性。

对于基于UNIX的系统,Python属于默认程序(无须任何设置)。而Windows用户则需要通过设置相关路径来使Python进入正常工作状态。你可以通过以下方式来确认NLTK是否已经被正确安装:

>>>import nltk
>>>print "Python and NLTK installed successfully"
Python and NLTK installed successfully

好了,我们可以准备出发了!