自然言語処理(NLP)とは

Caroline Eppright | コンテンツ・ストラテジスト | 2021年3月25日

自然言語処理(NLP)の定義

自然言語処理(NLP)は、人工知能(AI)の1つの分野であり、コンピュータによって人間の言語を理解、生成、操作することを可能にします。自然言語処理には、自然言語のテキストまたは音声によってデータを問い合わせる機能があります。これは「言語入力」とも呼ばれます。ほとんどの消費者が、気づかないうちにNLPを利用している可能性があります。たとえば、NLPは、Oracle Digital Assistant(ODA)、Siri、Cortana、Alexaなどの仮想アシスタントの背後でコアテクノロジとして使用されています。ユーザーがこれらの仮想アシスタントに質問する場合、NLPは、ユーザーの質問を理解するだけでなく、自然言語で応答すること可能にしています。NLPは、文字によるテキストと音声の両方に適用され、人類が使用しているすべての言語に適用できます。NLPを活用したその他のツールの例としては、Web検索、電子メール・スパム・フィルタリング、テキストや音声の自動翻訳、文書要約、センチメント分析、文法チェック、スペルチェックなどがあります。たとえば、一部の電子メールプログラムでは、コンテンツに基づいてメッセージに対する適切な返信文を自動的に提案できます。これらのプログラムは、NLPを使用してメッセージの読み取り、分析、返信文の作成を行います。

NLPとほぼ同じ意味の用語が他にもいくつかあります。自然言語理解(NLU)と自然言語生成(NLG)は、コンピュータを使用して人間の言語を理解し、生成することを指します。NLGでは、何が起こったのかを言葉で説明することができます。これは、「グラフィックの文法」という概念を使用して意味のある情報をテキストに要約することで、「言語出力」とも呼ばれます。

実際には、NLUはNLPの意味で使用されます。人間のすべての言語の構造と意味をコンピュータが理解することで、開発者やユーザーは自然な文や対話を通じてコンピュータとやり取りできます。計算言語学(CL)は人間の言語の計算的側面を研究する科学分野ですが、NLPは人間の言語を理解、生成、または操作する計算アーティファクトの構築に関わる工学分野です。

NLPの研究は、1950年代にデジタルコンピュータが発明された直後から始まり、NLPは言語学とAIの両方を利用しています。ただし、過去数年の大幅な進歩は、AIの1つの分野であり、データを学習して普遍化を行うシステムを開発する機械学習が原動力となっています。ディープラーニングは、機械学習の一種で、大規模なデータセットから非常に複雑なパターンを学習できるため、Webから収集したデータセットを使用して自然言語の複雑さを学習させるのに最適です。

自然言語処理の用途

ルーチンタスクの自動化:NLPを活用したチャットボットは、現在人間によって処理されているルーチンタスクを大量に処理できるため、従業員はより困難で興味深いタスクに取り組むことができます。たとえば、チャットボットやデジタルアシスタントは、さまざまなユーザーリクエストを認識し、それらを企業データベース内の適切なエントリに一致させて、ユーザーに対する適切な応答を生成できます。

検索の改善:NLPを使用すると、コンテキストに基づいた単語の意味の明確化(たとえば、「キャリア」は、生物医学的文脈と産業的文脈で異なるものを意味する)、同義語の一致(たとえば、「自動車」で検索することによって、「車」という表現を含む文書を取得する)、形態学的変化の考慮(英語以外の質問文で重要になる)によって、文書やよくある質問を探す際のキーワード一致検索を改善できます。NLPを活用した効果的な学術検索システムでは、医師、弁護士、その他の専門家による最先端研究へのアクセスが大幅に改善されます。

検索エンジンの最適化:NLPは、検索を分析してコンテンツを最適化することによって、企業がオンライン検索での自社の表示順位を高めるための優れたツールです。検索エンジンはNLPを使用して結果をランク付けしているため、これらの技術を効果的に使用する方法を理解することで、競合他社よりも表示順位を上げることができます。これにより、自社の認知度が向上します。

膨大な文書データの分析および整理:文書クラスタリングやトピックモデリングなどのNLP技術により、企業の報告書、ニュース記事、科学文書などの膨大な文書データ内の多様なコンテンツを理解する作業が簡略化されます。これらの技術は、法的証拠開示の目的でしばしば使用されます。

ソーシャルメディアの分析:NLPは、顧客レビューやソーシャルメディアの投稿を分析して、大量の情報をより適切に解釈できます。センチメント分析は、ソーシャルメディア投稿ストリームの中から肯定的な投稿と否定的な投稿を識別し、顧客感情をリアルタイムで直接的に測定します。これにより、顧客満足度の向上や収益の増加など、大きな成果がもたらされる可能性があります。

