自然言語処理技術
自然言語処理には、感情分析、トピック検出、言語検出、キー フレーズ抽出、ドキュメント分類など、多くのアプリケーションがあります。
具体的には、自然言語処理を使用して次のことができます。
- ドキュメントを分類します。 たとえば、機密またはスパムとしてラベルを付けることができます。
- 自然言語処理出力を使用して、後続の処理または検索を実行します。
- ドキュメント内のエンティティを識別してテキストを要約します。
- 識別されたエンティティを使用して、キーワードを使用してドキュメントにタグ付けします。
- タグを使用してコンテンツベースの検索と取得を行います。
- 識別されたエンティティを使用して、ドキュメントの主要なトピックを要約します。
- 検出されたトピックを使用して、ナビゲーション用のドキュメントを分類します。
- 選択したトピックに基づいて関連ドキュメントを列挙します。
- テキストセンチメントを評価して、肯定的または否定的なトーンを理解します。
テクノロジの進歩に応じて、自然言語処理を使用してテキスト データを分類および分析できます。 また、これを使用して、多様なドメイン間で解釈可能な AI 関数を強化することもできます。 言語モデルの統合により、自然言語処理の機能が大幅に強化されます。 GPT や BERT などの言語モデルでは、人間のようなコンテキストに対応したテキストを生成できます。 この機能により、複雑な言語処理タスクに対して非常に効果的になります。 これらは、より広範なコグニティブ タスクを処理することで、既存の自然言語処理手法を補完し、会話システムと顧客エンゲージメントを向上させます。特に Databricks の Dolly 2.0 などのモデルを使用します。
言語モデルと自然言語処理の関係と相違点
自然言語処理は、人間の言語を処理するためのさまざまな手法を含む包括的な分野です。 これに対し、言語モデルは自然言語処理の特定のサブセットです。 ディープ ラーニングに重点を置き、高度な言語タスクを実行します。 言語モデルは、高度なテキスト生成機能と理解機能を提供することで自然言語処理を強化しますが、自然言語処理と同義ではありません。 代わりに、より高度な言語処理を可能にすることで、より広範な自然言語処理ドメイン内の強力なツールとして機能します。
注
この記事では、自然言語処理について説明します。 自然言語処理と言語モデルの関係は、言語モデルが優れた言語理解と生成機能を通じて自然言語処理プロセスを強化することを示しています。
考えられるユース ケース
カスタム自然言語処理のメリットを得られるビジネス シナリオは次のとおりです。
財務、医療、小売、政府、その他のセクターで手書きまたは機械で作成されたドキュメントのドキュメント インテリジェンス。
名前付きエンティティ認識 (NER)、分類、要約、関係の抽出など、テキスト処理のための業界に依存しない自然言語処理タスク。
これらのタスクは、テキストや非構造化データなどのドキュメント情報を自動的に取得、識別、分析するのに役立ちます。 これらのタスクの例としては、リスク階層化モデル、オントロジ分類、小売りの要約などがあります。
セマンティック検索のための情報取得とナレッジ グラフの作成。 この機能により、創薬や臨床試験をサポートする医療知識グラフを作成できます。
小売、金融、旅行、その他の業界にわたる顧客向けアプリケーションでの会話型 AI システムのテキスト翻訳。
分析における感情と強化された感情知能は、特にブランドイメージの認識と顧客フィードバック分析の監視に役立ちます。
レポートの自動生成。 構造化データ入力から包括的なテキスト レポートを合成して生成します。 これらのタスクは、財務やコンプライアンスなどのセクターで、徹底的なドキュメントが必要な場合に役立ちます。
音声認識と自然な会話機能のための自然言語処理を統合する音声アクティブ化インターフェイス。 この統合により、モノのインターネット アプリケーションとスマート デバイス アプリケーションでのユーザー操作が強化されます。
さまざまな対象ユーザーの理解レベルに合わせて言語出力を動的に調整できるアダプティブ言語モデル。 この機能は、教育コンテンツとアクセシビリティの向上に不可欠です。
通信パターンと言語の使用状況をリアルタイムで分析するためのサイバーセキュリティ テキスト分析。 この分析は、デジタル通信における潜在的なセキュリティ上の脅威を特定し、フィッシング詐欺や誤った情報の検出を改善するのに役立ちます。
カスタマイズされた自然言語処理フレームワークとしての Apache Spark
Apache Spark は、メモリ内処理を使用してビッグ データ分析アプリケーションのパフォーマンスを向上させる強力な並列処理フレームワークです。 Azure Synapse Analytics、 Azure HDInsight、 および Azure Databricks は、Spark の処理機能への堅牢なアクセスを提供します。 このアクセスは、大規模なデータ操作をシームレスに実行するのに役立ちます。
Spark NLP は、カスタマイズされた自然言語処理ワークロード用に大量のテキストを処理できる効率的なフレームワークです。 このオープンソース ライブラリは、Python、Java、Scala ライブラリを使用して広範な機能を提供します。 これらのライブラリは、spaCy や Natural Language Toolkit などの目立つ自然言語処理ライブラリで見つけることができる洗練を提供します。 Spark NLP には、スペル チェック、センチメント分析、ドキュメント分類などの高度な機能が含まれています。 これらの機能は、最適な精度とスケーラビリティを一貫して確保するのに役立ちます。
Apache®、 Apache Spark、および炎のロゴは、Apache Software Foundation の米国およびその他の国における登録商標です。 これらのマークを使用することが、Apache Software Foundation による保証を意味するものではありません。
最近のパブリック ベンチマークでは、Spark NLP のパフォーマンスが強調されています。 これらのベンチマークは、他のライブラリよりも大幅な速度の向上を示しています。 Spark NLP では、カスタム モデルをトレーニングするための同等の精度も維持されます。 特に、Llama 2 モデルと OpenAI ささやきの統合により、会話インターフェイスと多言語音声認識が強化されます。 これらの機能は、最適化された処理機能において大きな進歩を示します。
Spark NLP は、Spark ML のネイティブ拡張機能として機能し、データ フレームで直接動作する分散 Spark クラスターを効果的に利用します。 この統合では、クラスターのパフォーマンス向上がサポートされます。これにより、ドキュメント分類やリスク予測などのタスクに対する統一された自然言語処理と機械学習パイプラインの作成が容易になります。 MPNet 埋め込みと広範な ONNX サポートにより、これらの機能がさらに強化され、正確でコンテキストに対応した処理が可能になります。
Spark NLP は、拡大する自然言語処理タスクの配列全体で、非常に正確な結果を提供します。 このライブラリには、名前付きエンティティ認識、ドキュメント分類、センチメント検出のための事前構築済みのディープ ラーニング モデルが付属しています。 その機能豊富なデザインには、単語、チャンク、文、ドキュメントの埋め込みをサポートする事前トレーニング済みの言語モデルが含まれています。
Spark NLP のインフラストラクチャは、CPU、GPU、最新の Intel Xeon チップ用に最適化されたビルドを使用してスケーリングされ、トレーニングと推論のプロセスで Spark クラスターを完全に利用できるようになります。 この機能は、さまざまな環境やアプリケーションで自然言語処理タスクを効率的に処理するのに役立ちます。
課題
リソース処理: 自由形式のテキスト ドキュメントのコレクションを処理するには、大量の計算リソースが必要です。 処理も時間を要します。 多くの場合、この種の処理には GPU コンピューティングのデプロイが含まれます。 Llama 2 のような Spark NLP アーキテクチャでの最適化など、量子化をサポートする最近の進歩は、リソースをより効率的に割り当てることで、これらの集中的なタスクを効率化するのに役立ちます。
標準化: 標準化されたドキュメント形式がないと、自由形式のテキスト処理を使用してドキュメントから特定のファクトを抽出する場合、一貫して正確な結果を得るのは困難な場合があります。 たとえば、さまざまな請求書から請求書番号と日付を抽出すると、課題が発生します。 M2M100 のような適応可能な自然言語処理モデルを統合すると、複数の言語と形式の処理精度が向上します。 これにより、精度が向上し、一貫性のある結果が得られます。
データの多様性と複雑さ: さまざまなドキュメント構造と言語的な微妙な差異に対処することは、依然として複雑です。 MPNet 埋め込みなどのイノベーションにより、コンテキスト理解が強化され、多様なテキスト形式をより直感的に処理し、より信頼性の高いデータ処理を実現できます。
主要な選択条件
Azure では、Azure Databricks、Microsoft Fabric、HDInsight などの Spark サービスは、Spark NLP で使用するときに自然言語処理機能を提供します。 Azure AI サービスは、自然言語処理機能のもう 1 つのオプションです。 使用するサービスを決定するには、次の点を考慮してください。
事前構築済みモデルまたは事前トレーニング済みモデルを使用する場合は、AI サービスが提供する API の使用を検討してください。 または、Spark NLP を使用して選択したモデルをダウンロードすることもできます。これには、強化された機能のための Llama 2 や MPNet などの高度なモデルが含まれています。
大量のテキスト データに対してカスタム モデルをトレーニングする必要がある場合は、Spark NLP で Azure Databricks、Fabric、または HDInsight を使用することを検討してください。 これらのプラットフォームは、広範なモデル トレーニングに必要な計算能力と柔軟性を提供します。
トークン化、ステミング、レンマ化、用語頻度/逆ドキュメント頻度 (TF/IDF) などの低レベルの自然言語処理機能が必要な場合は、Spark NLP で Azure Databricks、Fabric、または HDInsight を使用することを検討してください。 または、任意の処理ツールでオープンソースのソフトウェア ライブラリを使用します。
エンティティと意図の識別、トピックの検出、スペル チェック、感情分析などの単純で高度な自然言語処理機能が必要な場合は、AI サービスが提供する API の使用を検討してください。 または、Spark NLP を使用して選択したモデルをダウンロードして、これらのタスクに事前構築済みの関数を使用します。
機能マトリックス
次の表は、自然言語処理サービスの機能の主な違いをまとめたものです。
一般的な機能
能力 | Spark NLP を使用した Spark サービス (Azure Databricks、Fabric、HDInsight) | AI サービス |
---|---|---|
サービスとして事前トレーニング済みモデルを提供 | イエス | イエス |
REST API | イエス | イエス |
プログラム可能性 | Python、Scala | サポートされているプログラミング言語を参照してください |
大規模なデータセットと大規模なドキュメントの処理をサポートします | イエス | いいえ |
アノテーター機能
能力 | Spark NLP を使用した Spark サービス (Azure Databricks、Fabric、HDInsight) | AI サービス |
---|---|---|
文検出機能 | イエス | いいえ |
文のディープ検出機能 | イエス | イエス |
トークナイザー | イエス | イエス |
N グラム ジェネレーター | イエス | いいえ |
単語のセグメント化 | イエス | イエス |
ステマー | イエス | いいえ |
レンマタイザー | イエス | いいえ |
品詞のタグ付け | イエス | いいえ |
依存関係パーサー | イエス | いいえ |
翻訳 | イエス | いいえ |
ストップワード クリーナー | イエス | いいえ |
スペル修正 | イエス | いいえ |
ノーマライザー | イエス | イエス |
テキスト マッチャー | イエス | いいえ |
TF/IDF | イエス | いいえ |
正規表現マッチャー | イエス | 会話言語理解 (CLU) 機能に埋め込まれている |
日付マッチャー | イエス | DateTime 認識エンジンを使用して CLU で可能 |
チャンカー | イエス | いいえ |
注
Language Understanding (LUIS) は、2025 年 10 月 1 日に廃止されます。 既存の LUIS アプリケーションを Azure AI Language の会話言語理解 (CLU) 機能に移行する必要があります。この機能により、言語理解機能が強化され、新機能が提供されます。
高度な自然言語処理機能
能力 | Spark NLP を使用した Spark サービス (Azure Databricks、Fabric、HDInsight) | AI サービス |
---|---|---|
スペル チェック | イエス | いいえ |
要約 | イエス | イエス |
質問応答 | イエス | イエス |
センチメント検出 | イエス | イエス |
感情検出 | イエス | オピニオン マイニングをサポート |
トークンの分類 | イエス | はい (カスタム モデルを使用) |
テキスト分類 | イエス | はい (カスタム モデルを使用) |
テキスト表現 | イエス | いいえ |
NER | イエス | はい。テキスト分析では一連の NER が提供されます |
エンティティ認識 | イエス | はい (カスタム モデルを使用) |
言語検出 | イエス | イエス |
英語以外の言語のサポート | はい、200 を超える言語をサポート | はい、97 を超える言語をサポート |
Azure で Spark NLP を設定する
Spark NLP をインストールするには、次のコードを使用しますが、 <version>
を最新のバージョン番号に置き換えます。 詳細については、 Spark NLP のドキュメントを参照してください。
# Install Spark NLP from PyPI.
pip install spark-natural language processing==<version>
# Install Spark NLP from Anaconda or Conda.
conda install -c johnsnowlabs spark-natural language processing
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using SBT assembly.
spark-shell --jars spark-natural language processing-assembly-3 <version>.jar
自然言語処理パイプラインを開発する
Spark NLP は、自然言語処理パイプラインを実行する場合、従来の Spark ML 機械学習モデルと同じ開発概念に従います。 また、特殊な自然言語処理手法も適用されます。
Spark NLP パイプラインには、次のコア コンポーネントが含まれています。
DocumentAssembler は、Spark NLP で処理できる形式に変換することでデータを準備するトランスフォーマーです。 このステージは、すべての Spark NLP パイプラインのエントリ ポイントです。 DocumentAssembler は、
String
列またはArray[String]
のいずれかを読み取り、既定ではオフになっているsetCleanupMode
を使用してテキストを前処理できます。SentenceDetector は、定義済みのアプローチを使用して文の境界を識別するアノテーターです。
explodeSentences
が true に設定されている場合、検出された各文をArray
内か、または個別の行に返すことができます。トークナイザー は、未加工のテキストを単語、数字、記号などの個別のトークンに分割し、
TokenizedSentence
として出力するアノテーターです。 トークナイザーは不適合であり、RuleFactory
内の入力構成を使用してトークン化規則を作成します。 既定の規則が不十分な場合は、カスタム 規則を追加できます。ノーマライザー は、トークンを絞り込むアノテーターです。 ノーマライザーは、正規表現と辞書変換を適用してテキストをクリーンアップし、余分な文字を削除します。
WordEmbedding は 、トークンをベクトルにマップし、セマンティック処理を容易にするルックアップ アノテーターです。
setStoragePath
を使用して、カスタム埋め込みディクショナリを指定できます。各行にはトークンとそのベクトルがスペースで区切られています。 未解決のトークンの既定値は 0 個のベクトルです。
Spark NLP では、機械学習ライフサイクルを管理するオープンソース プラットフォームである MLflow からのネイティブ サポートを持つ Spark MLlib パイプラインを使用します。 MLflow には、次の主要なコンポーネントがあります。
MLflow Tracking は試験的な実行を記録し、結果を分析するための堅牢なクエリ機能を提供します。
MLflow Projects を使用すると、さまざまなプラットフォームでデータ サイエンス コードを実行できます。 この機能により、移植性と再現性が向上します。
MLflow モデルは 、一貫性のあるフレームワークを通じて、さまざまな環境にわたる汎用性の高いモデルのデプロイをサポートします。
Model Registry は、 効率的なアクセスとデプロイのためにバージョンを一元的に格納することで、包括的なモデル管理を提供します。 この手順により、運用の準備が容易になります。
MLflow は Azure Databricks などのプラットフォームと統合されていますが、他の Spark ベースの環境にインストールして実験を管理および追跡することもできます。 この統合により、MLflow モデル レジストリを使用して、モデルを運用環境で使用できるようになります。 デプロイ プロセスを合理化し、モデル ガバナンスを維持できます。
Spark NLP と共に MLflow を使用することで、自然言語処理パイプラインの管理とデプロイをより効率的に行うことができます。 また、単語埋め込みや言語モデルの適応などの高度な手法をサポートしながら、スケーラビリティと統合に関する最新の要件に対処することもできます。
貢献者
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
主要な著者:
- フレディ・アヤラ |クラウド ソリューション アーキテクト
- Moritz Steller | シニア クラウド ソリューション アーキテクト
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次のステップ
Spark NLP のドキュメント
Azure コンポーネント
- 生地
- HDInsight
- Azure Databricks
- AI サービス
学習リソース