研究人类语言的过程称为NLP。深入研究语言的人称为语言学家,而“计算语言学家”这个专有名词适用于应用计算研究语言处理的人。从本质上讲,计算语言学家是深入了解语言的计算机科学家,计算语言学家可以运用计算技能,对语言的不同方面进行建模。计算语言学家解决的是语言理论方面的问题,NLP只不过是计算语言学的应用。
NLP更多探讨的是应用计算机,处理不同语言的细微差别,以及使用NLP技术构建现实世界的应用。在实际情景下,NLP类似于教孩子学语言。一些最常见的任务(如理解单词和句子,形成在语法和结构上正确的句子)对人类而言是很自然。在NLP领域,把这样的一些任务转化为标记解析(tokenization)、组块(chunking)、词性标注(part of speech tagging)、解析(parsing)、机器翻译(machine translation)、语音识别(speech recognition),这些任务中的大部分依然是计算机所面临的最严峻的挑战。
为什么要学习NLP
本节从Gartner的技术成熟度曲线开始讨论,从这条曲线上,你可以清楚地看到NLP处在技术成熟度曲线的顶部。目前,NLP是行业所需的稀有技能之一。在大数据到来之后,NLP面临的主要的挑战是,NLP需要大量不但精通结构化数据而且擅长于处理半结构化或非结构化数据的技术人员。我们正在生成拍字节量级的网络博客、推特信息、脸书(Facebook)的推送信息、聊天记录、电子邮件和评论。一些公司正在收集所有这些不同种类的数据,以便更好地为客户定位,并从中得到有意义的见解。为了处理这些非结构化数据源,我们需要了解NLP的技术人员。
我们身处信息时代;我们甚至不能想象生活中没有谷歌。我们使用Siri来处理大多数基本的语音功能。我们使用垃圾邮件过滤器过滤垃圾邮件。在Word文档中,我们需要拼写检查器。在我们周围,存在许多NLP在现实世界中应用的例子。
(图片来自gartner网站)
下面也提供一些你能够使用但是没有意识它们是建立在NLP上的令人赞叹的NLP应用的示例。拼写校正(微软的Word/任何其他编辑器)
搜索引擎(谷歌、必应、雅虎和WolframAlpha)
语音引擎(Siri和谷歌语音)
垃圾邮件分类(所有的电子邮件服务)
新闻推送(谷歌和雅虎等)
机器翻译(谷歌翻译等)
IBM的沃森
构建这些应用需要一种非常特殊的技能集,你需要对语言非常了解,并具有可以有效处理语言的工具。因此,让NLP成为最具优势的领域之一的原因不是广告宣传,而是可以使用NLP创建的这种应用使得NLP成为必备的最独特技能之一。
为了实现上述的一些应用,以及其他基本的NLP预处理,我们有很多可用的开源工具。在这些工具中,有一些是某些组织为建立自己的NLP应用而开发的,而有一些是开源的。这里是一张可用的NLP工具列表。GATE
Mallet
Open NLP
UIMA
斯坦福工具包
Genism
自然语言工具包(NLTK)
自然语言处理书单
1、Python自然语言处理
[美] Steven,Bird Ewan,Klein Edward,Loper 著,陈涛,张旭,崔杨,刘海平 译
这是一本关于自然语言处理的书。所谓“自然语言”,是指人们日常交流使用的语言,如英语、印地语、葡萄牙语等。相对于编程语言和数学符号这样的人工语言,自然语言随着一代代的传递而不断演化,因而很难用明确的规则来确定。从广义上讲,“自然语言处理”(Natural Language Processing,NLP)包含所有用计算机对自然语言进行的操作,从最简单的通过计数词汇出现的频率来比较不同的写作风格,到最复杂的完全“理解”人所说的话,或至少达到能对人的话语作出有效反应的程度。
这本书提供自然语言处理领域的入门指南。它可以用来自学,也可以作为自然语言处理或计算语言学课程的教科书,或是作为人工智能、文本挖掘、语料库语言学课程的补充读物。本书实用性强,包括上百个实例和分级练习。
本书基于Python编程语言及名为自然语言工具包(Natural Language Toolkit, NLTK)的开源库。NLTK包含大量的软件、数据和文档,所有这些都可以从http://www.nltk.org/上免费下载。NLTK的发行版本支持Windows、Macintosh和UNIX平台。强烈建议你下载Python和NLTk,与我们一起尝试书中的例子和练习。
2、自然语言处理实战 利用Python理解、分析和生成文本
[美] 霍布森·莱恩,科尔·霍华德,汉纳斯·马克斯·哈普克 著,史亮,鲁骁,唐可欣,王斌 译
本书是介绍自然语言处理(NLP)和深度学习的实战书。NLP已成为深度学习的核心应用领域,而深度学习是NLP研究和应用中的必要工具。本书分为3部分:第一部分介绍NLP基础,包括分词、TF-IDF向量化以及从词频向量到语义向量的转换;第二部分讲述深度学习,包含神经网络、词向量、卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆(LSTM)网络、序列到序列建模和注意力机制等基本的深度学习模型和方法;第三部分介绍实战方面的内容,包括信息提取、问答系统、人机对话等真实世界系统的模型构建、性能挑战以及应对方法。
本书面向中高级Python开发人员,兼具基础理论与编程实战,是现代NLP领域从业者的实用参考书。
3、自然语言处理与计算语言学
格夫·斯里尼瓦萨-德西坎(Bhargav Srinivasa-Desikan) 著,何炜 译
本书介绍了如何应用自然语言处理和计算语言学算法,对现有数据进行推理,并得到一些有趣的分析结果。这些算法基于目前主流的统计机器学习和人工智能技术,实现工具唾手可得,比如Python社区的Gensim和spaCy之类的工具。
本书从学习数据清洗开始,学习如何执行计算语言学算法,然后使用真实的语言和文本数据、使用Python来探索NLP和深度学习的更高级课题。我们还会学习使用开源工具来标记、解析和建模文本。读者将掌握优秀框架的实战知识,以及怎样为主题模型选择类似Gensim的工具,怎样通过Keras进行深度学习。
本书覆盖理论知识和实例,方便读者在自己遇到的场景中应用自然语言处理和计算语言学算法。我们将发现可用于执行NLP的Python工具的丰富的生态系统,带领读者进入现代文本分析的精彩世界。
4、Python和NLTK自然语言处理
[印度] 尼天·哈登尼亚(Nitin Hardeniya),雅各布·帕金斯(Jacob Perkins),迪蒂·乔普拉(Deepti Chopra),尼什·斯乔希 等 著,林赐 译
模块1讨论文本挖掘/NLP任务中所需的所有预处理步骤。该模块详细讨论标记化、词干提取、停用词删除和其他文本清理过程,以及如何在NLTK中轻松实现这些操作。
模块2解释如何使用语料库读取器和创建自定义语料库。它还介绍如何使用NLTK附带的一些语料库。它涵盖组块过程(也称为部分分析),组块过程可以识别句子中的短语和命名实体。它还解释如何训练自己的自定义组块器并创建特定的命名实体识别器。
模块3讨论如何计算单词频率和实现各种语言建模技术。它还讨论浅层语义分析(即NER)的概念和应用及使用Wordnet的TSD。
模块3有助于你理解和应用信息检索与文本摘要的概念。
5、精通Python自然语言处理
Deepti,Chopra,Nisheeth,Joshi,Iti ... 著,王威 译
本书详细介绍如何使用Python执行各种自然语言处理(NLP)任务,并帮助读者掌握利用Python设计和构建基于NLP的应用的实践。本书引导读者应用机器学习工具来开发各种各样的模型。对于训练数据的创建和主要NLP应用的实现,例如命名实体识别、问答系统、语篇分析、词义消歧、信息检索、情感分析、文本摘要以及指代消解等,本书都进行了清晰的介绍。本书有助于读者使用NLTK创建NLP项目并成为相关领域的专家。
通过阅读本书,你将能够:
● 实现字符串匹配算法以及标准化技术;
● 实现统计语言建模技术;
● 深刻理解词干提取器、词形还原器、形态分析器以及形态生成器的开发;
● 开发搜索引擎并实现词性标注和统计建模(包含n-gram方法)等相关概念;
● 熟悉诸如树型库建设、CFG建设、CYK以及Earley线图解析算法等相关概念;
● 开发基于NER的系统并理解和应用情感分析的相关概念;
● 理解并实现信息检索和文本摘要等相关概念;
● 开发语篇分析系统以及基于指代消解的系统。