市場のインサイト:NLPを使用して顧客の発言を分析すると、顧客が求めていることをより適切に処理でき、また顧客とのコミュニケーションを改善できます。アスペクト指向のセンチメント分析は、ソーシャルメディアの特定の側面または製品に関連するセンチメントを検出し(「キーボードは素晴らしいが、画面が暗すぎる」など)、製品設計とマーケティングに役立つ具体的な情報を提供します。

コンテンツのモデレート:企業では、ユーザーまたは顧客から大量の投稿が集まった場合、NLPを使用して単語だけでなく投稿の口調や意図を分析することで、話題になっている内容をモデレートして、コンテンツの品質と礼節を維持することができます。

自然言語処理を使用する業種

NLPは、特に、電子メール、アンケート、ソーシャルメディアの投稿などの大量の非構造化テキストを扱う幅広いビジネスプロセスを簡素化および自動化します。NLPを使用することで、企業はデータをより効果的に分析して、適切な意思決定を行うことができます。以下に、NLPの実際の応用例をいくつか示します。

  • 医療:世界のどの地域でも、医療システムが電子医療記録に移行するにつれて、大量の非構造化データを処理する必要性が出てきます。NLPを使用すると、医療記録を分析して新たなインサイトを獲得できます。
  • 法務:弁護士は、訴訟に備えるために、多くの場合、何時間もかけて大量の文書を精査し、特定の訴訟に関連する資料を見つけなればなりません。NLPのテクノロジは、大量の文書を処理することによって、法的証拠開示のプロセスを自動化し、時間と人為ミスの両方を削減できます。
  • 金融:金融の世界は変化が非常に速く、競争上の優位性の確保が重要です。金融分野では、取引業者はNLPテクノロジを使用して、企業の文書やニュースリリースから情報を自動的に見つけ出し、ポートフォリオと取引の判断に関連する情報を抽出します。
  • 顧客サービス:多くの大企業は、仮想アシスタントまたはチャットボットを使用して、顧客の基本的な問い合わせや情報要求(よくある質問など)に回答し、必要に応じて複雑な質問を人間の担当者に任せています。
  • 保険:大手保険会社では、業務遂行を合理化する取り組みとして、NLPを使用して請求に関連する文書やレポートを処理しています。

NLPテクノロジの概要

NLPの機械学習モデル:前述のように、最新のNLPは機械学習と呼ばれるAIアプローチに大きく依存しています。機械学習は、データセット内の例を一般化することで予測を行います。このデータセットはトレーニングデータと呼ばれ、機械学習アルゴリズムはこのトレーニングデータに基づいてトレーニングを行い、ターゲットタスクを実行する機械学習モデルを生成します。

たとえば、センチメント分析のトレーニングデータは、文とセンチメント(肯定的、否定的、中立のセンチメントなど)で構成されます。機械学習アルゴリズムは、このデータセットを読み取って、入力文からセンチメントを返すモデルを生成します。このモデルのように、文または文書を入力として取得し、その入力のラベルを返すモデルは、文書分類モデルと呼ばれます。また、文書分類器を使用して、トピック(スポーツ、金融、政治など)に基づいて文書を分類することもできます。

別の種類のモデルを使用すると、文書内のエンティティを認識および分類できます。文書内の各単語について、このモデルは、その単語がエンティティの記述に含まれるかどうかを予測し、含まれる場合はどの種類のエンティティが関係するかを予測します。たとえば、「XYZ Corpの株式が昨日28ドルで取引された」では、「XYZ Corp」は会社のエンティティ、「28ドル」は金額のエンティティ、「昨日」は日付のエンティティです。エンティティ認識のトレーニングデータは、テキストのコレクションであり、各単語には、単語が参照するエンティティの種類に応じてラベルが付けられています。このように、入力に含まれる各単語のラベルを生成するモデルは、シーケンス・ラベリング・モデルと呼ばれます。

シーケンス・ツー・シーケンス・モデルは、 NLPで使用されるモデルファミリにごく最近追加されました。シーケンス・ツー・シーケンス(またはseq2seq)モデルは、(文書分類器のように)文全体または文書を入力として取得しますが、文またはその他のシーケンス(コンピュータ・プログラムなど)を出力として生成します(文書分類器は、出力として単一の記号のみを生成します)。seq2seqモデルの応用例には、機械翻訳(たとえば、英文を入力として取得し、そのフランス語の文を出力として返す)、文書要約(入力の要約を出力する)、意味解析(入力は英語のクエリーまたはリクエストであり、出力はそのリクエストを実行するコンピュータ・プログラム)などがあります。

