自然言語処理(NLP)とは

自然言語処理(NLP)は、コンピュータが人間の言葉を解釈することを可能にするものです。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • 自然言語処理(NLP)の定義
  • BGPの仕組みを理解する
  • NLPと他の人工知能(AI)の対比

記事のリンクをコピーする

NLP(自然言語処理)とは

自然言語処理(NLP)とは、コンピュータプログラムが人間の言語を解釈するために使用される手法です。NLPは、人工知能(AI)の一種です。最新のNLPモデルは、そのほとんどが機械学習によって構築されており、言語学(言語の意味を研究する学問)の分野も活用しています。

すべてのコンピュータは、コンピュータが理解しやすい言語で書かれたコマンドや指示を解釈できます。例えば、コンピュータ(具体的にはブラウザアプリケーション)は、次のようなJavaScriptコードを理解し、解釈できます。


window.addEventListener("scroll", popup);

function popup() {
window.alert("Hello, world!");
}

しかし、自然言語のテキストを理解し、解釈することはできません。


If the user scrolls, show an alert that says "Hello, world!"(ユーザーがスクロールしたら、「Hello, world」というアラートを表示)

しかし、自然言語処理を備えたコンピュータプログラムであれば、命令を実行することはできなくても、上記の文章を理解することはできる可能性があります。

コンピュータに命令を与える最良の方法がプログラミング言語である一方、自然言語処理では、話し言葉であるか書き言葉であるかを問わず、人間の言葉を用いてコンピュータプログラムに様々なタスクを実行させられるようになります。例えば、音声記録や文章からなる大規模なデータ収集の処理、人間ユーザーとの対話の自動化、ユーザーからの問い合わせの解釈などの支援が可能になります。

NLPには他に、以下を例とする用途が挙げられます。

  • センチメント分析:NLPを、膨大な量のユーザーコメント、ソーシャルメディアへの投稿、顧客サービスの要望の解釈に役立てられます。
  • バーチャルアシスタント:NLPは、Siri、Alexa、Cortanaなどのアシスタントのユーザーからの要求の理解において非常に重要な役割を果たしています。
  • 検索エンジン:NLPは、検索エンジンが単純な一語のクエリや、文章や質問として入力されたクエリの背後にある検索意図をよりよく理解し、クエリ内のスペルミスやその他のヒューマンエラーを解釈するのに役立ちます。
  • 翻訳:NLPは、ある言語から別の言語へのコンテンツの理解と翻訳を支援できます。
  • コンテンツのモデレーション:NLPは、ユーザーが作成したテキストの意味を解釈することで、潜在的に有害または不快なコンテンツにフラグを立てられます。

自然言語処理(NLP)の仕組み

NLPは、機械学習を使って人間が作成したコンテンツを統計的に分析し、その解釈方法を学習します。学習プロセスにおいて、NLPモデルは文脈中の単語やフレーズの例とその解釈を蓄積していきます。例えば、「オレンジ」という単語が、果物ではなく色を意味する場合、NLPモデルは理解できないことがあります。しかし、「I ate an orange」や「This car comes in orange」のような何千もの例文を見せられるうちに、モデルは状況ごとの単語を理解し始め、意味の違いを正しく解釈できるようになります。

NLPは多くの場合、人間の言語の複雑さと一貫性のなさを踏まえ、より強力な機械学習であるディープラーニングに基づいて構築されています。ディープラーニングモデルでは、ラベル付けされていない生データを処理することができるものの、適切に学習させるためには膨大な量のデータが必要になります。また、ディープラーニングでは膨大な処理能力が必要となります。

NLPの前処理とは

自然言語処理(NLP)の前処理とは、プログラムまたは機械学習モデルによる分析のための生のテキストを準備することを指します。NLPの前処理は、テキストをディープラーニングモデルが分析しやすい形式にするために必要になります。

NLPの前処理には、いくつかの方法があります。主なものに、次のものが挙げられます。

  • 小文字への変換:単語の意味としては、大文字と小文字の違いはほとんどありません。多くのコンピュータプログラムは大文字と小文字を区別しており、大文字の単語を不必要に区別して扱う可能性があるため、すべての単語を小文字に変換する方が効率的です。
  • ステミング:これは、「-ing」や「-tion」などの語尾を削除することで、単語をその語根または「語幹」に還元します(例:「transporting」と「transportation」はどちらも、「toransport」になります)。
  • レンマタイゼーション:このNLPテクニックでは、単語を辞書に載っているような主要な形にスリム化します。「neighbor's」、「neighbors」、「neighbors」はすべて、「neighbor」になります。「went」と「goes」は、「go」になります。
  • トークン化:テキストを、意味を示す小さな断片に分割します。断片は通常、フレーズ、個々の単語、またはサブワードから構成されます(接頭辞「un-」は、サブワードの一例)。
  • ストップワードの除去:多くの単語は、文法上重要であったり、人々がお互いに話すときにわかりやすくするために重要であったりするものの、大きな意味は持たず、コンピュータプログラムでの言語処理上、特に必要性のないものです。このような単語はNLPの文脈上「ストップワード」と呼ばれ、ストップワード除去によってテキストから除外されます。例として、「I went to college for four years,」という文では、「to」と「for」という単語は、文が人間の耳にわかりやすく聞こえるためには必要であるものの、意味を伝えるためには不要とみなされます。ストップワード除去により、「I went college four years.」と扱われます。

NLPと大規模言語モデル(LLM)の違い

大規模言語モデル(LLM)とは、人間が作成したテキストを理解し、自然な音声の出力を生成できる機械学習モデルの一種です。広く普及しているChatGPTのようなLLMは、非常に大規模なテキストデータセットで学習されます。

NLPとLLMという言葉には、重なる部分があります。どちらも人間の言語を解釈するために、機械学習、大規模なデータセット、そして訓練を用います。実際、LLMをNLPの一種であると定義する資料もあります。

しかし、LLMは複数の顕著な点でNLPモデルとは異なります。

  • NLPは特定のタスクのために訓練されるのが通常である一方、LLMは幅広い用途があります。
  • NLPでは洞察と解釈をが得られる一方、LLMは統計的に関連性のあるテキストを作成します。とは言え、LLMでは(多くの高度なLLMは簡単に見せかけることができるものの)根本的な意味の理解を伝えられない場合があります。
  • LLMは幅広い用途に使用できるため、NLPモデルよりもはるかに多くのデータと訓練を必要とします。

例えば、NLPモデルはセンチメント分析により有用であり、LLMは顧客と対話するチャットボットに組み込むのに適しています。あるいは、NLPモデルは検索エンジンがユーザーのクエリを解釈して関連する検索結果を生成する助力となり、LLMは既存の関連コンテンツの統計的分析に基づいてクエリに対する独自の応答を書くことができます。

NLP対LLM対生成AI

NLPはまた、生成AIと関連してはいるものの、明確に異なっています。生成AIは、テキスト、音声、ビデオ、画像、コードを生成できるディープラーニングモデルです。これとは対照的に、自然言語処理モデルはテキストを生成するようには設計されていません。一方、LLMは、クエリに応答してテキストを生成できるという点で、生成AIの一種でもあります。

CloudflareでのNLPモデル開発の実現の在り方

Cloudflareにより、開発者は世界中のGPUを活用した高度なディープラーニングを実行でき、最小限の遅延でAIモデルの訓練に必要なコンピューティング能力にアクセスできるようになります。さらに、ディープラーニングベースのNLPの訓練に必要になる膨大な量のデータをコスト効率よく保存するための方法として、Cloudflare R2を提供しています。AI向けCloudflareの詳細は、リンクよりご覧ください。