Product -NLP-

自然言語処理(NLP)とは?できることなどをわかりやすく解説!

自然言処理(NLP)とは、その名前の通り「自然言語=私たちが話す言葉」にデジタル処理(コンピュータで理解しやすい形に変換したり、人間に近い解釈を行う手助けをしたり等)を行い、コンピュータと人間のコミュニケーションを促進させる技術です。

人工知能(AI)には欠かせない処理であり、人間とコンピュータが自由な対話を行える未来へと繋がる画期的な手法となります。

人工知能(AI)についてはこちらの記事をご覧ください。
人工知能(AI)とは?仕組みや技術、できることをわかりやすく解説

ここでは、AIの技術の一つである、自然言語処理(NLP)について、機械学習・ディープラーニング(深層学習)といった話題にも触れわかりやすく解説します!

目次

自然言語処理(NLP)とは?

自然言語処理とは、人間が普段話す、英語や日本語といった言語をAIが処理・分析をする技術のことを指します。自然言語処理は、別名でNLP(Natural Language Processing)とも呼ばれます。

簡単に言えば、コンピュータに人間が話すことば(自然言語)を理解してもらおうとすることです。

学問分野での自然言語処理(NLP)とは、私たちが専門としているAI(人工知能)研究において中核となる、とても重要な存在です。しかし開発には難しい点も多く含まれています。私たちが日常で使用する自然言語は文脈などにより意味が変わってしまう場合があります。このような言葉の曖昧さを機械で処理することが難しい部分の一つです。

自然言語処理(NLP)での難点(曖昧さ)


自然言語処理は、人類に突きつけられた難しい課題です。状況によって常に変化し続ける言葉というもの――日常会話レベルの「話し言葉」から新聞や評論のような「書き言葉」に至るまで、それぞれの言葉がそれぞれのシーンの中で獲得している意味を正確に解析しなければなりません。

具体例

黒い目の大きな猫
——————————————
解釈としては以下の2つがあります。
①「黒い目」が大きい猫
②目が大きい黒い猫

 このように文章だけでは2つの解釈のどちらが正しいか判断できない場合が有ります。私たち人間の場合はそうした「曖昧さ」を簡単に理解できる仕組みが頭の中に組み込まれており、画像や前後文の内容からケースバイケースでどちらが正しいかを判断できます。
しかし、このような「曖昧さ」は機械にとっては非常に難解で、自然言語処理を人間のように複雑かつ高度に行う事が現状では出来ないため、違った解釈で捉えてしまうことが有ります。
もちろん、人間でも対話を行う中で多くの誤解や曲解を行いますが、それらは人間関係や時間間隔を伴うような、更に高次のコミュニケーションの中で生じ得ます。現在の人工知能が獲得している自然言語処理では、それよりも低次の段階で「曖昧さ」を理解しきれないのです。

それでも、自然言語処理は現在に至るまでに研究が重ねられた結果、「どうやら4ステップのルール(原理)を軸として機能を構築すれば、自然な対話をある程度まで可能とする人工知能を創造出来そうだ」という結論にまで至っています。

長年の言語学研究によって明らかにされた言語の構造である
◯「語彙 lexicology」
◯「形態 morphology」
◯「統語 syntax」
◯「意味 semantics」
◯「運用 pragmatics」
という分類を扱う、以下の4つの工程となります。

①形態素解析
文を動詞や名詞、形容詞などの品詞に分けます。

②構文解析
文を主語や述語、目的語に分類します。

③意味解析
構文解析をもとにそれぞれの単語の関係性を判断します。

④文脈解析
文の周りにある文章に関しても形態素解析や意味解析を行います。

自然言語処理は上記のステップを通して自然言語の解析を行います。

自然言語処理(NLP)の手法

ここでは、自然言語処理(NLP)の4つの工程に関して詳しく説明します。

形態素解析とは?

はじめに、「ステップ1:形態素解析」をご紹介します。
「形態素」とは語より小さい単位で意味をもつ最小単位を意味します。化学の世界で語られる「元素」のようなものであるとイメージすれば分かりやすいかもしれません。
英語の「形態素」について考えてみましょう。例えば、現在分詞「going(ゴーイング)」は、語である「go」と進行形を意味する「ing」の2つの「形態素」から成立している事が分かります。文章というものは、このように活用された形(=定形)の語から成り立っていますので、自然言語処理の分野ではその定形の語を構成している「形態素」というブロックに分離をする所から解析を始めるのです。