ディープラーニング、事前学習済みモデル、転移学習: ディープラーニングは、NLPで最も広く使用されている機械学習です。1980年代、研究者たちはニューラル・ネットワークを開発しました。このニューラル・ネットワークでは、多数のプリミティブな機械学習モデルが単一のネットワークに結合されます。脳のアナロジーによって、シンプルな機械学習モデルは「ニューロン」と呼ばれることがあります。これらのニューロンは層に配置され、ディープ・ニューラル・ネットワークには多数の層があります。ディープラーニングは、ディープ・ニューラル・ネットワーク・モデルを使用する機械学習です。

その複雑さのため、通常、ディープ・ニューラル・ネットワークの学習には、大量のデータが必要であり、その処理には強力な計算能力と長い時間が必要です。最新のディープ・ニューラル・ネットワークのNLPモデルでは、すべてのWikipediaやWebからスクレイプされたデータなど、多様なソースで学習が行われています。トレーニングデータは、サイズが10 GB以上のオーダーになる場合があり、ディープ・ニューラル・ネットワークを学習させるために高性能クラスタで1週間以上かかる場合があります(研究者たちは、より大きなデータセットを使用してより深いモデルを学習させることで性能がさらに向上することを発見し、現在、より大規模なデータセットでより大きなモデルを学習させる競争が起きています)。

ディープ・ニューラル・ネットワークでは、膨大なデータと計算能力が要求されるため、一見するとその有用性が著しく制限されているように見えます。一方、転移学習では、学習済みのディープ・ニューラル・ネットワークをさらに学習させることで、トレーニングデータと計算の労力を大幅に削減しながら、新しいタスクを実現できます。最も簡単な転移学習は、ファインチューニングと呼ばれます。これは、最初に大規模な汎用データセット(Wikipediaなど)でモデルを学習させ、実際のターゲットタスクを使用してラベル付けされた、より小さなタスク固有のデータセットでモデルの学習(「ファインチューニング」)をさらに行うものです。驚いたことに、ファインチューニング用のデータセットは非常に小さく、場合によっては、数百または数十の学習例しか含まれず、ファインチューニングの学習は、1つのCPUを使用してわずか数分で完了します。転移学習により、ディープ・ラーニング・モデルを企業全体に簡単にデプロイできます。

現在、言語、データセット、学習前タスクのさまざまな組合せで学習が行われた、事前学習済みのディープ・ラーニング・モデルを提供するプロバイダの総合的なエコシステムが存在します。これらの事前学習済みモデルは、ダウンロードして、さまざまなターゲットタスク向けにファインチューニングできます。

AIセンター・オブ・エクセレンス(CoE)を確立することで、NLPテクノロジーで成功の可能性を高める方法をご覧ください。eBookでは、CoEを構築し、高度な機械学習モデルを効果的に使用するためのヒントを紹介しています。

NLPの前処理手法の例

トークン化:トークン化では、生のテキスト(文や文書など)が、単語やサブワードなどの一連のトークンに分割されます。多くの場合、トークン化はNLP処理パイプラインの最初のステップです。トークンは通常、繰り返しを含むテキストシーケンスであり、後処理でアトミック単位として扱われます。トークンは、単語、形態素と呼ばれるサブワード単位(「un-」などのプリフィクスや「-ing」などのサフィクスを含む)、または個々の文字の場合があります。

Bag-of-wordsモデル:Bag-of-wordsモデルは、文書をトークンまたは単語の順序付けされていないコレクションとして処理します(バッグはセットのようなものですが、各要素の出現回数を追跡する点が異なります)。単語の順序が完全に無視されているため、Bag-of-wordsモデルでは、「dog bites man」(犬が人をかむ)などの文が「man bites dog」 (人が犬をかむ)と区別されません。ただし、Bag-of-wordsモデルは、効率上の理由から、検索エンジンなどの大規模な情報取得タスクによく使用されます。大きな文書の場合に、最高水準に近い結果を生成できます。

ストップワードの削除:「ストップワード」は、後処理で無視されるトークンです。典型的なものには、「a」、「the」、「an」などの頻繁に出現する短い単語があります。Bag-of-wordsモデルや検索エンジンは、多くの場合、データベース内での処理時間とストレージ消費量を削減するために、ストップワードを無視します。ディープ・ニューラル・ネットワークは、通常、語順を考慮し(つまり、Bag-of-wordsモデルではありません)、ストップワードが微妙な意味の違いを含んでいる可能性があることを考慮してストップワードを削除しません(たとえば、「the package was lost」(パッケージがなかった)と「a package is lost」(パッケージがない)は意味が異なりますが、ストップワードを削除すると同じ文字列になります)。

