【入門編】自然言語処理(NLP)とは | 意味・仕組み・活用例・課題

自然言語処理
このエントリーをはてなブックマークに追加

高精度な翻訳ツール「DeepL」の登場や、Google検索エンジンの検索精度向上など、機械が長文の文や文章に対しても的確な処理ができる時代になってきました。まるで人間の言葉を理解できているかのような技術、「自然言語処理(Natural Language Processing)」に近年注目が集まっています。

本稿では、自然言語処理技術の仕組みや活用例、今後の課題について解説していきます。

自然言語処理(NLP)とは?意味解説

自然言語処理(Natural Language Processing)とは、人間の言語(自然言語)を機械で処理し、内容を抽出することです。

具体的には、言葉や文章といったコミュニケーションで使う「話し言葉」から、論文のような「書き言葉」までの自然言語を対象として、それらの言葉が持つ意味をさまざまな方法で解析する処理技術を指します。

しかし、開発にはいまだ難しい点も多いです。
そもそも自然言語とは、人間が普段使用する言語であり、文脈によって解釈が変わるなどの言葉の「あいまいさ」「意味の重複」が含まれています。機械が言葉のあいまいさを処理するのは難しいです。

たとえば、下記の例文を見てみましょう。

「いぬがねこをうんだよ」

この文は主に、

①犬が猫を産んだよ
②犬がね、子を産んだよ

の2つの解釈に分けることができます。

我々人間であれば「犬が猫を産むわけがない」と考えるので①は消去され②を選びますが、機械はどちらを選ぶべきかわからなくなってしまいます。

実際にスマホやPCでこの文を打ってみると、①の「犬が猫を産む」という予測変換しか出てきません。
かな文字予測変換も自然言語処理を用いた応用技術のひとつです。

このように、自然言語のあいまいさを解消し、機械に解析処理させるには技術的課題もまだまだありますが、応用できる分野はとても広く、今この瞬間も世界で多くの研究がされています。

自然言語処理の仕組み

では、自然言語処理はどのように実行されるのでしょうか。

本稿では、自然言語処理をジグソーパズルにたとえて説明していきます。
人間の作ったジグソーパズルを遊んでいるロボットがいて、目の前にジグソーパズル、隣には完成系の絵が置いてある場面を想像してみてください。

Photo by Gabriel Crismariu on Unsplash

自然言語処理は、最終目標である「絵(文章)」を完成させるために、

  • 形態素解析:各パズルの色や構造情報を表す
  • 構文解析:各パズルの凹凸を確認してつなぎ合わせる
  • 意味解析:ひとかたまりのパズル群が全体のどこにいるのか確認する
  • 文脈解析:最終調整を行う

などの行程を経てジグソーパズルを組み立てていくものだと仮定します。

まず処理を行う前準備として、機械可読目録コーパスが必要になります。

機械可読目録

機械可読目録(MARC, MAchine-Readable Catalog)とは、書き言葉の書籍情報や関連情報を機械が読める形に置き換えた通信規格です。言い換えると、ロボットの目であり、文字を認識することそのものです。1960年に開発され、応用技術のひとつに図書館などの書籍検索システム「OPAC」があります。俗に自然言語処理用の「辞書」と定義され、ここで文字を機械が読み取れる規格に変換します。

コーパス

コーパス

コーパス(Corpus)とは、自然言語の文章などの使用方法を構造化して大規模に集め、記録したものです。言い換えると、ロボットの頭脳であり、パズルの形状(構造)や色(品詞)を確認するものです。構造化した後、言語情報(動詞、形容詞などの品詞・統語構造)などのタグ付けをします。日本語では「言語全集」などと言われることもあります。

コーパスは、この後解説する解析時に利用します。

そしてここから、自然言語処理は主に4つの行程を踏まえて処理されます。

  1. 形態素解析
  2. 構文解析
  3. 意味解析
  4. 文脈解析

段階ごとに詳しく説明していきます。

1. 形態素解析

まずは出来上がっているジグソーパズルをバラバラにしていきます。

形態素解析とは、文章をそれぞれの意味を担う最小の単位(=形態素)に分割し、それぞれに品詞など各種情報を振り分ける作業です。大小感覚は、文>単語>形態素という具合です。パズルゲームに置き換えると、各パズルの色や構造情報を表します。

これにより、文章のなかにある形態素の意味をデータとして抽出することが可能になります。

