企业现在最流行什么?Spark NLP必须有姓名

全文共3103字,预计学习时长6分钟前端

图片来源:unsplash.com/@frrngit

Spark NLP库已成为一种流行的AI框架,可为项目提供速度和可扩展性。github

人工智能在企业中的应用算法

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,加入读者圈,一块儿讨论最新鲜的人工智能科技哦~)

相关文章
相关标签/搜索