自然语言处理Python进阶(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-16 10:24:52

点击下载

作者:(印)克里希纳·巴夫萨(Krishna Bhavsar)

出版社:机械工业出版社

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

自然语言处理Python进阶

自然语言处理Python进阶试读:

前言

亲爱的读者,感谢你选择本书来开启你的自然语言处理(Natural Language Processing,NLP)之路。本书将从实用的角度带领你由浅入深逐步理解并实现NLP解决方案。我们将从访问内置数据源和创建自己的数据源开始指引你踏上这段旅程。之后你将可以编写复杂的NLP解决方案,包括文本规范化、预处理、词性标注、句法分析等。

在本书中,我们将介绍在自然语言处理中应用深度学习所必需的各种基本原理,它们是目前最先进的技术。我们将使用Keras软件来讨论深度学习的应用。

本书的出发点如下:

·内容设计上旨在通过细节分析来帮助新手迅速掌握基本原理。并且,对有经验的专业人员来说,它将更新各种概念,以便更清晰地应用算法来选择数据。

·介绍了在NLP中深度学习应用的新趋势。本书的组织结构

第1章教你使用内置的NLTK语料库和频率分布。我们还将学习什么是WordNet,并探索其特点和用法。

第2章演示如何从各种格式的数据源中提取文本。我们还将学习如何从网络源提取原始文本。最后,我们将从这些异构数据源中对原始文本进行规范并构建语料库。

第3章介绍一些关键的预处理步骤,如分词、词干提取、词形还原和编辑距离。

第4章介绍正则表达式,它是最基本、最简单、最重要和最强大的工具之一。在本章中,你将学习模式匹配的概念,它是文本分析的一种方式,基于此概念,没有比正则表达式更方便的工具了。

第5章将学习如何使用和编写自己的词性标注器和文法规则。词性标注是进一步句法分析的基础,而通过使用词性标记和组块标记可以产生或改进文法规则。

第6章帮助你了解如何使用内置分块器以及训练或编写自己的分块器,即依存句法分析器。在本章中,你将学习评估自己训练的模型。

第7章介绍信息抽取和文本分类,告诉你关于命名实体识别的更多信息。我们将使用内置的命名实体识别工具,并使用字典创建自己的命名实体。我们将学会使用内置的文本分类算法和一些简单的应用实例。

第8章介绍高阶自然语言处理方法,该方法将目前为止你所学的所有课程结合到一起,并创建应对你现实生活中各种问题的适用方法。我们将介绍诸如文本相似度、摘要、情感分析、回指消解等任务。

第9章介绍深度学习应用于自然语言处理所必需的各种基本原理,例如利用卷积神经网络(CNN)和长短型记忆网络(LSTM)进行邮件分类、情感分类等,最后在低维空间中可视化高维词汇。

第10章描述如何利用深度学习解决最前沿的问题,包括文本自动生成、情景数据问答,预测下一个最优词的语言模型以及生成式聊天机器人的开发。本书需要你做什么

为了成功完成本书的实例,你需要在Windows或Unix操作系统上安装Python 3.x及以上版本,硬件要求:CPU 2.0GHz以上,内存4GB以上。就Python开发的IDE而言,市场上有许多可用的IDE,但我最喜欢的是PyCharm社区版。它是一款由JetBrains开发的免费开源工具,它的技术支持很强大,会定期发布该工具的升级和修正版本,你只要熟悉IntelliJ就能保持学习进度顺畅。

本书假设你已经了解Keras的基本知识和如何安装库。我们并不要求读者已经具备深度学习的知识和数学知识,比如线性代数等。

在本书中,我们使用了以下版本的软件,它们在最新的版本下都能很好地运行:

·Anaconda 3 4.3.1(Anaconda中包括所有Python及相关包,Python3.6.1,NumPy1.12.1,pandas 0.19.2)

·Theano 0.9.0

·Keras 2.0.2

·feedparser 5.2.1

·bs4 4.6.0

·gensim 3.0.1本书的读者对象

本书适用于想利用NLP提升现有技能来实现高阶文本分析的数据科学家、数据分析师和数据科学专业人员,建议读者具备自然语言处理的一些基本知识。

本书也适用于对自然语言处理知识毫无了解的新手,或是希望将自己的知识从传统的NLP技术扩展到最先进的深度学习应用技术的有经验的专业人士。小节

在本书中,有几个标题经常出现(准备工作、如何实现、工作原理、更多、参见)。为了明确说明如何完成一个实例,本书使用了如下内容排布:准备工作

本节介绍完成实例的预期结果,并说明如何安装所需的软件或初步设置。如何实现

本节包含完成实例所需遵循的步骤。工作原理

本节通常对上一节的操作进行详细的解释。更多

本节包含实例的补充信息,以便读者对实例的实现方法有更多的了解。参见

本节为实例的其他有用信息提供有效的链接。约定

在本书中,你会发现许多不同类型信息的文本格式。下面是这些格式的一些范例和它们的含义解释。

任何命令行的输入或输出格式如下:

新术语和重要词以加粗字体显示。警告或重要提示将跟在这样的符号后面。提示或小技巧将跟在这样的符号后面。读者反馈

欢迎读者的反馈。让我们知道你对本书的看法,哪些部分喜欢还是不喜欢。读者反馈对我们来说很重要,因为它有助于我们了解读者真正能从中获益最多的地方。将你的反馈发送到邮箱feedback@packtpub.com即可,并且在你的邮箱标题中提到本书的书名。如果你有一个擅长或是比较感兴趣的话题,可以撰写或投稿书刊,请在www.packtpub.com/authors网站上查看作者指南。客户支持

既然你是一本Packt书的拥有者,在购买时能够获得很多额外的资源。示例代码下载

你可以从http://www.packtpub.com通过个人账号下载本书的示例代码文件。如果你在别处购买了本书,可以访问http://www.packtpub.com/support并进行注册,就可以直接通过邮件方式获得相关文件。你可以按照以下步骤下载代码文件:

1.使用你的电子邮件地址和密码登录或注册到我们的网站;

2.将鼠标指针置于顶部的SUPPORT选项卡上;

3.点击Code Downloads & Errata;

4.在Search框中输入图书的名称;

5.选择你要下载的代码文件的相应图书;

6.从你购买本书的下拉菜单中选择;

7.点击Code Download。

你也可以在Packt出版社网站关于本书的网页上通过点击Code Files按钮来下载代码文件。通过在Search框中输入图书的名称来访问该页面。请注意,你需要登录到你的Packt账户。一旦文件被下载,请确保你使用的是最新版本的工具解压文件夹:

·WinRAR/7-Zip for Windows

·Zipeg/iZip/UnRarX for Mac

·7-Zip/PeaZip for Linux

本书的代码可从GitHub下载,托管在https://github.com/PacktPublishing/Natural-Language-Processing-with-Python-Cookbook上。其余代码包可以从https://github.com/PacktPublishing/上丰富的图书和视频目录中获取。请检验测试!作者简介

克里希纳·巴夫萨(Krishna Bhavsar)花了大约10年时间在各行业领域如酒店业、银行业、医疗行业等进行自然语言处理、社交媒体分析和文本挖掘方面的研究。他致力于用不同的NLP语料库如Stanford CoreNLP、IBM的SystemText和BigInsights、GATE和NLTK来解决与文本分析有关的行业问题。克里希纳还致力于分析社交媒体给热门电视节目和流行零售品牌以及产品带来的效应。2010年,他在NAACL上发表了一篇关于情感分析增强技术的论文。近期,他创建了一个NLP管道/工具集并开源以便公众使用。除了学术和科技,克里希纳还热衷于摩托车和足球,空闲时间喜欢旅行和探索。他骑摩托车参加过环印度公路旅行并在东南亚和欧洲大部分国家徒步旅行过。

首先,我要感谢我的母亲,她是我生命中最大的动力和坚强的支柱。我要感谢Synerzip的管理团队和我所有的朋友在我写作过程中对我的支持。最后,特别感谢Ram和Dorothy在这困难的一年让我保持前进。

纳雷什·库马尔(Naresh Kumar)曾为财富500强企业设计、实施和运行超大型因特网应用程序,在这方面他拥有超过十年的专业经验。他是一位全栈架构师,在电子商务、网络托管、医疗、大数据及分析、数据流、广告和数据库等领域拥有丰富的实践经验。他依赖开源并积极为其做贡献。纳雷什一直走在新兴技术的前沿,从Linux系统内部技术到前端技术。他曾在拉贾斯坦邦的BITS-Pilani学习,获得了计算机科学和经济学的双学位。

普拉塔普·丹蒂(Pratap Dangeti)在班加罗尔的研究和创新实验室开发机器学习和深度学习方法,以用于结构化、图像和TCS文本数据。他在分析和数据科学领域拥有丰富的经验,并在IIT Bombay获得了工业工程和运筹学项目的硕士学位。普拉塔普是一名人工智能爱好者。闲暇时,他喜欢阅读下一代技术和创新方法。他还是Packt出版的《Statistics for Machine Learning》一书的作者。

我要感谢我的母亲Lakshmi,感谢她在我的职业生涯以及撰写本书的过程中给予我的支持。我要把这本书献给她。我还要感谢我的家人和朋友,没有他们的鼓励,我不可能完成这本书。审校者简介

Juan Tomas Oliva Ramos是墨西哥瓜纳华托大学的环境工程师,他拥有行政工程和质量硕士学位。他在专利管理和开发、技术创新项目以及通过流程统计控制开发技术解决方案方面拥有超过5年的经验。

自2011年以来,Juan Tomas Oliva Ramos一直是统计、创业和项目技术开发方面的教师。他还是一名企业家导师,并在墨西哥瓜纳华托德尔林孔理工高等研究院开设了一个新的技术管理和创业部门。

Juan是Alfaomega的审稿人,致力于完成《Wearable Designs for Smart Watches,Smart TVs and Android Mobile Devices》一书。

Juan还通过编程和自动化技术开发了原型系统,用于改进操作,并已经注册了专利。

感谢Packt出版社让我有机会审校这本精彩的书,并与一群志同道合的伙伴合作。

感谢我美丽的妻子Brenda,我们的两位魔法公主(Maria Regina和Maria Renata)和我们的下一位成员(Angel Tadeo),你们每天都给了我力量、幸福和欢乐。谢谢你们。第1章语料库和WordNet1.1 引言

解决任何实际的自然语言处理(NLP)问题,都需要处理大量的数据。这些数据通常以公开语料库的形式存在,并可以由NLTK数据包的附加组件提供。例如,如果要创建一个拼写检查器,需要用一个大型单词语料库进行匹配。

本章将涵盖以下内容:

·介绍NLTK提供的各种有用的文本语料库

·如何用Python访问内置语料库

·计算频率分布

·WordNet及其词法特征介绍

我们将通过实践的方式来理解这些内容。下面我们会进行一些练习,通过实例来完成这些学习目标。1.2 访问内置语料库

如前所述,NLTK有许多可供使用的语料库。这里假设你已经在计算机上完成了NLTK数据库的下载和安装。如果没有,你可以通过网址http://www.nltk.org/data.html下载。此外,NLTK数据库内的完整语料库列表可以通过网址http://www.nltk.org/nltk_data/获取。

现在,我们的第一个任务/实例是学习如何访问这些语料库。我们在路透社语料库(Reuters corpus)上做一些实验。将语料库导入我们的程序中,并尝试用不同的方式进行访问。如何实现

1.创建一个新文件,将其命名为reuters.py,并在该文件中添加以下代码。这是在整个NLTK数据集中仅访问路透社语料库的特定方式:

2.当我们想知道这个语料库中有什么内容时,最简单的方法是调用语料库对象中的fileids()函数。在程序中添加以下代码:

3.运行该程序,将得到如下输出:

这些是路透社语料库中的文件列表和它们的相对路径。

4.访问这些文件的具体内容。使用语料库对象的words()函数来访问test/16097文件:

5.再次运行该程序,会出现一行新的输出内容:

输出了test/16097文件中的单词列表。虽然整个单词列表被加载到内存对象中,此处仅输出部分结果。

6.从test/16097文件中获取特定数量的单词(例如20个)。当然,我们可以指定想要获取的单词数,并将其存储在列表中以供使用。添加如下两行代码:

运行代码,输出结果如下:

7.进一步,路透社语料库不仅仅是一个文件列表,而且还被按层次分成90个主题。每个主题都有许多与之关联的文件。也就是说,当你访问任何一个主题时,实际上访问的是与该主题相关的所有文件的集合。添加如下代码以输出主题列表:

运行代码,输出控制台将有如下输出:

显示了所有的90个类别。

8.最后,编写四行简单的代码,这不仅可以访问两个主题,还可以将单词以一行一个句子这样松散的方式打印出来。将以下代码添加到Python文件中:

9.简单解释一下,我们首先选择了类别bop和cocoa,并打印这两个类别文件中的每个单词。每遇到一个点号(.),就插入一个新的行。运行代码,控制台将输出以下内容:1.3 下载外部语料库,加载并访问

现在我们已经学会了如何加载和访问内置语料库,下面将学习如何下载并加载,以及访问外部语料库。许多内置语料库都非常适用于训练,但是为了解决实际问题,通常需要一个外部数据集。在本节实例中,我们将使用Cornell CS电影评论语料库,该语料库对评论做了正面和负面的标记,已被广泛应用于训练情感分析模块。1.3.1 准备工作

首先,你需要从互联网上下载数据集并将其解压缩。链接如下:http://www.cs.cornell.edu/people/pabo/movie-review-data/mix20_rand700_tokens_cleaned.zip。然后,将生成的评论(Reviews)目录存储在计算机的安全位置。1.3.2 如何实现

1.创建一个名为external_corpus.py的新文件,并向该文件添加如下内容:

由于下载的语料库已经分类,我们将使用CategorizedPlaintextCorpusReader来读取和加载所给的语料库。用这种方式来获取正面评论和负面评论。

2.读取语料库。我们需要知道从Cornell上下载的文件解压缩后的Reviews文件夹的绝对路径,添加以下四行代码:

第一行是通过调用CategorizedPlaintextCorpusReader构造函数来读取语料库。从左到右的三个参数分别是计算机上txt_sentoken文件夹的绝对路径,txt_sentoken文件夹中的所有示例文档名以及给定语料库中的类别(在本例中为pos和neg)。仔细观察,你会发现这三个参数都是正则表达式。接下来的两行将验证是否正确加载语料库,并打印出语料库的相关类别和文件名。运行该程序,你会看到以下内容:

3.现在已经确保了该语料库被正确加载,下面继续访问这两个类别中的任何一个示例文档。为此,我们首先创建一个列表,每个列表分别包含pos和neg两个类别的样本。添加以下两行代码:

reader.fileids()方法的参数为类别名称。你可以发现,以上两行代码的目的是直接明了的。

4.现在我们从posFiles和negFiles的列表中随机选择一个文件。为此,我们需要利用Python random库中的randint()函数。我们添加如下几行代码,接下来会详细说明它们的具体功能:

第一行从random库中导入randint()函数。接下来分别从正面和负面类别评论集中随机选择一个文件。最后两行只是打印文件名。

5.既然我们已经选择了两个文件,现在开始访问这两个文件并逐句打印在控制台上。使用与第一个实例相同的方法来逐行打印输出。添加以下代码行:

这些for循环逐一读取每个文件,并逐行打印在控制台上。完整的实例输出如下所示:1.3.3 工作原理

这个实例的典型组成部分是NLTK中的CategorizedPlaintextCorpusReader类。由于下载的语料库已经分好类别,我们只需要在创建reader对象时提供适当的参数。实现CategorizedPlaintextCorpusReader类是从内部将样本加载到合适的位置(在该例中为pos和neg)。1.4 计算布朗语料库中三种不同类别的特殊疑问词

布朗语料库是NLTK数据包的一部分,是布朗大学最古老的文本语料库之一。它包含500个文本的集合,大致分为15个不同的类型/类别,如新闻、笑话、宗教等。这个语料库是纯文本分类语料库的典范,其中每个文本已经被分配了相应的主题/概念(有时是重叠的)。因此,你对它做的任何分析都与它对应的主题相一致。1.4.1 准备工作

这个实例的目标是对任意一个给定的语料库执行一个简单的计数任务。在这个任务中将使用NLTK库的FreqDist对象。我们将在下一个实例中更详细地介绍FreqDist,这里只关注它的应用。1.4.2 如何实现

1.创建一个名为Brown WH.py的新文件,首先添加以下导入语句:

我们已经导入了NLTK库和布朗语料库。

2.接下来,检查语料库中的所有类别,并从中任意选择三个类别来执行我们的任务:

函数brown.categories()调用将返回布朗语料库中所有类别的列表。当运行这一行时,你会看到如下输出:

3.现在我们从这张列表中挑选出三种类别——小说(fiction)、笑话(humor)和爱情故事(romance),并从这三个类型文本中获取疑问词(whwords)用于后续计算:

我们已经创建了一个包含3种所选类别的列表和一个包含7个疑问词的列表。列表可长可短,取决于你认为哪些是疑问词。

4.由于已生成需要计算的类别和单词列表,我们通常使用for循环来进行迭代并优化代码行数。首先我们在类别列表上编写一个for迭代器:

这四行代码只在类别列表上进行迭代,并将每个类别的整个文本作为连续列表词加载到genre_text变量中。

5.接下来,我们将使用NLTK库的FreqDist对象进行一个复杂的简短声明。现在我们了解一下它的语法和广义输出结果:

FreqDist()函数接收一个单词列表并返回一个对象,该对象包含映射词(map word)及其在输入单词列表中的相应频率。这里,fdist对象将包含genre_text单词列表中每个词条(unique words)的频率。

6.下一步我们将访问由FreqDist()函数返回的fdist对象,并得到每个疑问词的计数。

迭代疑问词列表,将每个疑问词作为索引访问fdist对象,获得所有这些疑问词的频率/计数,并将它们打印出来。运行完整的程序后会得到如下输出:1.4.3 工作原理

在分析控制台的输出时,我们可以清楚地看到3种所选类别的所有7个疑问词的计数。通过计算疑问词的数量,我们可以在一定程度上衡量给定文本是否包含较多的关系从句或问句。同样,已知一个包含重要词汇的本体列表,我们可以通过词频计算来了解给定文本与该本体的相关性。词频计算和计数分布分析是所有文本分析中最古老、最简单、最流行的技巧之一。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载