形態素解析は主に形態素解析エンジンを使って解析を行い、代表的なものとしては、無料で使えるMeCab, ChaSen, KyTeaや、商用で使われているRosette, IBM Watson, MARIMOなどが挙げられます。

具体例として次の文を形態素解析してみましょう。

「私は同僚と美味しいランチを食べました」

これを形態素解析すると以下のようになります。

Ledge.ai編集部で作成

「私(名詞)は(助詞)同僚(名詞)と(助詞)美味しい(形容詞)
ランチ(名詞)を(助詞)食べ(動詞)まし(助動詞)た(助動詞)」

英語などの「わかち書き」(単語間にスペースが入る)される言語と違い、日本語のように単語間にスペースがない言語は、より複雑な処理が必要になります。

具体的な処理手法としては、日本語文法の性質を利用して単語間の境界を判断する文節構造モデル確率的言語モデルの2つが挙げられます。

  1. 文節構造モデル
  2. 慣用句やひらがなのデータベースに文章を特定のアルゴリズムで読み込み、解析する手法です。

  3. 確率的言語モデル
  4. 確率的言語モデルの主な手法にはラティス上の経路予測点予測があります。

    • ラティス上の経路予測
    • 辞書を用いて入力文から単語の候補を列挙したグラフ構造(単語ラティス)を生成し、次に最適な経路を選択して解析する手法。
      MeCab, ChaSenなどの解析エンジンがこの手法を用いています。

    • 点予測
      単語ごとに分割できるかを分類器で判別し、分割した後最適解を解析する手法。単語ラティスを作る必要がなく、辞書の精度が良くなくても使えるメリットがある。
      KyTeaなどの検索エンジンがこの手法を用いています。

抽出された形態素データをここで単語別に解析できたら、次にそれぞれの関係性を解析します。

「word2vec」
自然言語処理には、画像データや音声データを扱う時とはまた異なった障壁があります。
言語が「物理的な実数値」ではなく、人間が恣意的に定義した「記号」であり、そのままの形では深層学習で処理できないという点です。

言語を機械的に処理するためには、言語を単語や文字などの「記号」の世界から、「数値」の世界に変換し、ベクトルや行列で計算処理できるようにする必要があります。

その返還を可能にしたのが、Word2Vecというツールです。特徴は、2層のニューラルネットワークのみで構成されるシンプルな構造をとっている点にあります。この構造のシンプルさにより、大規模データによる分散表現学習が現実的な計算量で可能となり、分散表現での自然言語処理が飛躍的に進む契機となりました。

2. 構文解析

次にそれぞれのパズルがどのパズルと隣り合わせになっているか確認します。

自然言語の解析ベースは多くの種類がありますが、ここでは日本語の自然言語処理における構文解析について説明していきます。

日本語の構文解析においては、形態素解析で分割した単語同士の関連性を解析し、主に分節感の係り受け構造を発見しツリー化(図式化)することを目的としています。

代表的な解析手法は以下の2つです。

依存構造解析(係り受け解析)

依存構造は語や文節間の修飾↔被修飾関係、係り受け関係といった依存関係に基づいて文章内の構造を表現したものであり、単語や文節を接点とするツリーで表現されます。

依存構造解析とは、文章内にある単語間の係り受け関係を調べ、どの単語がどの単語に係るのかを構文的に解析したものです。日本語の構文的依存構造関係を出力してくれる構文解析器(parser)は、主にCaboChaやKNPなどがあります。

Ledge.ai編集部で作成

句構造解析

句構造は隣接する語の間の関係に基づいて文の構造を表現したもので、語および文法的カテゴリ(非終端記号)を節点とするツリーで表現されます。英語ではこの解析法も発展しています。
句構造解析とは文のどこからどこまでが部分構造をなすのかを推測する解析方法です。

Ledge.ai編集部で作成

上記以外にもさまざまな手法があるため、最近では複数の解析結果を出して最良のものを選んでくれる構文解析器とシステムの組み合わせも存在しています。

3. 意味解析

構文解析までの手順で、ひとかたまりのパズルがいくつか出来上がりました。しかし、それらが本来どの場所に配置されているか判断できないと、パズルは完成しません。

そこで、パズルが完成形のなかでどの位置にいるのかを調べていきます。

意味解析とは、「辞書」に基づいた意味を利用して正しい文を解析することです。