さて、英語の「形態素解析」はアルファベット言語系によりシンプルな傾向がありますが、日本語はもう少々複雑です。連用形の後ろには助動詞が来たり、連体形で名詞が来たり、「ed」「ing」といった明瞭な「形態素」ブロックが存在しないなど、根本的に成り立ちと仕組みが異なります。よって、日本語の「形態素解析」は「語」ではなく「文節」に対して行われるのが一般的です。自然言語処理を持つコンピュータとしては、そのように日本語を文節に区切りにした方が理解しやすいのです。
例えば、「今日も良い天気です」という文章があるとしましょう。この時、「形態素解析」は英語のように「今日」を「今」「日」と分けたり、「良い」を「良」「い」に分けたりと、そのような分離を行いません。これを行う場合は、「今日(名詞)/も(助詞)/良い(形容詞)/天気(名詞)/です(助動詞)」というような分離を行います。

形態素解析・例1:

「今日も良い天気です」
→「今日(名詞)/も(助詞)/良い(形容詞)/天気(名詞)/です(助動詞)」

形態素解析・例2:

「行かなければならなかった」
→「行か(『行く』の未然形)+なけれ(打消しの助動詞)+ば(接続助詞)+なら(接続助詞)+なかっ(『なる』の未然形)+た(『た』の終止形)」

このように言語体系によってその方法は異なりますが、自然言語処理ではまずはその言語において「元素」として機能しているような語や文節に区切る「形態素解析」を行い、言語というものの理解の第一歩を踏み出すのです。

◆形態素解析のツール


機械学習・深層学習を用いて行う自然言語処理のタスクはツールを使って解析するのが一般的です。
>> 機械学習とは?概要やアルゴリズムを詳しく解説!
>> 深層学習について詳しく説明!

有名な日本語形態素解析ツールとしては、MeCabJUMANJanomeChaSen があります。

なかでも、MeCabは 誰でも自由に利用できる形態素解析エンジンで、紹介している他の解析エンジンよりも高速に動作するのが特徴です。実際には日本語形態素解析以外にも様々な用途で使用することができます。MeCab公式ページでは様々な使い方が紹介されており、インターネット上の情報も非常に豊富です。様々なプログラミング言語で使用できるので、形態素解析を始めるならMeCabから入るのが良いでしょう。
MeCabの辞書であれば「mecab-ipadic-NEologd 」などが有名です。

公式ページで紹介されているその他の特徴としては、以下のようなものが挙げられています。

  • 辞書などのデータに依存しない汎用的な設計
  • 条件付き確率場(CRF)という計算モデルに基づく高い解析精度
  • 他のツール に比べて高速
  •  Double-Array(ダブル配列)の採用により辞書の検索が高速
  • 再入可能なライブラリ

MeCab(和布蕪)とは/github.ioより引用

また、初心者ということであればJanomeから入るのも良いでしょう。JanomeはPure Pythonで書かれており、辞書を内包しているところが特徴です。実際にJanomeを使用したい場合は以下のサイトがおすすめです。

Janomeインストール方法、使い方/note.nkmk.me

また、形態素解析の詳細な説明は以下の記事よりご覧ください。

[関連記事]
形態素解析とは何か?詳しく知りたい方はこちらの記事で詳細に解説していますので、是非ご覧ください。
>> 形態素解析とは、実装を交えて解説します。

構文解析とは?

「ステップ1:形態素解析」が終わりましたら、自然言語処理は「ステップ2:構文解析」へ移行します。この「構文解析」は「統語解析」と呼ばれる事もあります。この解析の簡単な説明としては、「文法的な解析」という事になるでしょう。文が与えられた際、「主語はどれか」「述語はどれか」など、文を構成する要素である語の文法的役割を見つけ出すのです。
コンピュータはそうした文法的役割を「主語 – 述語関係」「修飾 – 被修飾関係」といった具合に、「文を構成する複数の記号間の関係(ツリー関係)」によって処理します。例えば、先ほどのシンプルな文章事例を再び引用した場合、「構文解析(統語解析)」は次のようなツリーの関係性を導く事になります。

構文解析・例:

「今日もいい天気です」
今日→も/も→良い/良い→天気/天気→です

「構文解析」には幾つかのアプローチが存在しています。その中でも最も典型的な解析方法は「下降型(トップダウン)」「上昇型(ボトムアップ)」「下降型」はツリーの最上部にある開始記号「文」から、構文規則を適応しながら下に向かって品詞列を解析していく方法です。「上昇型」はその逆で、最下部にある品詞列に統語原則を適用して上昇し、開始記号の「文」を解析します。

