自然言語処理(NLP)とは? | 意味や仕組み・現在の課題と活用例

このエントリーをはてなブックマークに追加

2019年10月25日、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などの検索エンジンがこの手法を用いています。

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

2. 構文解析

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

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

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

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

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

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

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

Ledge.ai編集部で作成

句構造解析

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

Ledge.ai編集部で作成

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

3. 意味解析

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

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

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

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

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

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

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

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

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

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

4. 文脈解析

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

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

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

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

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

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

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

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

仕組みは長く複雑ですが、コンピューターの性能が向上した現代ではこの手順であっという間にデータとして利用できるようになり、活用が注目されるのも納得です。

自然言語処理の活用例

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

機械翻訳

以前は自然言語処理と辞書の照らし合わせというシンプルな手法で翻訳が行われていました。ところが近年、完璧とは言えないものの、翻訳した文章が普通に読めるレベルまで進化してきたと実感した人は多いかもしれません。これは機械翻訳にディープラーニングの技術が組み込まれるようになったためです。SNSやインターネットの普及に伴い、ネットワーク社会で集積されたビッグデータと掛け合わせて、近年急速に発展している分野の1つです。

Ledge.aiでは機械翻訳の発展と英語学習の必要性についてアイード株式会社の取り組みを取材しています。

かな文字変換予測

冒頭の「いぬがねこをうんだよ」の例文でも登場した文字変換システムは、自然言語処理を応用した技術の1つです。近年ではクラウド、ビッグデータやディープラーニングを活用した精度向上が進められています。

なかでも、中国検索エンジン大手である百度の日本法人バイドゥ株式会社が開発・運営しているスマートフォン用日本語入力アプリ「Simeji」は、その変換精度と新語のバリエーションが豊富であることが人気に繋がっていました。しかし以前、利用者の入力情報が許可なく外部サーバーに送信されている問題も発覚したため、不透明な会社運営には不信感も強まっています。


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

対応システム

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

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

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

音声対話システム

Siri, Google Assistantなどの音声対話システムも、音声データを自然言語処理して検索やデータ照合を行い、結果を音声データに変換してユーザーに答えるという仕組みになっています。

検索エンジン

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

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

2019年10月25日にアップデートされ、長い会話型の検索キーワードに対しても高い精度の検索結果が出るようになりました。

今後BERTは「文脈解析」や「暗黙の了解」などの更に深い言語理解を実現できるのではないかと言われており、実用化や研究が進んでいます。

事業での活用例としては、ストックマークが運営する「Asales」というサービスなどがあります。このサービスでは、営業ノウハウを自然言語処理でデータ化し、優秀な営業マンのセールストークなど、ノウハウを横展開することが可能になります。

今後の課題

ディープラーニングにより形態素解析と構造解析の精度が上がり、自然言語処理が実用化され始めていますが、音声認識や画像認識ほど技術が成熟しているとは言えません。

しかしながら、今まで世界各国に紙で埋もれていた情報や知識はインターネットを通して凄まじい速さで集積されています。ストックマーク活用例のように、営業ノウハウをデータ化・分析・活用し始めた企業も出てきました。

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

このような記事も自然言語処理と記事作成特化AIが、更に読みやすく、ユーモアを踏まえて書いてくれる日が来ることを切に願って。