Spark NLPは、Apache Sparkの上に構築された最先端の自然言語加工ライブラリです。分散環境で簡単にスケーリングする機械学習パイプラインに、シンプルでパフォーマンスと正確なNLPアノテーションを提供します。
Spark NLPには、 200を超える言語で83000以上の事前に処理されたパイプラインとモデルが付属しています。また、トークン化、単語セグメンテーション、スピーチの一部のタグ付け、単語と文の埋め込み、名前付きエンティティ認識、依存関係の分割、スペルチェック、テキスト分類、センチメント分類、トークン分析、機械翻訳(+180言語)、要約、質問、質問の回答、テキストの質問、テキストの分類、イメージ、キャプション、キャプチャのイメージなどのタスクも提供しています。 NLPタスク。
Spark NLP is the only open-source NLP library in production that offers state-of-the-art transformers such as BERT , CamemBERT , ALBERT , ELECTRA , XLNet , DistilBERT , RoBERTa , DeBERTa , XLM-RoBERTa , Longformer , ELMO , Universal Sentence Encoder , Llama-2 , M2M100 , BART , Instructor , E5 , Google T5 , MarianMT , OpenAI GPT2 , Visionトランス(VIT) 、 Openai Whisper 、 Llama 、 Mistral 、 Phi 、 QWen2など、 PythonとRだけでなく、 Apache Sparkをネイティブに拡張することにより、大規模なJVMエコシステム( Java 、 Scala 、およびKotlin )にも多くのものがあります。
Spark NLPは、さまざまな一般的なフレームワークからモデルをインポートするための簡単なサポートを提供します。
この幅広いサポートにより、さまざまなソースのモデルをSpark NLPワークフローにシームレスに統合し、既存の機械学習エコシステムとの柔軟性と互換性を向上させることができます。
ユーザーのドキュメントと例については、公式Spark NLPページ:https://sparknlp.org/をご覧ください
これは、PythonとPysparkでSpark NLPの事前訓練を受けたパイプラインを使用する方法の簡単な例です。
$ java -version
# should be Java 8 or 11 (Oracle or OpenJDK)
$ conda create -n sparknlp python=3.7 -y
$ conda activate sparknlp
# spark-nlp by default is based on pyspark 3.x
$ pip install spark-nlp==5.5.2 pyspark==3.3.1 PythonコンソールまたはJupyter Python3カーネル:
# Import Spark NLP
from sparknlp . base import *
from sparknlp . annotator import *
from sparknlp . pretrained import PretrainedPipeline
import sparknlp
# Start SparkSession with Spark NLP
# start() functions has 3 parameters: gpu, apple_silicon, and memory
# sparknlp.start(gpu=True) will start the session with GPU support
# sparknlp.start(apple_silicon=True) will start the session with macOS M1 & M2 support
# sparknlp.start(memory="16G") to change the default driver memory in SparkSession
spark = sparknlp . start ()
# Download a pre-trained pipeline
pipeline = PretrainedPipeline ( 'explain_document_dl' , lang = 'en' )
# Your testing dataset
text = """
The Mona Lisa is a 16th century oil painting created by Leonardo.
It's held at the Louvre in Paris.
"""
# Annotate your testing dataset
result = pipeline . annotate ( text )
# What's in the pipeline
list ( result . keys ())
Output : [ 'entities' , 'stem' , 'checked' , 'lemma' , 'document' ,
'pos' , 'token' , 'ner' , 'embeddings' , 'sentence' ]
# Check the results
result [ 'entities' ]
Output : [ 'Mona Lisa' , 'Leonardo' , 'Louvre' , 'Paris' ]その他の例については、私たちの専用の例をご覧になって、すべてのSpark NLPユースケースを紹介してください!
これは、Apache Spark / Pysparkメジャーバージョンへの対応するSpark NLP Mavenパッケージのチートシートです。
| アパッチスパーク | CPUのSpark NLP | GPUのSpark NLP | aarch64(linux)のSparkNLP | Apple SiliconのSpark NLP |
|---|---|---|---|---|
| 3.0/3.1/3.2/3.3/3.4/3.5 | spark-nlp | spark-nlp-gpu | spark-nlp-aarch64 | spark-nlp-silicon |
| 機能を開始します | sparknlp.start() | sparknlp.start(gpu=True) | sparknlp.start(aarch64=True) | sparknlp.start(apple_silicon=True) |
注: M1/M2とAArch64はexperimentalサポートを受けています。これらのアーキテクチャへのアクセスとサポートはコミュニティによって制限されており、それらを互換性のあるものにするために、ほとんどの依存関係を自分で構築する必要がありました。これらの2つのアーキテクチャをサポートしていますが、一部の環境では機能しない場合があります。
パイプラインとモデルの使用の簡単な例については、公式のドキュメントをご覧ください
Spark NLP 5.5.2はApache Spark 3.4の上に構築されていますが、Apache Spark 3.0.x、3.1.x、3.2.x、3.3.x、3.4.x、および3.5.xを完全にサポートしています
| Spark NLP | Apache Spark 3.5.x | Apache Spark 3.4.x | Apache Spark 3.3.x | Apache Spark 3.2.x | Apache Spark 3.1.x | Apache Spark 3.0.x | Apache Spark 2.4.x | Apache Spark 2.3.x |
|---|---|---|---|---|---|---|---|---|
| 5.5.x | はい | はい | はい | はい | はい | はい | いいえ | いいえ |
| 5.4.x | はい | はい | はい | はい | はい | はい | いいえ | いいえ |
| 5.3.x | はい | はい | はい | はい | はい | はい | いいえ | いいえ |
| 5.2.x | はい | はい | はい | はい | はい | はい | いいえ | いいえ |
| 5.1.x | 部分的に | はい | はい | はい | はい | はい | いいえ | いいえ |
| 5.0.x | はい | はい | はい | はい | はい | はい | いいえ | いいえ |
リリースノートからSpark NLPバージョンの詳細をご覧ください。
| Spark NLP | Python 3.6 | Python 3.7 | Python 3.8 | Python 3.9 | Python 3.10 | Scala 2.11 | Scala 2.12 |
|---|---|---|---|---|---|---|---|
| 5.5.x | いいえ | はい | はい | はい | はい | いいえ | はい |
| 5.4.x | いいえ | はい | はい | はい | はい | いいえ | はい |
| 5.3.x | いいえ | はい | はい | はい | はい | いいえ | はい |
| 5.2.x | いいえ | はい | はい | はい | はい | いいえ | はい |
| 5.1.x | いいえ | はい | はい | はい | はい | いいえ | はい |
| 5.0.x | いいえ | はい | はい | はい | はい | いいえ | はい |
4.x SparkNLPバージョンの詳細を公式ドキュメントでご覧ください
Spark NLP 5.5.2がテストされており、次のランタイムと互換性があります。
| CPU | GPU |
|---|---|
| 14.1 / 14.1 ml | 14.1 ml&gpu |
| 14.2 / 14.2 ml | 14.2 ml&gpu |
| 14.3 / 14.3 ml | 14.3 ml&gpu |
| 15.0 / 15.0 ml | 15.0 ml&gpu |
| 15.1 / 15.0 ml | 15.1 ml&gpu |
| 15.2 / 15.0 ml | 15.2 ml&gpu |
| 15.3 / 15.0 ml | 15.3 ml&gpu |
| 15.4 / 15.0 ml | 15.4 ml&gpu |
私たちは古いランタイムと互換性があります。完全なリストのために、私たちの公式ドキュメントでDataBricksのサポートをサポートしてください
Spark NLP 5.5.2がテストされており、次のEMRリリースと互換性があります。
| EMRリリース |
|---|
| EMR-6.13.0 |
| EMR-6.14.0 |
| EMR-6.15.0 |
| EMR-7.0.0 |
| EMR-7.1.0 |
| EMR-7.2.0 |
古いEMRリリースと互換性があります。完全なリストについては、公式ドキュメントでEMRサポートを確認してください
Amazon EMR 6.Xの完全なリストリリースAmazon EMR 7.Xリリースの完全なリスト
注:EMR 6.1.0および6.1.1はサポートされていません。
コマンドラインを介してSpark-NLPパッケージをインストールするには、公式ドキュメントからこれらの指示に従ってください
Spark NLPは、Apache Spark 3.0.x、3.1.x、3.2.x、3.3.x、および3.4.xバージョンを使用している場合、Scala 2.12.15をサポートします。当社のパッケージはMaven Centralに展開されます。アプリケーションの依存関係としてパッケージを追加するには、公式ドキュメントからこれらの指示に従うことができます。
興味がある場合は、Spark NLPのシンプルなSBTプロジェクトがあり、プロジェクトで使用する方法について導きますSpark NLP SBT S5.2R
Spark NLPは、Python 3.7.x以上を主要なPysparkバージョンに応じてサポートしています。公式ドキュメントでPythonの利用可能なすべてのインストールを確認してください
ソースから瓶をコンパイルするには、公式ドキュメントからこれらの指示に従ってください
サポートされているプラットフォームでSpark NLPを使用する方法に関する詳細な手順については、公式ドキュメントを参照してください。
| プラットフォーム | サポート言語 |
|---|---|
| アパッチ・ツェッペリン | Scala、Python |
| Jupyterノートブック | Python |
| Google Colabノートブック | Python |
| Kaggleカーネル | Python |
| DataBricksクラスター | Scala、Python |
| EMRクラスター | Scala、Python |
| GCP Dataprocクラスター | Scala、Python |
Spark NLPライブラリとすべての事前に訓練されたモデル/パイプラインは、インターネットにアクセスできないまま完全にオフラインで使用できます。 Spark NLPをオフラインで使用するには、公式ドキュメントからこれらの指示を確認してください。
Spark Properties Configurationを介してSpark NLP構成を変更できます。公式ドキュメントからこれらの指示を確認してください。
Spark NLPでは、S3の場所を以下に定義できます。
NerDLApproachで使用されるTensorflowグラフを保存します公式ドキュメントからこれらの指示を確認してください。
もっと例が必要ですか?すべてのSpark NLPユースケースを紹介するための専用Spark NLP Examplesリポジトリをご覧ください!
また、Spark NLPがStreamlitによって構築されたアクションを確認することを忘れないでください。
ここで記事とビデオのページを確認してください
Spark NLPライブラリのために引用できる論文を公開しました。
@article { KOCAMAN2021100058 ,
title = { Spark NLP: Natural language understanding at scale } ,
journal = { Software Impacts } ,
pages = { 100058 } ,
year = { 2021 } ,
issn = { 2665-9638 } ,
doi = { https://doi.org/10.1016/j.simpa.2021.100058 } ,
url = { https://www.sciencedirect.com/science/article/pii/S2665963.2.300063 } ,
author = { Veysel Kocaman and David Talby } ,
keywords = { Spark, Natural language processing, Deep learning, Tensorflow, Cluster } ,
abstract = { Spark NLP is a Natural Language Processing (NLP) library built on top of Apache Spark ML. It provides simple, performant & accurate NLP annotations for machine learning pipelines that can scale easily in a distributed environment. Spark NLP comes with 1100+ pretrained pipelines and models in more than 192+ languages. It supports nearly all the NLP tasks and modules that can be used seamlessly in a cluster. Downloaded more than 2.7 million times and experiencing 9x growth since January 2020, Spark NLP is used by 54% of healthcare organizations as the world’s most widely used NLP library in the enterprise. }
}
}5.5.2 あらゆる種類の貢献に感謝します。
リポジトリをクローンして、プルリケストを送信してください!または、このレポで問題を直接作成します。
http://johnsnowlabs.com