基于深度学习的自然语言处理(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-26 15:15:25

点击下载

作者:(美)卡蒂克·雷迪·博卡(Karthiek Reddy Bokka)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于深度学习的自然语言处理

基于深度学习的自然语言处理试读:

前言

本书首先介绍自然语言处理领域的基本构件,接着介绍使用最先进的神经网络模型可以解决的问题,将深入涵盖文本处理任务中所需的必要预处理以及自然语言处理领域的一些热门话题,包括卷积神经网络、循环神经网络和长短期记忆网络。通过阅读本书,读者将理解文本预处理以及超参数调整的重要性。学习目标

·学习自然语言处理的基础知识。

·了解深度学习问题的各种预处理技术。

·使用word2vec和GloVe构建文本的矢量表示。

·理解命名实体识别。

·使用机器学习进行词性标注。

·训练和部署可扩展的模型。

·了解神经网络的几种架构。目标读者

对自然语言处理领域的深度学习感兴趣的有抱负的数据科学家和工程师。

他们将从自然语言处理概念的基础开始,逐渐深入到神经网络的概念及其在文本处理问题中的应用。他们将学习不同的神经网络架构及其应用领域。需要具备丰富的Python知识和线性代数技能。方法

本书从自然语言处理的基本概念讲起,在了解了基本概念之后,读者将逐渐意识到自然语言处理技术在现实世界中的应用和问题。接下来本书针对这些问题领域介绍开发解决方案的方法。本书还讨论了作为基于解决方案的方法的一部分的神经网络的基本构造块。最后通过实例阐述各种现代的神经网络架构及其相应的应用领域。硬件要求

为了获得最佳体验,我们推荐以下硬件配置:

·处理器:英特尔酷睿i5或同级产品

·内存:4GB内存

·存储:5GB可用空间软件需求

我们还建议你预先安装以下软件:

·操作系统:Windows 7 SP164位、Windows 8.164位或Windows 1064位、Linux(Ubuntu、Debian、Red Hat或Suse)或OS X的最新版本。

·Python 3.6.5或更高版本,最好是3.7。可访问https://www.python.org/downloads/release/python-371/下载。

·Jupyter(访问网站https://jupyter.org/install下载,按照说明安装)。或者,你可以使用Anaconda来安装Jupyter。

·Keras(https://keras.io/#installation)。

·Google Colab这是一个免费的Jupyter笔记本环境,运行在云基础架构上。强烈建议你使用它,因为其不需要任何设置,并且预先安装了流行的Python包和库(https://colab.research.google.com/note-books/welcome.ipynb)。安装和设置

每一次伟大的旅程都是从一个不起眼的步骤开始的,对于即将到来的数据领域的冒险也不例外。在能够用数据做令人敬畏的事情之前,我们需要准备好最高效的环境。在Windows上安装Python

1)在官方安装页面(https://www.python.org/downloads/windows/)上找到你想要的Python版本。

2)确保根据你的计算机系统安装正确的“位”版本(32位或64位)。你可以在操作系统的“系统属性”窗口中找到此信息。

下载安装程序后,只需双击文件,并按照屏幕上显示的用户友好提示操作。在Linux上安装Python

要在Linux上安装Python,需执行以下操作:

1)在命令提示符下运行python3--version验证尚未安装p\Python 3。

2)要安装Python 3,请运行以下命令:

3)如果遇到问题,有许多在线资源可以帮助你解决问题。在macOS X上安装Python

要在macOS X上安装Python,需执行以下操作:

1)通过按住“CMD+空格”组合键打开终端,在打开的搜索框中键入终端,然后按回车键。

2)通过命令行运行xcode--select--install来安装Xcode。

3)安装Python 3最简单的方法是使用homebrew,通过命令行运行ruby--e"$(curl-fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"来安装。

4)将homebrew添加到你的PATH环境变量中。通过运行sudo nano~/.profile在命令行中打开你的配置文件,并在底部插入export PATH="/usr/local/opt/python/libexec/bin:$PATH"。

5)最后一步是安装Python。在命令行中,运行brew install python。

6)注意,如果你安装Anaconda,最新版本的Python将自动安装。安装Keras

要安装Keras,需执行以下步骤:

1)由于Keras需要另一个深度学习框架作为后端,你需要先下载另一个框架,建议使用TensorFlow。

要在你的平台上安装TensorFlow,请访问https://www.tensorflow.org/install/。

2)安装后端后,就可以使用以下命令安装Keras:

也可以从GitHub安装它,使用以下方法克隆Keras:

3)使用以下命令在Python上安装Keras:

现在需要配置后端。更多信息请参考链接https://keras.io/backend/。下载示例代码及彩色图像

本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。第1章 自然语言处理

