赞
踩
全文共3103字,预计学习时长6分钟
图片来源:unsplash.com/@frrn
Spark NLP库已成为一种流行的AI框架,可为项目提供速度和可扩展性。
人工智能在企业中的应用
2019年,O'Reilly发布了《人工智能在企业中的应用》年度报告。该项报告针对多个垂直行业的1300名从业人员进行了调查,向受访者询问他们的企业在生产中有哪些能带来收入的AI项目。
该报告对当今公司如何使用AI的真实情况进行分析,并点评如何将其快速扩展到深度学习、人机回圈、知识图谱和强化学习领域。
该调查要求受访者列出他们使用的所有ML或AI框架和工具。以下是其答案归纳:
Spark NLP库才发布一年半,就已经在所有AI框架和工具中名列第七位最受欢迎的AI工具(注意“其他开源工具”和“其他云服务”),也是迄今为止使用最广泛的NLP(神经语言程序)库,是spaCy的两倍。事实上,在本次调查中,Spark NLP是继scikit-learn、TensorFlow、Keras、PyTorch之后最受欢迎的AI库。
最先进的精度、速度和可扩展性
这项调查与过去一年中在医疗保健、金融、生命科学和招聘中成功使用Spark NLP的公共案例研究一致。Spark NLP之所以能被快速采用,根本原因还在于近年来在NLP领域发生的重大转变。
准确性
在过去3-5年中,深度学习在自然语言处理方面应用的兴起意味着在流行库中实施的算法,如spaCy、Stanford CoreNLP、nltk和OpenNLP等等,并不如最新的科学论文所说的那么准确。
Spark NLP的目标是提供最先进的准确性和速度,因此从业人员一直在不断寻求产品化的最新科学进步。以下是迄今为止的成果:
速率
为了使Apache Spark的性能更接近裸机,我们在单个机器和集群上进行了优化,这意味着常见的NLP流水线可以比传统库允许的固有设计限制快几个数量级。
比较生产级NLP库于一年前在O'Reilly Radar上发布,这是迄今为止最全面的基准测试。左侧是在单个Intel i5,4核,16 GB内存机器上训练简单管道(句子边界检测,标记化和词性标记)运行时的对比图:
能够利用GPU进行培训和推理已成为筹码。使用TensorFlow进行深度学习使Spark NLP能够充分利用现代计算机平台,从nVidia的DGX-1到英特尔的Cascade Lake处理器。无论是否使用某些深度学习技术,较旧的库都需要重写以利用这些新的硬件创新,这些创新可以将NLP流水线的速度和规模提高一个数量级。
可扩展性
能够将模型训练、推理和完整AI管道从本地机器扩展到具有很少或没有代码更改的集群,这也成为了筹码。本地构建在Apache Spark ML上使Spark NLP可以在任何Spark集群、内部部署或任何云提供商上扩展。借助Spark的分布式执行计划和缓存,可以进行加速优化,该计划和缓存已经在当前的大部分存储和计算平台上进行了测试。
企业采用Spark NLP的其他驱动因素
生产级别的代码库
Spark NLP致力于为企业提供工作软件。与AllenNLP和NLP Architect等面向研究的库相比,这是Spark NLP的首要目标。
开放源码许可
选择坚持使用Apache 2.0许可证,以便可以自由使用库,包括在商业环境中使用。这与Stanford CoreNLP形成鲜明对比,Stanford CoreNLP需要用于商业用途的付费许可证,或者某些spaCy模型使用的存在问题的ShareAlike CC许可证。
完整的PYTHON,JAVA和SCALA API'
支持多种编程语言不仅可以增加库的受众,还能够利用已实施的模型,而无需在运行时环境之间来回移动数据。例如,使用仅限Python的spaCy调用数据,需要将数据从JVM进程移动到Python进程——这导致架构更复杂,而且通常比必要的慢得多。
频繁发布
除社区贡献外,Spark NLP还由一个完整的核心团队进行积极开发。每月发布两次——2018年发布了26个新版本。
入门
PYTHON
Spark NLP 2.0设计之初,主要目标是让人们在不了解它的情况下也能享受到Spark和TensorFlow的好处。用户不必知道Spark ML估算器或变换器是什么,或者TensorFlow图或会话是什么。
如果你正在构建自己的自定义模型或图形,这些仍然可用,尽管它们现在面向前端,以最少的时间和学习曲线完成工作。Spark NLP 2.0还添加了15个预先训练好的管道和模型,涵盖了最常见的使用案例。
为Python安装Spark NLP需要安装单行pip或安装conda。
安装页面传送门:https://nlp.johnsnowlabs.com/docs/en/install
实时项目例程还可以在Zeppelin,SageMaker,Azure,GCP,Cloudera和vanilla Spark上使用该库,包括 Kubernetes内外。
安装完成后,以下是运行情感分析需要:
以下是使用BERT嵌入运行命名实体识别所需的全部内容:
这些示例中的管道对象有两个关键方法——带字符串的annotate(),个字符串,和带数据帧的transform()。这使您可以扩展此代码,以处理任何Spark群集上的大量文本。
SCALA
Spark NLP用Scala编写,可直接在Spark数据帧上运行,无需复制数据,同时充分利用Spark执行计划程序和其他优化。因此,对于Scala和Java开发人员来说,使用库不过是轻而易举。
该库在Maven Center上发布,因此只需在Maven或SBT文件中添加依赖项即可安装。如果你还想安装Spark NLP的OCR(对象字符识别)功能,则还需要添加第二个依赖项。
安装完成后,拼写检查句子的方法如下:
Scala和Python API在每个版本中保持相似并且100%完整。
在hood下
在上面分享的几行代码中,有许多内容可供使用,而且你可以为其他应用程序自定义很多代码。Spark NLP针对特定领域的NLP模型进行了大量优化,例如Spark NLP for Healthcare商业扩展。
案例传送门:https://www.johnsnowlabs.com/spark-nlp-health/
因此所有用于定义预训练模型、管道和资源的工具都在公共和文档化的API中。
以下是使用上一节中的BERT Python代码进行命名实体识别所采取的主要步骤:
1. sparknlp.start()开启一个新的sparknlp部分,如果没有的话,则启动一个新的Spark会话,并返回。
2. PretrainedPipeline()加载explain_document_dl管道的英语版本,预先训练的模型以及它所依赖的嵌入。
3. 储存在本地并缓存。
4. TensorFlow在运行Spark的同一JVM进程中初始化。加载预训练的嵌入和深度学习模型(如NER)。如果在群集上运行,模型将自动分发和共享。
5. annotate()调用运行一个NLP推理管道,它会激活每个阶段的算法(标记化,POS等)。
6. NER阶段在TensorFlow上运行,使用一个具有bi-LSTM层的神经网络用于标记,使用CNN作为字符。
7.嵌入用于在NER推理过程中将上下文令牌转换为向量。
8.结果对象是一个普通的旧本地Python字典。
试一试
Spark NLP主页包含示例,文档和安装指南。
如果你希望自己探索样本笔记本,Spark NLP Workshop有一个预先构建的Docker容器,通过键入3个单行程序,可以在本地计算机上运行完整的环境。
传送门:https://github.com/JohnSnowLabs/spark-nlp-workshop
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。