本文转载自微信公众号「数据与智能」,作者AI Publishing。转载本文请联系数据与智能公众号。
本章为自然语言处理提供了一个高层次的介绍。解释了自然语言处理是什么,最常见的自然语言处理应用是哪些以及开发自然语言处理应用程序的基本方法是什么。
1. 理解自然语言处理
人类通过自然语言互动,自然语言包括了许多信息。例如说,通过选择不同的词语,语气和句子的上下文可以被用来揭露一个人的心情,意图和情感。
此外,诸如书籍,报纸和博客之类的文本文档中充满了可用于执行各种任务的信息。对于人类来说,理解并且从一个文档中提取有用的信息以及做出基于来自文档的这个信息的决定需要花费大量的时间。
而这,就是自然语言处理发挥作用的地方。
自然语言处理被定义为“一个使计算机能够阅读,理解和提取人类所说自然语言含义的人工智能领域。”
有了自然语言处理,计算机不仅能够理解自然语言,而且还能通过自然语言对人类做出回应。除了用于人机交互目的之外,NLP技术还广泛用于处理公司的大量数据,而手动处理则需要数月甚至数年的时间。
例如,一个人可能需要花几周的时间来从一本一千页的书中人工提取信息进行总结,但有了自然语言处理,类似的文本摘要可以在几分钟内完成。同理,聘用人工读者通读所有用户评论,并编写包含用户对特定产品的意见的报告是花费成本非常高的,然而有了自然语言处理之后,用户意见可以被自动从文本中提取,从而使公司能够制定出组织决策。
2. 自然语言处理的实际应用
从Microsoft的Cortona到Apple的Siri,NLP为各种应用程序提供了支持。本节简要介绍了NLP的一些最常见的应用程序。
情感分析
NLP通常被用于执行文本情感分析。文字形式的大众意见,例如有关特定产品或实体的推文,博客和评论都包含了情感。情感分析是指从这些文字中识别情感。自动检测有关推文的公众情绪可以帮助公司决定如何改进其产品以及保留或丢弃哪种产品。
垃圾邮件以及非垃圾邮件的分类
Gmail和其他电子邮件服务器使用NLP技术来精确地区分非垃圾和垃圾邮件。这是文本分类的一个经典应用,其中文本文档被划分为预定义类别之一,即非垃圾邮件或垃圾邮件。
语音到文字的转换
NLP技术被广泛的使用到语音与文字的自动双向转换中。在你说出内容时,你不再需要要求某人代你把你讲的内容写下。谷歌的自动语音识别(https://bit.ly/2N6xYSt) 就是一个很经典的语音文字转换的例子。
人机交互
需要按键盘按钮并单击鼠标以向计算机发出命令的日子已经一去不复返了。NLP 已经能够使人类和机器人通过自然语言进行互动。机器人在有了NLP的帮助下不仅能够理解人类的语言而且能够用自然语言对人类进行回应。Sophia(https://bit.ly/2YLprtx)就是一个经典的通过自然语言处理与人类互动的人形机器人的例子。
增强虚拟助手
正如上面所提到的,NLP技术也被用来开发包括亚马逊Alexa, 苹果的Siri以及微软的Cortona在内虚拟助手。这些虚拟私人助手依靠NLP方法来理解人类的请求并以自然语言回复。
文字翻译
自动文本翻译是NLP最强大的应用程序之一。使用文本翻译技术,人们只需单击几下鼠标,便可以将文档从一种语言翻译成另一种语言。Google翻译就是使用NLP技术进行文字翻译的最著名例子之一。
文字摘要
并非每个人都有时间来阅读冗长的文章,内容摘要是需要时间和人力的。有了NLP技术,文字文档可以被自动地总结摘要,节省了时间与人力也节约了成本。
文本生成
基于深度学习的高级NLP技术现在还被用于文本生成。近年来,文本生成技术被用于生成基于(权力的游戏)脚本的诗歌。文本生成技术目前还处于初始阶段。
3. 学习NLP的路线图
掌握NLP需要时间和精力。不能仅通过阅读两个博客就声称自己是NLP专家。本节分步介绍怎么学习NLP。
为了成为一个优秀的NLP专家,需要按顺序按照以下步骤学习。
3.1 了解NLP的全部意义
在开始开发NLP应用程序之前,你需要知道你实际在做什么。你应该了解NLP的全部含义,为何有用以及最重要的一些NLP应用程序。本书的第一章就是为自然语言处理理论建立基础。
3.2 学习一门编程语言
如果你希望成为一名NLP专家,你需要学会一点编程,这是无法绕过的现实。你必须学会编程才能开发NLP应用程序。尽管你可以使用任何一种编程语言来编程自然语言应用程序,但我还是会建议学习Python编程语言。Python是NLP最常用的库之一,具有无数的基本和先进的NLP库。此外,许多NLP应用程序基于机器学习和深度学习。并且Python是一种提供易于使用的深度学习和机器学习库的语言。简而言之,学习Python。第2章介绍 了面向初学者的Python入门的速成课程。
3.3 从基础任务开始
从非常基本的NLP应用程序开始。建议初学者不要立即开始开发NLP应用程序,相反,应该首先了解最常见和最基本的NLP任务。例如,学习如何执行停用词删除、如何将句子划分为单词以及如何将段落划分为句子、知道如何为文本等中的单词找到一部分语音标签等等。此外,精通文本清洗和操作技术也是必须的。最后,你需要掌握如何从不同的来源将数据导入你的应用以及如何抓取网站上的数据以将它导入你的应用程序。基本的NLP任务在第四,第五以及第六章中有详细解释。
3.4 了解如何以统计方式表示文本
正如之前提到的,大部分的NLP技术包含了深度学习以及机器学习的概念,而深度学习与机器学习都是统计学方面的技术。为了在NLP中实现这些技术,需要用统计学的方式表达文本。有多种方法可以用来统计地表示文本,关于详细信息,请参见第7章。
3.5 了解机器学习与深度学习
一旦学习完所有基本的NLP概念后,则需要学习机器学习和深度学习概念,尤其是有监督的机器学习算法。在深度学习算法中,应该注重了解稠密连接的神经网络,递归神经网络(尤其是LSTM)和卷积神经网络的基本工作原理。这些概念将在第3章中进行解释。
3.6 开发高级的NLP应用
熟悉了基本的NLP任务并且对深度学习和机器学习有基本的了解后,就可以准备开发高级NLP应用程序了。对于NLP应用程序,建议首先使用诸如Logistic回归,Random Forest等机器学习算法开发机器学习应用程序(例如文本分类)。一旦开始能熟悉地使用机器学习开发NLP应用程序,就可以转向使用基于深度学习的运用各种神经网络的高级应用程序。本书的第2部分致力于开发基于深度学习和机器学习NLP应用程序。
3.7 NLP应用部署
基于高级NLP的应用程序与机器学习应用程序非常相似。有几种部署此类应用程序的方法。可以使用包含REST API的专用服务器,这些服务器可服务于调用NLP应用程序。要部署此类应用程序,需要学习Python Flask,Docker或类似的Web技术。此外,还可以使用Amazon Web Services或任何其他基于云的部署平台来部署应用程序。
要成为NLP专家,需要不停地按照上述7个步骤练习执行。练习得越多,就可以在NLP获得更好的成就。
4. 主要的自然语言处理方法
自然语言处理的方法分为两大类:基于规则的方法和统计方法。
4.1 基于规则的方法
顾名思义,基于规则的方法是由人类定义的规则组成。例如,一个关于情感分类的基于规则的方法可能包含了这样一条规则:如果推文中肯定词的数量大于否定词的数量,则该推文可以归类为总体上具有积极情绪。
基于规则的方法有其的好处也有不足。其最主要的一个好处是它们具有很高的可解释性。另外,基于规则的方法不需要大量的数据来做训练。而其最主要的一个不足是,这些基于规则的方法不能灵活变通,可能无法扩展到不同的数据集。
4.2 统计学方法
顾名思义,统计方法涉及到用于开发自然语言处理技术的统计算法。机器学习和深度学习方法是NLP统计方法的主要示例。与基于规则的方法相比,统计方法更加灵活和可扩展。使用统计方法的主要缺点是缺乏可解释性,并且需要大量的数据集来训练NLP算法。