冒頭で取り上げた、「いぬがねこをうんだ」という文があいまいさを含んでいるように、意味の取り方によって文の解釈が変わってきます。

今までの解析同様、意味解析にも多くの解析方法があります。中でも「グラウンディング」という概念は事前に用意してあるリストから文章中の固有名を結びつけてその意味を認識します。最終的に正しい解釈に解析することがここで行われます。

例文には、以下2つの解釈があります。

  • 私は、同僚と美味しいランチを食べました(私が、同僚とランチ両方食べた場合)
  • 私は同僚と、美味しいランチを食べました(私と同僚で、ランチを食べた場合)

ここでロボット(機械)は「辞書」を頼りに正しい解釈を探します。

  • 「私」と「同僚」は関係性が高い(同じ名詞、人間の名称)
  • 「同僚」と「美味しい」は関係性が低い(名詞と形容詞、適切ではない形容詞)
  • 「美味しい」と「ランチ」は関係性が高い(ランチは食事の名詞、美味しいは形容詞)

そしてようやく、「私は同僚と、美味しいランチを食べました」が正しい解釈だと解析します。

アノテーション
AI(人工知能)の学習には、大量の意味を与えたデータ「教師データ」が必要不可欠です。その教師データを作り出す作業を「アノテーション」と言います。いくつかあるアノテーションのなかでも、以下の2点は自然言語処理を進めるうえで重要です。

  • 意味的アノテーション

単語の属性に対してタグ付けをするのが意味的アノテーションです。

例えば、
「いつもお世話になっております。○○株式会社の△△です。」
という文があった場合、○○株式会社=会社名、△△=名前という形でタグを付け、教師データとして記録します。
形態素解析の部分で実施された、名詞や形容詞へ分解する工程も、意味的アノテーションの1つとして捉えられます。

そうして集められた大量の教師データを、機械学習や深層学習などのアルゴリズムに学習させ、チャットボットや自動翻訳などの開発に役立てます。

  • 言語的アノテーション

文章の内容に関する細かい情報にタグ付けをするのが言語的アノテーションです。
形態素解析や構文解析の部分で解析された言語をもとに、代名詞の指示対象や単語間の係り受け関係など、人間が解釈している意味と同じようにデータにタグを付けていきます。言語的アノテーションから集めたデータを活用することで、テキストから読み取る感情分析や電話対応の自動化などに自然言語処理を役立てられます。

4. 文脈解析

最後にひとかたまりのパズル同士を組み合わせて絵(文章)を完成させます。

文脈解析とは、複数の文章に形態素解析と意味解析を行い、文同士の関係性を解析することです。

しかし、この行程は単純に文が長くなるだけではなく、お互いの関係性を正しく解析しなければなりません。故に、今まで利用していた「辞書」や「コーパス」の領域を超えて、さまざまな領域の「知識」を機械に学習させる必要があります。ここで「機械学習」「ニューラルネットワーク」も絡んできます。
この複雑さが課題となり、いまだ実用的な文脈解析システムができていないのが現状です。

しかし現在は、談話解析と呼ばれる方法論の研究が進められています。なかでも照応解析は代名詞や指示詞などの指示対象を推定したり、省略された名詞句を補完し処理をしたりする解析で、日本語の自然言語処理になくてはならない解析方法の1つとされています。

最終的に例文以外の文にも同じ手順を行い、文脈解析を行います。

結果、以下のような文章が機械に認識されます。

「今日の昼、私は同僚と、美味しいランチを食べました。食べ過ぎたのか、午後は少しうたた寝をしてしまいました」

形態素解析、構文解析、意味解析、文脈解析4つの手順を踏まえて、自然言語は機械言語へ変換され、データとして利用することが可能になります。

仕組みは長く複雑ですが、コンピューターの性能が向上した現代ではさまざまなライブラリを通して効率よくデータ化できます。Pythonなどのプログラミング言語の人気も相まって、さらなる活用が注目されています。

自然言語処理の活用事例

スマートフォンやパソコンを当たり前のように使う現在では、多くの場面で自然言語処理を応用した技術が使われています。

機械翻訳 「DeepL翻訳」


DeepL翻訳は2017年8月に開始された基本無料機械翻訳サービスです。

