自然言語処理 (NLP)

自然言語処理 (NLP) は、口語形式と文語形式の両方で人間の言語を理解する方法をコンピューターに教える人工知能 (AI) の一分野です。自然言語処理は、計算言語学と機械学習およびディープラーニングを組み合わせて音声データやテキストデータを処理する技術であり、他の種類のデータとの併用により、スマート エンジニアード システムの開発に活用することもできます。

自然言語処理のしくみ

自然言語処理は、機械が非構造化言語データを、音声データやテキストデータの解釈、大規模データセット内の複雑な関係の検出と可視化、および新しい言語データの生成に使用できる構造化形式に変換することを目的としています。

人間の言語の生データは、オーディオ信号、Web やソーシャルメディア、ドキュメント、データベースなど、さまざまなソースから入手できます。このデータには、音声コマンド、トピックに対する国民感情、運用データ、メンテナンスレポートなどの貴重な情報が含まれています。自然言語処理では、可視化トピックモデルを用いてこれらの大規模なデータソースを組み合わせて簡略化し、意味のある洞察に変換することができます。

音声データとテキストデータは、自然言語処理の AI モデルへの入力として使用されます。

自然言語処理では、計算言語学と AI モデリングを組み合わせて音声データやテキストデータを解釈します。

音声データに対して自然言語処理を実行するには、オーディオセグメント内の人間の音声の存在を検出し、音声からテキストへの変換を実行し、得られたテキストにテキストマイニングと機械学習の手法を適用します。

自然言語処理に向けたデータの準備

テキストを非構造化形式から構造化形式に変換するために自然言語処理で使用される手法には、次のようなものがあります。

トークン化: 通常、これは自然言語処理のためのテキスト処理の最初の手順です。これは、テキストを文や単語に分割することを指します。

ステミング: このテキスト正規化手法では、接辞を除去することで単語をその語幹に変換します。ここでは単純なヒューリスティック ルールが使用されるため、無効な辞書単語が生じる可能性があります。

レンマ化: この高度なテキスト正規化手法では、意味解析と形態素解析を用いて単語の接辞を除去します。たとえば、"building has floors " は "build have floor "になります。

Word2vec: 最も広く実装されている単語埋め込みの手法は、Word2vec です。この手法では、数値ベクトル化により単語の分散表現を作成し、単語間の意味や関係を取得します。

n-gram モデリング: n-gram はテキストドキュメント内の連続する n 個のアイテムの集合を意味します。これには単語、数字、記号、句読点などが含まれる可能性があります。n-gram モデルは、感情分析、テキスト分類、テキスト生成など単語の配列が関係する自然言語処理アプリケーションで役立ちます。

AI を活用した自然言語処理

言語データに基づいて学習を行った AI モデルでは、パターンを認識し、文中の後続の文字や単語を予測できます。自然言語処理モデルを構築するには、ロジスティック回帰や決定木などの従来の機械学習アルゴリズムを使用したり、畳み込みニューラル ネットワーク (CNN)、リカレント ニューラル ネットワーク (RNN)、オートエンコーダーなどのディープラーニング アーキテクチャを使用したりすることができます。たとえば、CNN を使用してテキストを分類したり、RNN を使用して文字の並びを生成したりすることができます。

Transformer モデル (ディープラーニング モデルの一種) は自然言語処理に革命をもたらし、BERT や ChatGPT™ などの大規模言語モデル (LLM) の基礎となっています。Transformer は、シーケンシャルデータの関係を追跡するよう設計されています。Transformer は、入力と出力の間の大域的な依存関係を取得するために自己注意 (Self-Attention) 機構を使用します。

これにより、自然言語処理のコンテキストにおいて、LLM は長期的な依存関係、単語間の複雑な関係、および自然言語に存在するニュアンスを捉えることができます。LLM はすべての単語を並列で処理できるため、学習と推論の実行速度が向上します。

他の事前学習済みのディープラーニング モデルと同様に、自然言語処理における特定の問題を解決するために、事前学習済みの LLM を用いて転移学習を行うことができます。たとえば、日本語テキスト用 BERT モデルをファインチューニングすることができます。

自然言語処理が重要である理由

自然言語処理では、機械に人間の言語を理解し、生成することを教えます。その用途は膨大であり、AI テクノロジーの進化に伴い、日常的なタスクから高度なエンジニアリング ワークフローまで、自然言語処理の利用の拡大が見込まれています。

自然言語処理における一般的なタスクには、音声認識話者認識音声強調、および固有表現認識があります。自然言語理解 (NLU) と呼ばれる自然言語処理のサブセットでは、音声とテキストの構文解析と意味解析を使用して、文の意味を抽出できます。NLU タスクには、文書分類や感情分析などがあります。

