怎么进行Spark NLP使用入门

技术怎么进行Spark NLP使用入门怎么进行Spark NLP使用入门,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。AI在企业中的应用关于AI在企业中应用

如何开始使用Spark NLP?我相信很多没有经验的人都不知所措。因此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。

2019年2月发布了

AI在企业中的应用

年度O 'Reilly企业AI应用报告。该报告调查了多个垂直行业的1300多名员工。调查内容包括受访企业生产环境中的AI项目,这些AI项目在企业中的应用情况,以及AI如何快速扩展为深度学习、人机互助系统、知识图谱和强化学习。

调查包括受访企业主要使用ML和AI的框架和工具。下图显示了用法摘要:

怎么进行Spark  NLP使用入门

其中,Spark NLP在所有框架和工具中排名第7,是目前为止最受欢迎的NLP库,其受欢迎程度是spaCy的两倍。事实上,除了其他开源工具和其他云服务,Spark NLP是继scikit-learn、TensorFlow、Keras和PyTorch之后最受欢迎的AI工具。

高准确度,高性能以及扩展性

本次调查与近年来Spark NLP在医疗、金融、生命科学、招聘等领域的应用越来越多是一致的。根本原因是近几年NLP技术发生了重大变化。

00-1010在过去的3-5年间,自然语言领域深度学习的兴起使得算法的准确率越来越高,而spaCy、Stanford CoreNLP、ntlp、OpenNLP等传统算法在准确率上显然无法与这些最新的研究成果相比。

为了追求更高的精度和性能,业界不断生产最新的研究成果。下图是目前为止的总结(基于en_core_web_lg标准测试的F1值):

怎么进行Spark  NLP使用入门

高准确度

由于Apache Spark的优化,无论是单机还是集群的性能都非常接近裸机,Spark NLP的性能可以比传统AI库快一个数量级,这受到它们设计的限制。

一年前,O'Reily发布了迄今为止最全面的产品级NLP库性能比较测试。下图左侧是spaCy和Spark NLP中简单流水训练的性能对比图。该测试基于单机配置(英特尔I5、4核、16GB内存):

怎么进行Spark  NLP使用入门

GPU是用于训练和推理编程的深度学习领域的主要趋势。使用TensorFlow进行深度学习使Spark NLP能够充分利用现代计算机平台——从nVida的DGX-1到英特尔的Cascade Lake处理器、传统库,无论是否使用深度学习技术,都需要重写代码才能充分利用这些新硬件的特性,而正是这些新硬件的特性将NLP性能提升了一个数量级。

00-1010在深度学习领域,模型训练、推理以及整个AI流水线能否从单机无缝迁移到集群变得越来越关键。spark NPL得益于Apache spark ML的原生构造,可以在Spark集群中任意扩展,Spark的分布式执行计划和Cache优化也可以帮助提升Spark NLP的性能。

00-1010

高性能

不同于面向研究的NLP库,如AllenNLP和NLP Architect。我们致力于为企业提供我们的Spark NLP库。

可扩展性

Spark NLP使用的是Apache 2.0许可协议,与SpaCy模型使用的Stanford CoreNLP(商业化需要付费)和ShareAlike CC许可协议不同。该协议完全免费商业化。

00-1010支持多语言编程,既提高了Spark NLP的受众,又避免了使用过程中的数据交换。比如SpaCy只支持Python,用户在使用过程中需要在JVM进程和Python进程之间交换数据,会导致架构复杂,性能下降。

00-1010除了社区贡献,Spark NLP还有一个专门的开发团队。Spark NLP基本上一个月发布两次。2018年,一共发布了26个版本。非常欢迎Spark NLP社区贡献代码、文档、模型和问题。

产品化的其他工作

产品级别的代码

Spark NLP 2.0其中一个主要的设计目标是用户可以在不了解Spark或TensorFlow的情况下使用Spark和TensorFlow平台。用户不需要知道Spark ML的估计器和转换器是什么,也不需要知道tensorFlow是什么。