日本語構文解析のツールとしては、CaboChaKNPが有名です。
CaboChaは、公式ページ上で以下のような特徴を紹介されています。

  • Support Vector Machines (SVMs) という機械学習モデルに基づく, 高性能な係り受け解析器
  •  PKE(キーフレーズ抽出ライブラリ)の採用により、分類が高速
  • 固有表現解析が可能
  • 柔軟な入力形式
  • 言葉同士の関係性をユーザ側で再定義可能
  • データを用意すれば, ユーザ側で学習を行うことが可能
  •  Double-Array (ダブル配列)の採用により辞書の検索が高速
  • C/C++/Perl/Ruby ライブラリが使用可能

CaboCha(南瓜)とは/github.ioより引用

KNPはJUMANを作成した京都大学の研究室が作成した係り受け解析器で、JUMANの出力を入力とするのが特徴です。

意味解析とは?


ここまで自然言語処理における「ステップ1:形態素解析」「ステップ2:構文分析」は、文として現れた複数の語または文節のツリー関係を定めて、文章全体の構造を定める事でした。しかし、この時点ではコンピュータはまだ人間のように文章に含まれている「記号の解釈」が出来ているだけであって、「現実的な意味」の理解には至っていません。例えば、「ステップ1:形態素解析」「ステップ2:構文分析」によってコンピュータが「扉」という文字を検索出来たとしても、その「扉」が現実的に何を意味するのかについては理解出来ません。よって、私たちがそのコンピュータに「扉を開けて」とお願いしても、コンピュータ側はその命令を実行する事が出来ないという事になります。
このように、自然言語処理の過程では「単なる記号を、その記号が示す現実的な対象とどのように関係させるか」という観点が必要になる訳です。この関係を理論として構築しようというのが「意味論」という学問分野であり、その「意味論」をプログラム化する事によって自律的に運営する方法がこれから紹介する「ステップ3:意味解析」となります。

現在、一般的なアプローチとして具体的に用いられているのは、形容詞がどの名詞を修飾しているかなど、言葉の意味を保管している「辞書」に基づいた意味を参照し、その文章の意味を解析するという技術が適用されています。例えば、「鮮やかな」「夕焼け」「富士山」という形容詞を用いて文章を組み立てるようコンピュータに指示した時、コンピュータは「鮮やかな夕焼け」と「鮮やかな富士山」という2つの言葉を算出する事が出来ますが、「鮮やかな富士山」というのは「鮮やかな:色がはっきりしている様を表す語」には繋がらないという判断が下されます。この「意味解析」によって、「鮮やかな富士山」は不適となり、「鮮やかな夕焼け」が適切であると自然言語処理を行ったコンピュータは判断するのです。

意味解析・例:

「鮮やかな」「夕焼け」「富士山」
(○)鮮やかな夕焼け
(×)鮮やかな富士山

そしてまた、「意味解析」のステップにおいては、「モダリティ」という考え方も重要な意味を持ちます。この「モダリティ」とは一般的に「意味を表す命題内容に関わらない書き手・話し手の意図」と定義されています。例えば、ある人が「きっと明日は良い天気になるだろう」と語った時、その文には「命題内容=明日は良い天気です」と「話し手の意図=きっと~になるだろう」が含まれているという事になります。
「モダリティ」に関する研究も様々です。「書き手の態度」に関する「判断」「意志」「指示」「保証」「要請」といったモダリティ分類や、「話し手の態度」に関する「伝達態度」「丁寧」「表現類型」「真偽判定」「価値判断」「説明」「テンス」「認め方」「取り立て」といったモダリティ分類があります。この「モダリティ」領域もまた、自然言語解析を高精度化する上で欠かせない重要な議題です。

意味解析と文脈解析には、有名な日本語向けオープンソースツールが存在しないため、今回はご紹介できません。

文脈解析とは?

最後に「ステップ4:文脈解析」についてお話します。通常、私たちが自然言語で取り交わすひとつの文章というのは、それ単体で機能している訳ではなく、複数の文から構成される文章の中に組み込まれる形となっており、必ず何らかの意味的な役割(文脈上の意味)を担っています。
例えば、以下の文で指し示す「あれ」という指示代名詞は「富士山」よりも「鮮やかな夕焼けに映る富士山」の方が正確な解釈となります。

文脈解析・例:

「あれ」という言葉が指し示すもの
(例)鮮やかな夕焼けに映る富士山が思い出される。あれはとても綺麗だった。
(△)富士山
(○)鮮やかな夕焼けに映る富士山

より単純な例で言えば、ある人が相手に向かって「お前は素晴らしいな」と言っても、文脈によっては肯定的な意味ではなく、皮肉やジョークのようなニュアンスを含む事もあります。また上述の事例のように指示語など「特定の意味をもたない言葉」も文脈によって解釈が変わる為、文章同士の関係性が大きな意味を持つのです。
このような言語現象を鑑みて、「ステップ4:文脈解析」では処理対象となる文章を含んだ全体の言語現象を踏まえ、文章中における言語表現の意味的な繋がりや各文の意味的な役割を分析して同定する作業を実行します。アプローチとしては、「照応解析」「修辞構造解析」といったものが用いられています。