DeepL翻訳を提供しているのは、ディープラーニング(深層学習)を軸に、言語向けの人工知能システムを開発しているDeepL社です。運営企業は「DeepL GmbH」で、2009年にドイツ・ケルンにて設立された訳文検索エンジン会社「Linguee GmbH」が前身となっています。

2020年3月に中国語と日本語に対応するようになり、既存の翻訳ツールより高い精度の翻訳文を生成してくれることがネットで大きな話題となりました。

具体的な数値指標を用いて、DeepL翻訳とGoogle 翻訳などの他社ツールを比較した実験はまだありませんが、世界の著名なIT系メディアなどから同ツールの訳文精度に称賛の声が多く挙がっています。

DeepL社の公式サイトには、同社について「DeepLでは、AI技術を一層進歩させるべく日々開発に取り組んでいます。人工知能の可能性を広げ、人々がつながり合える輝かしい未来を実現することが私たちの目標です」というスローガンが記載されています。

機械翻訳 スピーキング評価AI「CHIVOX」


「CHIVOX」は、アプリに向かって英語を話すことで、正しい発音かどうかをチェックしてくれるサービスです。中国が開発した英語スピーキング評価AI技術で、既に世界132ヶ国で導入されており、日本でも利用されています。

米式/英式英語の発音基準との比較のほか、発話が流暢かどうか、なども評価できます。また、チャイルドモード、ノーマルモード、ネイティブモードという3種類のモードを持っていることで、幅広い英語力に対応できる強みを持っています。

かな文字変換予測 日本語入力アプリ「Simeji」

クラウド入力もあり、バリエーションが豊富

中国検索エンジン大手である百度が開発・運営している、スマートフォン用日本語入力アプリ「Simeji」は、その変換精度と新語のバリエーションの豊富さが人気に繋がっています。

対応システム

公式LINEにも、自然言語処理の技術が応用されています。

Ledge.aiでは実際に日本マイクロソフトLINE公式アカウントを開発しました。以下の記事では開発に至るまでの裏話などをまとめてあります。

また、株式会社サイシードが開発した、就活に対する不安やちょっとした質問などをLINEで気軽に問い合わせられる「sAI Chat for University」も学生たちから好評です。

音声対話システム

出典:https://clova.line.me/clova-friends-series/clova-friends/
Siri, Google Assistant, LINE Clovaなどの音声対話システムも、音声データを自然言語処理して検索やデータ照合を行い、結果を音声データに変換してユーザーに答えるという仕組みになっています。

検索エンジン Google「BERT」

Google「BERT」(Bidirectional Encoder Representations from Transformers)の略で、2018年10月11日にGoogleが発表した自然言語処理モデルです。

従来の自然言語処理モデルは大量のデータが必要であり、特定のタスクにのみ対応していましたが、「BERT」は少ないデータ量でさまざまなタスクに応用できるのが強みです。その一方で、ネット上のデータから人々の偏見なども一緒に学習してしまう点が指摘されており、問題解決に向けた研究が進んでいます。

今後、「文脈解析」や「暗黙の了解」など、更に深い言語理解に向けて、実用化と研究が進んでいます。

テキストマイニング


テキストマイニングとは、自由形式で記述された文章を分析するための手法です。たとえばSNSへの投稿をはじめとした大量の文字情報をビッグデータとして有効に活用するうえでも重要な技術です。
自由形式で記述された文章を単語単位に分割し、単語の出現頻度や相関関係、投稿時期などを分析することで、有益な情報を探し出すために使われます。

今後の課題

ディープラーニングを活用した自然言語処理により、形態素解析と構造解析の精度は一層高くなりました。加えて、今まで世界各国に紙で埋もれていた情報や知識はインターネットを通して凄まじい速さで集積されています。

また、新語も次から次へと生まれてきます。辞書やコーパスの更新に伴い、今後も言語学、統計学や深層学習を含めた研究全体としての発展が期待されています。自然言語処理モデルの精度や文脈解析の精度が上がることで、意味理解が可能なAIの誕生が現実味を増してきます。

しかし、自然言語処理の意味理解はあくまでも数字や文字列による疑似的な意味理解に過ぎません。言葉に含まれた感情や内容などの意味を人間のように理解するには、根本的な仕組みから変えていかないといけません。

もしも、真の意味で機械が言葉を理解できるようになれば、ロボットなどの研究も含めて、新しい対話可能AIの実現が見えてくるでしょう。