学习目标

本章结束时,你将能够:

·描述自然语言处理及其应用。

·解释不同的文本预处理技术。

·对文本语料库执行文本预处理。

·解释Word2Vec和GloVe的词嵌入功能。

·使用Word2Vec和GloVe生成词嵌入。

·使用NLTK、Gensim和Glove-Python库用于文本预处理以及生成词嵌入。

本章旨在为你提供自然语言处理基础知识以及深度学习中使用的各种文本预处理技术。1.1 本章概览

本书将指导你理解和优化深度学习技术,以进行自然语言处理,从而进一步推动强人工智能的实际应用。读者将了解自然语言处理的概念、应用和实现,并学习深度神经网络的方法,利用神经网络使机器理解自然语言。1.2 自然语言处理的基础知识

为了便于理解,我们将这个术语分为两部分:

·自然语言是一种有机且自然发展而来的书面和口头交流形式。

·处理意味着使用计算机分析和理解输入数据。

如图1-1所示,自然语言处理是人类语言的机器处理,旨在教授机器如何处理和理解人类的语言,从而在人与机器之间建立一个简单的沟通渠道。图1-1 自然语言处理

自然语言处理的应用很广泛,例如,在我们的手机和智能音箱中的个人语音助手,如Alexa和Siri。它们不仅能够理解我们的说话内容,而且能够根据我们说的话采取行动,并做出反馈。自然语言处理算法促进了这种与人类沟通的技术。

在上述自然语言处理定义中要考虑的关键是:沟通需要以人类的自然语言进行。几十年来,我们一直在与机器沟通:创建程序来执行某些任务并执行。然而,这些程序是用非自然语言编写的,因为它们不是口头交流的形式,也不是自然或有机发展而来的。这些语言,例如Java、Python、C和C++,都是在主要考虑机器的情况下创建的,并且始终考虑的是“机器能够轻松理解和处理的是什么?”

虽然Python是一种对用户更加友好的语言,且易于学习和编码,但与机器沟通,人类必须学习机器能够理解的语言。自然语言处理、机器学习、深度学习的关系如图1-2所示。图1-2 自然语言处理的维恩图

自然语言处理的目的与此相反。自然语言处理不是以人类顺应机器的方式学习如何有效地与它们沟通,而是使机器能够与人类保持一致,并学习人类的交流方式。其意义更为重大,因为技术的目的本来就是让我们的生活更为轻松。

我们用一个例子来澄清这一点,你的第一个程序是一段让机器打印“hello world”代码。这是你顺应机器并要求它用其理解的语言执行任务。通过向其发出这个命令来要求你的语音助手说“hello world”,并做出“hello world”的反馈,就是自然语言处理应用的一个例子,因为你用自然语言与机器通信。机器符合你的沟通形式,理解你所说的内容,处理你要求它执行的操作,然后执行任务。自然语言处理的重要性

图1-3说明了人工智能领域的各个部分。图1-3 人工智能及其一些子领域

与机器学习和深度学习一样,自然语言处理是人工智能的一个分支,因为其处理自然语言,所以它实际上是人工智能和语言学的交叉。

如上所述,自然语言处理使机器能够理解人类的语言,从而在两者之间建立有效的沟通渠道。然而,自然语言处理的必要性还有另一个原因。那就是,像机器一样,机器学习模型和深度学习模型对数值数据最有效。数值数据对人类来说很难自然产生。很难想象我们用数字而不是语言交谈。因此,自然语言处理与文本数据一起工作,并将其转换成数值数据,从而使机器学习模型和深度学习模型能够适用于文本数据。因此,它的存在是为了通过从人类那里获取语言的口头和书面形式,并将它们转换成机器能够理解的数据,来弥合人类和机器之间的交流差距。得益于自然语言处理,机器能够理解并回答基于自然语言的问题、解决使用自然语言的问题以及用自然语言交流等。1.3 自然语言处理的能力

自然语言处理有许多有益于人类生活的现实应用。这些应用程序属于自然语言处理的三大功能:

·语音识别

机器能够识别自然语言的口语形式,并将其翻译成文本形式。比如智能手机上的听写,你可以启用听写功能并对着手机说话,它会将你所说的一切转换成文本。

·自然语言理解

机器能够理解自然语言的口语和书面语。如果给机器一个命令,它就能理解并执行。例如,在你的手机上对Siri说“嘿,Siri,打电话回家”,Siri就会自动为你打电话回家。

·自然语言生成

机器能够自己生成自然语言。例如,在手机上对Siri说“Siri,现在几点了?”Siri回复说:“现在是下午2:08”。

这三种能力用于完成和自动化许多任务。让我们来看看自然语言处理的一些应用。

