自然言語処理
John Snow LabsとDatabricksとのパートナーシップを通じて、Spark MLやspark-nlpのような人気のオープンソースライブラリ、あるいはプロプライエタリライブラリを用いてDatabricksで自然言語処理タスクを実行することができます。
Hugging Faceを使用したNLPの例については、「追加リソース」を参照してください
Spark ML を使用したテキストからの特徴作成
Spark ML には、テキスト列から特徴を作成するためのさまざまなテキスト処理ツールが含まれています。 Spark ML を使用した Spark ML パイプラインで、モデルトレーニングアルゴリズムのための入力特徴量を直接テキストから作成することができます。Spark MLではさまざまな テキストプロセッサをサポートしており、 トークン化、ストップワード処理、word2vec、特徴量のハッシュ化などが含まれています。
Spark NLP を使用したトレーニングと推論
オープンソースのSpark NLPライブラリを用いることで、Sparkにおける自然言語処理に数多くのディープラーニング手法を用いてスケールアウトすることができます。このライブラリは、付属の アノテーターを用いた、トークン化、固有表現認識、ベクトル化のような標準的な自然言語処理をサポートしています。また、BERTやT5 Marionのような Spark NLPのトランスフォーマーに基づく数多くの事前学習済みディープラーニングモデルを用いた、固有表現認識、翻訳、テキスト生成の実行や要約も可能です。
CPU で Spark NLP を使用してバッチで推論を実行する
Spark NLP には、最小限のコードで使用できる多くの事前トレーニング済みモデルが用意されています。 このセクションには、機械翻訳に Marian Transformer を使用する例が含まれています。すべての例については、 Spark NLP のドキュメントを参照してください。
必要条件
com.johnsnowlabs.nlp:spark-nlp_2.12:4.1.0
などの Spark NLP の最新の Maven 座標を使用して、クラスターに Spark NLP をインストールします。クラスターは、このライブラリを機能させるためには、適切な Spark 設定オプションを設定して開始する必要があります。- Spark NLP を使用するには、クラスターに John Snow Labsからダウンロードした正しい
.jar
ファイルが必要です。互換性のある任意のランタイムを実行するクラスターを作成または使用できます。
機械翻訳のコード例
ノートブックセルで、sparknlp
Python ライブラリをインストールします。
%pip install sparknlp
翻訳用のパイプラインを構築し、サンプル テキストで実行します。
from sparknlp.base import DocumentAssembler
from sparknlp.annotator import SentenceDetectorDLModel, MarianTransformer
from pyspark.ml import Pipeline
document_assembler = DocumentAssembler().setInputCol("text").setOutputCol("document")
sentence_detector = SentenceDetectorDLModel.pretrained("sentence_detector_dl", "xx") \
.setInputCols("document").setOutputCol("sentence")
marian_transformer = MarianTransformer.pretrained() \
.setInputCols("sentence").setOutputCol("translation")
pipeline = Pipeline().setStages([document_assembler, sentence_detector, marian_transformer])
data = spark.createDataFrame([["You can use Spark NLP to translate text. " + \
"This example pipeline translates English to French"]]).toDF("text")
# Create a pipeline model that can be reused across multiple data frames
model = pipeline.fit(data)
# You can use the model on any data frame that has a “text” column
result = model.transform(data)
display(result.select("text", "translation.result"))
例: Spark NLP と MLflow を使用した名前付きエンティティ認識モデル
このノートブックの例は、Spark NLP を使用して名前付きエンティティ認識モデルをトレーニングする方法を示しています。 モデルを MLflow に保存し、そのモデルをテキストの推論に使用します。 その他の自然言語処理モデルのトレーニング方法を学ぶには、Spark NLP の John Snow Labs ドキュメントを参照してください。