自然言語処理

Spark 機械学習や spark-nlp などの一般的な オープンソース ライブラリ、または John Snow Labs との Databricks パートナーシップによる独自のライブラリを使用して、Databricks で自然言語処理タスクを実行できます。

Hugging Faceを使用したNLPの例については、「 その他の技術情報」を参照してください。

Spark MLを使用したテキストからの特徴量作成

Spark 機械学習には、テキスト列から特徴を作成するためのさまざまなテキスト処理ツールが含まれています。 Spark 機械学習を使用して、モデル トレーニング アルゴリズムのテキストから Spark 機械学習パイプライン で直接入力特徴を作成できます。 Spark 機械学習は、トークン化、ストップワード処理、word2vec、特徴ハッシュなど、さまざまな テキスト プロセッサをサポートしています。

Spark NLPを使用したトレーニングと推論

オープンソースの Spark NLP ライブラリを使用して、Spark での自然言語処理のための多くのディープラーニング メソッドをスケール アウトできます。 このライブラリーは、トークン化、名前付きエンティティ認識、および付属の アノテーターを使用したベクトル化などの標準的な自然言語処理操作をサポートします。 また、BERT や T5 Marion などの Spark NLP のTransformers に基づく多くの事前トレーニング済みディープラーニング モデルを使用して、テキストの要約、名前付きエンティティ認識の実行、翻訳、およびテキストの生成を行うこともできます。

CPU上でSpark NLP を使用してバッチで推論を実行する

Spark NLP には、最小限のコードで使用できる事前トレーニング済みモデルが多数用意されています。 このセクションでは、機械翻訳にマリアントランスフォーマーを使用する例を示します。 例の完全なセットについては、 Spark NLP のドキュメントを参照してください。

要件

  • Spark NLP の最新の Maven 座標 ( com.johnsnowlabs.nlp:spark-nlp_2.12:4.1.0など) を使用して、クラスターに 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 のドキュメント を参照してください。

Spark NLP モデルのトレーニングと推論ノートブック

ノートブックを新しいタブで開く