自然言語処理の技術をいかして文章から有益な情報を取り出すテキストマイニングという技術が注目されています。
以下のページで、テキストマイニングの記事について解説していますので、是非ご覧ください。

[関連記事]
テキストマイニングとは何か?詳しく知りたい方はこちらの記事で詳細に解説していますので、是非ご覧ください。
>> テキストマイニングとは?ツールや実例まで解説

自然言語処理(NLP)モデル

自然言語処理の代表的なモデルとして、BERT、Transformer、GPT−2などが挙げられます。
今回はこのうち、BERTとTransformerについて説明します。

Transformerの特徴

Transformerとは、2017年に発表された”Attention Is All You Need”という自然言語処理に関する論文の中で初めて登場した深層学習モデルです。それまで主流だったCNN、RNNを用いたエンコーダーデコーダーモデルとは違い、エンコーダーとデコーダーをAttentionというモデルのみで結んだネットワークアーキテクチャです。それによって、機械翻訳タスクにおいて速いのに精度が高いという特徴を持ち、非常に使い勝手のよいものとなっています。

BERTなどの強力な自然言語処理(NLP)モデルの研究の多くは、このTransformerの上に構築されています。
詳しくは以下のTransformerとは?AI自然言語学習の技術を解説をご覧ください。

[関連記事]
Transformerとは何か?詳しく知りたい方はこちらの記事で詳細に解説していますので、是非ご覧ください。
>> Transformerとは?AI自然言語学習の技術を解説

BERTの特徴

BERTの学習には事前学習とファインチューニングと呼ばれる2つの過程があります。
用途を限らず莫大な量のデータを用いて学習させた事前学習に比較的少数のラベル(答え)付きデータ数を加えることで、解きたいタスクに特化させることが出来ます。
つまり少量の教師有りデータで様々なタスクに対応させることが出来るのです。

BERTのもう一つの大きな特徴として双方型の言語モデルであることが挙げられます。BERTはTransformerを利用した双方向型にすることで推論したい単語を含む文章の前後半全てを踏まえることが出来るようになり、NLPタスクの精度を向上させることが出来ました。詳しくは以下のBERTとは?意味から実用例まで詳しく解説をご覧ください。

[関連記事]
BERTとは何か?詳しく知りたい方はこちらの記事で詳細に解説していますので、是非ご覧ください。
>> BERTとは?意味から実用例まで詳しく解説

GLUEのタスク

タスク名入力判定内容
CoLA受容性判定によって文法的に正しいか判断
SST-2映画レビューの文章与えられた文のセンチメントを予測する
MRPCオンラインニュースソースから自動的に抽出された文のペアペアの文が意味的に同等であるかどうかについて判断
QQP質問回答サイトQuoraの質問ペア質問のペアが意味的に等価であるかどうかを判断
STS-Bニュースの題名や動画の字幕などのペアそれらの類似度を1〜5で判定
MNLI前提文と仮説文仮設が含意、矛盾、中立のどれかを判定
QLNI文と質問文文脈文が質問に対する答えを含んでいるかどうかを判断
RTE前提文と仮説文含意か否か判断
WNLI代名詞を含む文と代名詞の対象の選択肢選択肢から代名詞のさす内容を判定

論文:GLUE: A MULTI-TASK BENCHMARK AND ANALYSIS PLATFORM FOR NATURAL LANGUAGE UNDERSTANDING

自然言語処理(NLP)でできること

自然言語処理の応用例の1つとして挙げられるのが、機械と人間とが会話できる対話システムであり、一般的な例としてSiriやGoogle Assistantが挙げられます。これらに加えてクリスタルメソッド社が開発した 対話型AI DeepAIも対話システムの1つです。
そこでは音声処理と自然言語処理の2つの技術が活用されています。これらの技術により機械が人の会話の音声データを取得し、会話の内容を理解して人と機械の対話が可能になります。

また、自然言語処理の技術を更に応用したもので対話行為推定という技術が存在します。これも対話システムに活用されている技術です。名前の通り、話者の対話行為を推定することで人の発言の意図を予測することができ、機械の会話の応答内容がより的確なものになります。

このように自然言語処理の技術はが既に私達の身の回りで活用されている事がわかります。

弊社の取り組み

弊社では自然言語処理を用いた自社エンジンを開発しています。
様々な応用のための自社エンジンを開発しているため、企業様のご要望に沿ったご提案ができます。
バーチャルヒューマン、対話AIへの応用をお考えの方は是非お問い合わせください。