注意 文本数据被称为语料库(corpora)或一个语料(corpus)。1.4 自然语言处理中的应用

图1-4描述了自然语言处理的一般应用领域。图1-4 自然语言处理的应用领域

·自动文摘

包括对语料库生成摘要。

·翻译

要求有翻译工具,以从不同的语言翻译文本,例如,谷歌翻译。

·情感分析

这也被称为情感的人工智能或意见挖掘,它是从书面和口头语料库中识别、提取和量化情感和情感状态的过程。情感分析工具用于处理诸如客户评论和社交媒体帖子之类的事情,以理解对特定事物的情绪反应和意见,比如新餐厅的菜品质量。

·信息提取

这是从语料库中识别并提取重要术语的过程,称为实体。命名实体识别属于这一类,将在下一章中解释。

·关系提取

关系提取包括从语料库中提取语义关系。语义关系发生在两个或多个实体(如人、组织和事物)之间属于许多语义类别之一。例如,如果一个关系提取工具被赋予了关于Sundar Pichai的内容,以及他是谷歌的CEO,该工具将能够生成“Sundar Pichai就职于谷歌”作为输出,Sundar Pichai和谷歌是两个实体,“就职于”是定义它们之间关系的语义类别。

·聊天机器人

聊天机器人是人工智能的一种形式,被设计成通过语音和文本与人类交流。它们中的大多数模仿人,使你觉得在和另一个人说话。聊天机器人在健康产业被用于帮助患有抑郁症和焦虑症的人。

·社交媒体分析

社交媒体的应用,如Twitter和Facebook,都有标签和趋势,并使用自然语言处理来跟踪和监控这些标签和趋势,以了解世界各地正在交谈的话题。此外,自然语言通过过滤负面的、攻击性的和不恰当的评论和帖子来帮助优化过程。

·个人语音助理

Siri、Alexa、谷歌助手以及Cortana都是个人语音助理,充分利用自然语言处理技术来理解和回应我们。

·语法检查

语法检查软件会自动检查和纠正你的语法、标点和拼写错误。1.4.1 文本预处理

在回答关于理解文章的问题时,由于问题针对文章的不同部分,因此一些词和句子对你很重要,有些则无关紧要。诀窍是从问题中找出关键词,并将其与文章匹配,以找到正确的答案。

文本预处理思想是这样的:机器不需要语料库中的无关部分。它只需要执行手头任务所需的重要单词和短语。因此,文本预处理技术涉及为机器学习模型和深度学习模型以及适当的分析准备语料库。文本预处理基本上是告诉机器什么需要考虑、哪些可以忽略。

每个语料库根据需要来执行任务的不同文本预处理技术,一旦你学会了不同的预处理技术,你就会明白什么地方使用什么文本预处理技术和为什么使用。其中技术的解释顺序通常是被执行的顺序。

在下面的练习中,我们将使用NLTK Python库,但是在进行这些活动时可以随意使用不同的库。NLTK代表自然语言工具包(Natural Language Toolkit),是自然语言处理最简单也是最受欢迎的Python库之一,这就是为什么我们用它来理解自然语言处理的基本概念。

注意 关于自然语言工具包的更多信息,请访问https://www.nltk.org/。1.4.2 文本预处理技术

以下是自然语言处理中最常用的文本预处理技术:

·小写/大写转换

·去噪

·文本规范化

·词干提取

·词形还原

·标记化

·删除停止词

接下来分别介绍。1.小写/大写转换

这是人们经常忘记使用的最简单有效的预处理技术之一。它要么将所有的大写字符转换为小写字符,以便整个语料库都是小写的;要么将语料库中的所有小写字符转换为大写字符,以便整个语料库都是大写的。

当语料库不太大,并且任务涉及同一个词由于字符的大小写,而作为不同的术语或输出识别时,这种方法特别有用,因为机器固有地将大写字母和小写字母作为单独的实体来处理。比如,“A”与“a”是不同的。这种输入大小写的变化可能导致不正确的输出或根本没有输出。

例如,包含“India”和“india”的语料库如果不应用小写化,机器会把它们识别为两个独立的术语,而实际上它们都是同一个单词的不同形式,并且对应于同一个国家。小写化后,仅存在一种“India”实例,即“india”,简化了在语料库中找到所有提到印度时的任务。

注意 所有的练习和活动主要在Jupyter Notebook上开发。读者需要在系统上安装Python 3.6和NLTK。

练习1-6可以在同一个Jupyter notebook上完成。

练习1:对一个句子执行小写转换

在本练习中,我们将采用一个包含大写字符和小写字符的输入句子,并将它们全部转换成小写字符。以下步骤将帮助你解决问题:

1)根据你的操作系统,打开cmd或其他终端。