NLP タスクの出力の図。左側では、5 人の異なる話者がオーディオ信号で認識されています。右側は、肯定的な言葉と否定的な言葉を分類したワードクラウドです。

話者認識と感情分析は、自然言語処理の一般的なタスクです。

自然言語生成 (NLG) と呼ばれる自然言語処理のもう 1 つのサブ領域には、データが入力された場合にコンピューターが使用するテキスト応答の生成方法が含まれます。NLG は、テンプレートベースのテキスト生成から始まりましたが、AI 手法の活用により、リアルタイムで動的にテキストを生成できるようになりました。NLG タスクには、テキストの要約や機械翻訳などがあります。

自然言語処理 (NLP) の 2 大領域は、自然言語理解 (NLU) と自然言語生成 (NLG) です。

自然言語処理とそのサブ領域。

自然言語処理は、金融、製造、エレクトロニクス、ソフトウェア、IT、その他の産業分野で、次のような用途に使用されています。

  • 肯定的または否定的な感情に基づくレビューの分類の自動化
  • 文書内の単語やフレーズの頻度のカウントとトピックモデリングの実行
  • 音声記録のラベル付けとタグ付けの自動化
  • センサーデータとテキストログデータに基づいた予知保全スケジュールの作成
  • 要件の形式化とコンプライアンス チェックの自動化

MATLAB による自然言語処理

MATLAB では、データ準備から展開までの自然言語処理のパイプラインを作成できます。Deep Learning Toolbox™Statistics and Machine Learning Toolbox™Text Analytics Toolbox™ とともに使用することで、テキストデータに対して自然言語処理を実行できます。また、Audio Toolbox™ を使用することで、音声データに対して自然言語処理を実行できます。

完全な NLP ワークフローには、テキストデータへのアクセスとテキストデータの探索、データの前処理、予測モデルの作成、洞察とモデルの共有などが含まれます。

自然言語処理のための拡張ワークフロー。

データの準備

ローコードアプリを使用して、自然言語処理用に音声データを前処理できます。信号アナライザーアプリでデータを探索および解析し、信号ラベラーアプリでグラウンドトゥルースに自動的にラベルを付けることができます。オーディオ特徴量の抽出を用いて、ドメイン固有の特徴量を抽出し、時間-周波数変換を行うことができます。次に、speech2text 関数を使用して、音声をテキストに書き起こすことができます。

自然言語処理を適用するためのテキストデータを入手したら、[テキスト データの前処理] ライブ エディター タスクを使用して、非構造化言語データを対話的に構造化形式に変換し、データをクリーニングできます。あるいは、組み込み関数を使用して、プログラムにより NLP データを準備することもできます。

さらに、ワードクラウドと散布図を使用して、テキストデータと自然言語処理のモデルを可視化することもできます。

 自然言語処理用のテキストデータのクリーニングの図。左: 生データのワードクラウド。右: クリーニングされたデータのワードクラウド。

工場のレポートの生テキストデータとクリーニング済みテキストデータに適用した単語頻度解析を示すワードクラウド。

AI モデリング

分類または回帰を行うために、多くの種類の機械学習モデルの学習を行うことができます。たとえば、数行の MATLAB コードを用いて長期短期記憶ネットワーク (LSTM) を作成し、学習を行うことができます。また、ディープ ネットワーク デザイナー アプリを使用してディープラーニング モデルの作成と学習を行い、精度、損失、検証のメトリクスをプロットしてモデルの学習状況を監視することもできます。

自然言語処理に使用できるシンプルな BiLSTM ネットワークを示すディープ ネットワーク デザイナー アプリのスクリーンショット

NLP ネットワークを対話的に構築、可視化、編集し、学習を行うためのディープ ネットワーク デザイナー アプリ。

ディープラーニング モデルをゼロから作成するのではなく、事前学習済みのモデルを取得して自然言語処理タスクに直接適用したり、適応させたりできます。MATLAB を使用して、MATLAB Deep Learning Model Hub から事前学習済みネットワークにアクセスできます。たとえば、VGGish モデルを使用してオーディオ信号から特徴量の埋め込みを抽出したり、wav2vec モデルを使用して音声からテキストへの変換を行ったり、BERT モデルを使用して文書分類を行ったりすることができます。また、関数 importNetworkFromTensorFlow または関数 importNetworkFromPyTorch を使用して、TensorFlow™ または PyTorch™ からモデルをインポートすることもできます。

関連するトピック