graph或者session, 用户也可以使用Spark NLP 构建自己的模型,但是能够以最少时间和学习曲线完成,Spark NLP内置的15种训练流水和模型可以覆盖大部分的用户场景。
用户可以通过pip或者conda安装Spark NLP的python版本,Jupyter以及Databricks的安装以及配置细节可以参考 安装页面 (https://nlp.johnsnowlabs.com/docs/en/install), Spark NLP 被广泛应用在各种组件当中,包括Zepplin, SageMaker, Azure,GCP, Cloudera以及Vanilla spark,支持K8S和非K8S环境。
下图是展示的是情绪分析的简单例子:

怎么进行Spark NLP使用入门

下图是利用Bert模型训练命名实体识别的例子:

怎么进行Spark NLP使用入门

上述例子代码能够在spark集群上处理大量文本,其中有两个关键的方法 - annotate(), 该方法以string类型作为输入, transform(), 该方法的数据输入是spark 的data frame。

Scala

Spark NLP是用Scala语言编写的, 可以直接操作Spark Data Frame, 在这过程中数据零拷贝,可以充分利用Spark执行计划以及其他优化,因此对于Scala和Java开发者,使用Spark NLP非常方便。

Spark NLP 可以Maven库中找到, 用户只要加上Spark NLP的依赖就可以使用它, 如果用户希望是有Spark NLP's OCR能力,需要安装额外的依赖。下图是个拼写检查的例子:

怎么进行Spark NLP使用入门

深入了解Spark NLP

Spark NLP为用户屏蔽许多复杂的细节,因此上面的代码片段都非常简单, 此外Spark NLP也提供了灵活性,用户可以根据自己的需求进行定制。Spark NLP针对训练领域的NLP模型做过深度优化。下面详细介绍Bert模型训练命名实体识别的Python代码:

  • sparknlp.start() 创建spark session。

  • PretrainedPipeline() 加载 explain_document_dl流水的英文版本, 预训练模型以及他们的依赖。

  • 启动TensorFlow, TensorFlow的进程跟spark的处于同一个JVM进程,加载预先训练的Embeddings和深度学习的模型(例如NER), 模型可以自动在集群上分发以及共享。

  • annotate() 启动NLP的推理流程,并且分发各个阶段的算法流程。

  • NER阶段运行在tensorflow上,分别采用双向LSTM的神经网络以及CNN

  • Embeddings在推理过程用来将contextual tokens转换为vectors

  • 最后结果以python字典的形式输出

GIVE IT A GO

Spark NLP主页包含大量的样例, 文档以及安装说明文档, 此外Spark NLP还提供了docker镜像, 用户可以很方便的在本地构建自己的环境。用户如果遇到任何问题, 用户可以登录Slack寻求帮助。

看完上述内容,你们掌握怎么进行Spark NLP使用入门的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79837.html

(0)

相关推荐

  • windows平台bugfree3.0.3搭建心得是什么

    技术windows平台bugfree3.0.3搭建心得是什么windows平台bugfree3.0.3搭建心得是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易

    攻略 2021年10月25日
  • Python五种Python解释器的表示什么

    技术Python五种Python解释器的表示什么这期内容当中小编将会给大家带来有关Python五种Python解释器的表示什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python

    攻略 2021年10月25日
  • 手把手带你刷二叉树,第一期)

    技术手把手带你刷二叉树,第一期) 手把手带你刷二叉树(第一期)https://labuladong.gitee.io/algo/2/18/21/读完本文,你不仅学会了算法套路,还可以顺便去 LeetCo

    礼包 2021年11月12日
  • 盖的繁体字,情定豪气义盖天下繁体怎么写

    技术盖的繁体字,情定豪气义盖天下繁体怎么写“定”的繁体字就是“定”盖的繁体字。定,ding,从宀从正。正家而天下定。
    不动的,不变的:~额。~价。~律。~论。~期。~型。~义。~都(dū)。~稿。~数(shù)(a.规定

    生活 2021年10月21日
  • Matlab-两种常用绘图方式

    技术Matlab-两种常用绘图方式 Matlab-两种常用绘图方式前言
    在平时作业中经常需要对所获得的二维数据进行可视化,主要使用以下两种方法
    一、分图显示
    通过figure()划分每张图片
    x = 0

    礼包 2021年10月28日
  • 程序员是怎么阅读源码的

    技术程序员是怎么阅读源码的本篇内容介绍了“程序员是怎么阅读源码的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!React

    攻略 2021年10月22日