2)导航至所需路径,并使用以下命令启动Jupyter notebook:

3)将输入句子存储在“s”变量中,如下所示:

4)应用lower()函数将大写字母转换为小写字符,然后打印新字符串,如下所示:

预期输出如图1-5所示。图1-5 混合大小写句子的小写化输出

5)创建一个大写字符的单词数组,如下所示:

6)使用列表理解,对words数组的每个元素应用lower()函数,然后打印新数组,如下所示:

预期输出如图1-6所示。图1-6 混合大小写的小写化输出2.去噪

噪声是一个非常普遍的术语,对于不同的语料库和不同的任务,它可能意味着不同的东西。对于一个任务来说,被认为是噪声的东西可能对另一个任务来说是重要的,因此这是一种非常特定于领域的预处理技术。例如,在分析推文时,标签对于识别趋势和理解全球谈论的话题可能很重要,但是在分析新闻文章时标签可能并不重要,因此在后者的情况下标签将被视为噪声。

噪声不仅包括单词,还可以包括符号、标点符号、HTML标记(<、>、*、?)、数字、空白、停止词、特定术语、特定正则表达式、非ASCII字符(\W|\d+),以及解析词。

去除噪声是至关重要的,这样只有语料库的重要部分才能输入到模型中,从而确保准确的结果。这也有助于将单词转化为词根或标准形式。考虑以下示例。

如图1-7所示,删除所有符号和标点符号后,“sleepy”的所有实例都对应于单词的一种形式,从而能够更有效地预测和分析语料库。图1-7 去噪输出

练习2:消除单词中的噪声

在本练习中,我们将采用包含附加噪声的单词的输入数组(例如标点符号和HTML标记),并将这些单词转换为干净、无噪声的形式。为此,我们需要使用Python的正则表达式库。该库有几个功能,允许我们过滤输入数据并删除不必要的部分,这正是噪声消除过程的目的。

注意 要了解有关“re”的更多信息,请访问https://docs.python.org/3/library/re.html。

1)在同一个Jupyter notebook中,导入正则表达式库,如下所示:

2)创建一个名为“clean_words”的函数,该函数将包含从单词中删除不同类型噪声的方法,如下所示:

3)创建一个带有噪声的原始单词数组,如下所示:

4)对raw数组中的单词应用clean_words()函数,然后打印去噪后单词数组,如下所示:

预期输出,如图1-8所示。图1-8 噪声去除结果输出3.文本规范化

文本规范化是将原始语料库转换为规范和标准形式的过程,这基本上是为了确保文本输入在被分析、处理和操作之前保证一致。

文本规范化的示例是将缩写映射到其完整形式,将同一单词的多个拼写转换为单词的一个拼写,以此类推。

如图1-9和图1-10所示是错误拼写和缩写的规范形式的示例。图1-9 各种拼写错误的规范形式图1-10 缩写的规范形式

对于规范化来说,并没有标准的方法,因为它非常依赖于语料库和手头的任务。最常见的方法是使用字典映射,它涉及手动创建一个字典,将一个单词的所有不同形式映射到该单词,然后用一个标准形式的单词替换掉每个单词。4.词干提取

在语料库上执行词干提取以将词语减少到词干或词根形式。说“词干或词根形式”的原因在于,词干提取的过程并不总是将词语简化为词根,有时只是将其简化为规范形式。

经过词干提取的词语被称为变形词。这些单词的形式与单词的根形式不同,以表示诸如数字或性别之类的属性。例如,“journalists”是“journalist”的复数形式。因此,词干提取将去掉“s”,将“journalists”变为其根形式,相关示例如图1-11所示。图1-11 词干提取结果

词干提取有助于构建搜索应用程序,因为在搜索特定内容时,你可能还希望找到该事物的实例,即使它们的拼写方式不同。例如,读者如果在本书中搜索练习,则可能还需要在搜索中显示“Exercise”。

然而,词干提取并不总能提供所需的词干,因为它通过切断单词的末端起作用。词干分析器会将“troubling”减少到“troubl”而不是“trouble”,这对于解决问题没有帮助,因此词干提取不是常用的方法。使用时,Porter词干提取算法是最常用的算法。

练习3:对单词进行词干提取

在本练习中,我们将采用包含一个单词的各种形式的输入数组,并将这些单词转换为其词形。

1)在同一个Jupyter notebook中,导入nltk和pandas库以及Porter Stemmer,如下所示:

2)创建一个stemmer实例,如下所示:

3)创建一个包含相同单词的不同形式的数组,如下所示:

4)将词干分析器应用于words数组中的每个单词,并将它们存储在一个新数组中,如下所示:

5)以DataFrame的形式打印原始单词及其词干,如下所示:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载