《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具

10 高级工具

  • 10.1 使用Apache Hadoop作为存储框架
  • 10.2 使用Apache Spark作为数据处理框架
  • 10.3 使用Apache Flink作为数据实时处理框架
  • 10.4 Python中的可视化类库

本附录重点介绍如何在NLP应用程序中使用各种框架。我们将查看这些框架的概述,并介绍它们的基本特性以及它们为您做了什么。我们不会看到每个框架的详细架构。这里,目的是让您了解可以一起用于构建各种NLP应用程序的不同工具和框架。我们还将研究可视化库,它可以帮助您开发仪表板。

10.1 使用Apache Hadoop作为存储框架

Apache Hadoop是广泛使用的框架之一。Hadoop允许使用一个简单的编程模型在商品计算机集群之间对大型数据集进行分布式处理。Hadoop使用了MapReduce的概念。MapReduce将输入查询分为几个小部分,并将它们与存储在Hadoop分布式文件系统(HDFS)上的数据并行处理。Hadoop具有以下功能:
它是可伸缩的
它是有成本效益的
它提供了一个强大的生态系统
它提供更快的数据处理速度Hadoop可以用作NLP应用程序的存储框架。如果要存储大量数据,那么可以使用多节点Hadoop集群并将数据存储在HDF上。因此,许多NLP应用程序使用HDF作为历史数据。Hadoop向数据发送一个程序,数据在本地处理它。这些特性使Hadoop具有良好的速度。注意Hadoop在磁盘级别执行操作,这很慢,但是我们并行执行操作,所以数据处理很快。现在,您可能认为磁盘操作比内存操作慢,但是我们有大量的数据,这些数据不会立即装入内存。因此,这种使用多节点集群本地处理数据并并行执行操作的方法给了我们一个很好的吞吐量。Hadoop的核心架构包括以下组件:
HDFS
MapReduce
YARN
Hadoop common utilities您可以在图01中看到Hadoop的体系结构:
《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具_第1张图片
您可以在图02中看到Hadoop生态系统:
《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具_第2张图片
对于实时数据处理,Hadoop有点慢,效率也不是很高。别担心!我们有另一个框架来帮助我们进行实时数据处理。

许多NLP应用程序使用Hadoop进行数据存储,因为它可以很好地处理数据处理。在个人层面上,我使用Hadoop将我的语料库存储在HDF上。然后,我使用spark mllib开发了机器学习(ML)算法。

对于实时数据处理,我使用Apache Flink。为了进行试验,我为您提供了建立单节点Hadoop集群的步骤。用于此的Github链接是
https://github.com/jalajthanaki/NLPython/blob/master/Appendix3/Installationdocs
/App3_3_Hadoop_installation.md.您可以在本文档中找到Hadoop的一些命令:
h t t p s ?/d z o n e . c o m /a r t i c l e s /t o p - 10- h a d o o p - s h e l l - c o m m a n d s .
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-comm
on/FileSystemShell.html

10.2 使用Apache Spark作为数据处理框架

Apache Sark是一个大规模的数据处理框架。它是一种快速通用的发动机。它是最快的处理框架之一。spark可以执行内存数据处理以及磁盘数据处理。Spark的重要特点如下:速度:ApacheSark可以在内存中运行比Hadoop MapReduce快100倍的程序,或者在磁盘上运行比Hadoop MapReduce快10倍的程序。

易用性:有多种API可用于斯卡拉、Java、Skar和R开发应用程序

一般性:Spark提供了结合SQL、流和复杂分析的功能

无处不在:Spark可以在Hadoop、Meos、Standalone或云中运行。您可以通过包括HDF、Cassandra、HBase和S3访问不同的数据源。我用Spark用MLLIB训练我的模型。我已经使用了Spice Java和PyStaseAPI。结果是您可以重定向到HDF。我已经将我训练过的模型保存在HDF上,然后在需要时加载它们。Spark真的可以加速你的处理时间。我经历过这一切。这背后的原因是它的内存处理体系结构。Spark架构如图03所示:
《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具_第3张图片
您可以在图04中看到Spark生态系统:
《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具_第4张图片
您可以看到此Github链接上的安装步骤:
https://github.com/jalajthanaki/NLPython/blob/master/Appendix3/Installationdocs
/App3_4_Spark_installation.md您可以在以下链接中找到更多信息:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/
h t t p s ?/w w w . g i t b o o k . c o m /b o o k /j a c e k l a s k o w s k i /m a s t e r i n g - a p a c h e - s p a r k /d
e t a i l
http://spark.apache.org/
http://spark.apache.org/docs/latest/ml-guide.html
http://spark.apache.org/docs/latest/mllib-guide.html

10.3 使用Apache Flink作为数据实时处理框架

ApacheFlink用于实时流式处理和批处理。我告诉过你我们不应该担心实时框架。原因是我们有一个Flink框架。

Flink是一个开放源码流处理框架,用于分布式、高性能、始终可用和准确的数据流应用程序。你可以看到更多关于Flink的信息
https://flink.apache.org/.
Flink 一定会有一个非常美好的未来。您可以在图05中看到:
《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具_第5张图片
Flink是一个全新的框架。如果你想进行实时情绪分析或者做一个真正的推荐引擎,那么Flink是非常有用的。您可以参考以下视频,了解HDFS、Flink、Kappa和Lamda架构是如何使用的。这是必看视频:
https://www.youtube.com/watch?v=mYGF4BUwtaw
本视频帮助您了解各种框架如何融合在一起以开发一个好的实时应用程序。

10.4 Python中的可视化类库

可视化是用于跟踪特定流程和应用程序结果的重要活动之一。我们在第6章中使用了Matplotlib,高级特征工程和NLP算法,以及其他章节。除了matplotlib之外,我们还可以使用各种可视化库:
Matplotlib:它使用简单,非常有用
bokeh:它提供定制的主题和图表
pygal:你可以用这个制作很酷的图表。
可以使用以下链接引用每个库。所有图书馆都写过文档,这样您就可以检查它们并开始制作自己的图表。
你可以在https://matplotlib.org/上找到更多关于matplotlib的信息。
您可以在http://bokeh.pydata.org/en/latest/docs/gallery.html上找到更多关于bokeh的信息。
有关Pygal的文档,请访问http://pygal.org/en/stable/documentation/index.html。总结

这个框架概述将帮助您了解如何在NLP应用程序中使用各种框架。Hadoop用于存储。spark mllib用于开发机器学习模型,并将训练后的模型存储在hdfs上。我们可以在需要时通过加载来运行经过培训的模型。当实时分析和数据处理进入画面时,Flink使我们的更容易。实时情感分析、文档分类、用户推荐引擎等是您可以使用Flink构建的一些实时应用程序。Matplotlib用于开发机器学习模型。Pygal和Bokeh用于为最终用户制作精美的仪表盘。

致谢
《Python自然语言处理》1 2 3,作者:【印】雅兰·萨纳卡(Jalaj Thanaki),是实践性很强的一部新作。为进一步深入理解书中内容,对部分内容进行了延伸学习、练习,在此分享,期待对大家有所帮助,欢迎加我微信(验证:NLP),一起学习讨论,不足之处,欢迎指正。
在这里插入图片描述

参考文献


  1. https://github.com/jalajthanaki ↩︎

  2. 《Python自然语言处理》,(印)雅兰·萨纳卡(Jalaj Thanaki) 著 张金超 、 刘舒曼 等 译 ,机械工业出版社,2018 ↩︎

  3. Jalaj Thanaki ,Python Natural Language Processing ,2017 ↩︎

你可能感兴趣的:(2017年度)