ステミングとレンマ化:形態素は、意味を持つ言語の最小要素です。通常、形態素は単語よりも小さくなります。たとえば、「revisited」は、接頭辞「re-」、語幹「visit」、および過去形の接尾辞「-ed」で構成されます。ステミングとレンマ化では、単語を語感形式(たとえば、「revisit」+ 過去)にマップします。ステミングとレンマ化は、ディープラーニング以前の学習モデルでは重要なステップですが、ディープ・ラーニング・モデルは、通常、トレーニングデータからこれらの規則性を学習するため、明示的なステミングやレンマ化のステップは必要ありません。

品詞タグ付けと構文解析:品詞(PoS)タグ付けは、各語に品詞(名詞、動詞、形容詞など)をラベル付けするプロセスです。構文パーサーは、構文パーサーは、単語がどのように組み合わされて、句、節、および文全体が形成されているかを特定します。PoSタグ付けはシーケンス・ラベリング・タスクで、構文解析は拡張シーケンス・ラベリング・タスクであり、ディープ・ニューラル・ネットワークは、PoSタグ付けと構文解析の両方に関する最先端テクノロジです。ディープラーニングの登場以前は、文の理解においてPoSタグ付けと構文解析は不可欠なステップでした。ただし、最新のディープラーニングNLPモデルの場合、一般的にPoSまたは構文情報から得られるメリットは(あったとしても)わずかであるため、ディープ・ラーニングNLPでは、PoSタグ付けや構文解析は広く使用されていません。

NLP向けプログラミング言語

Python:

Pythonでは、通常、NLPのライブラリおよびツールキットを使用できるため、NLPプロジェクトの大部分がPythonで開発されています。Pythonの対話型開発環境を使用することで、新しいコードの開発およびテストが容易になります。

JavaおよびC++:

大量のデータを処理する場合、より効率的なコードをサポートできるC++やJavaの方が通常推奨されます。

NLPライブラリおよび開発環境

一般的に使用されているNLPライブラリの例を次に示します。

TensorFlowおよびPyTorch:これらは最も一般的な2つのディープ・ラーニング・ツールキットです。研究および商用目的で自由に利用できます。複数の言語がサポートされていますが、最も重要な言語はPythonです。事前構築済みコンポーネントの大規模なライブラリが付属しているため、非常に高度なディープラーニングNLPモデルでも、多くの場合、これらのコンポーネントを接続するだけで準備が整います。また、グラフィカル・プロセッサ・ユニット(GPU)アクセラレータを持つマシンのクラスタなど、高性能コンピューティング・インフラストラクチャもサポートしています。優れたドキュメントとチュートリアルが用意されています。

AllenNLP:これは、PyTorchおよびPythonで実装されている高レベルなNLPコンポーネント(シンプルなチャットボットなど)のライブラリです。素晴らしいドキュメントが付属しています。

HuggingFace:この会社は、数百ものさまざまな事前学習済みディープラーニングNLPモデルとプラグアンドプレイ・ソフトウェア・ツールキットをTensorFlowおよびPyTorchに提供しています。これらを使用することで、開発者は、さまざまな事前学習済みモデルが特定のタスクに対してどの程度適切に機能するかを迅速に評価できます。

Spark NLP: Spark NLPは、Python、Java、およびScalaプログラミング言語向けの高度なNLP用オープン・ソース・テキスト処理ライブラリです。その目的は、自然言語処理パイプライン用のアプリケーション・プログラミング・インタフェース(API)を提供することです。事前学習済みのニューラル・ネットワーク・モデル、パイプライン、埋め込み機能に加えて、カスタムモデルの学習もサポートしています。

SpaCy NLP: SpaCyは、Pythonで作成された、高度なNLP用の無料のオープン・ソース・ライブラリであり、特に、大量のテキストを処理および理解できるアプリケーションの構築を支援するように設計されています。SpaCyは、非常に直感的であり、一般的なNLPプロジェクトに必要な多くのタスクを処理できます。

以上のことをまとめると、自然言語処理は、人工知能開発のエキサイティングな分野であり、検索エンジン、チャットボット、レコメンデーション・システム、音声テキスト変換システムなど幅広い新しい製品を支援します。コンピュータのヒューマン・インタフェースでのボタン、フォーム、ドメイン固有の言語の使用は減少し続けますが、自然言語処理の発展に対する要求は、今後も高まり続けることでしょう。このため、Oracle Cloud Infrastructureでは、NLP向けの性能最適化コンピュートシェイプおよびツールにより、優れたオンプレミス性能を提供することに取り組んでいます。Oracle Cloud Infrastructureは、数分でデプロイしてNLPの実験を開始できる一連のGPUシェイプを提供しています。