自然言語処理(NLP)とは?詳しく解説!

皆さん、「AI」や「自然言語処理」という単語を耳にすることが最近増えてきたのではないかと思います。しかし、その仕組みについて知りたいと感じても、「私には難しそう...」と敬遠してしまっている方も多いのではないでしょうか?

ここでは、AIの技術の一つである、自然言語処理について、説明していきたいと思います!

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

自然言語処理とは?クリスタルメソッド株式会社

自然言語処理とは、大量のテキストのデータをAIが分析をする技術のことを指します。自然言語処理は、別名をNLP(Natural Language Processing)とも呼ばれます。人間が普段話す、英語や日本語といった言語をコンピュータに分析をさせるということを指します。

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

「自然言語処理(NLP)」という学問分野は、私たちが専門としているAI(人工知能)研究において中核となる、とても重要な存在です。そしてまた、それは私たち開発者だけではなく、これからの科学時代における日常生活や社会活動の中心に据えられる存在でもあり、もっと大袈裟に言えば、「人間が他の動植物とは異なる複雑な知能を持っている謎」を解き明かす存在でもあります。
現在では「自然言語処理」とは、人工知能の中枢として働いています。

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

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

具体例

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

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

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

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

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

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

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

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

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

自然言語処理の手法

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

形態素解析とは?

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

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

形態素解析・例1:

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

形態素解析・例2:

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

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

◆形態素解析のツール

形態素解析のツール
機械学習・深層学習を持ちて行う自然言語処理のタスクはツールを使って解析するのが一般的です。

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

なかでも、MeCabは オープンソースの形態素解析エンジンで、紹介している他の解析エンジンよりも高速に動作するのが特徴です。また、実際には日本語形態素解析以外にも様々な用途で使用することができます。

MeCab公式ページでは様々な使い方が紹介されており、また、インターネット上の情報も非常に豊富です。様々なプログラミング言語で使用できるので、形態素解析を始めるならMeCabから入るのが良いでしょう。また、また、JanomeはPure Pythonで書かれており、辞書を内包しているのでプログラミング初心者ということであればこちらから入るのも良いでしょう。MeCabの辞書であれば「mecab-ipadic-NEologd 」などが有名です。

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

「辞書, コーパスに依存しない汎用的な設計」「条件付き確率場(CRF)に基づく高い解析精度」「ChaSen や KAKASI に比べ高速」「辞書引きアルゴリズム/データ構造に, 高速な TRIE 構造である Double-Arrayを採用」「再入可能なライブラリ」

http://taku910.github.io/mecab/より引用

構文解析とは?

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

構文解析・例:

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

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

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

「Support Vector Machines (SVMs) に基づく, 高性能な係り受け解析器」「SVM の分類アルゴリズムの高速化手法である PKE (ACL 2003 にて発表)を適用.」「IREX の定義による固有表現解析が可能」「柔軟な入力形式. 生文はもちろん, 形態素解析済みデータ, 文節区切り済み データ, 部分的に係り関係が付与されたデータからの解析が可能
係り受けの同定に使用する素性をユーザ側で再定義可能」「データを用意すれば, ユーザ側で学習を行うことが可能」「内部の辞書に, 高速な Trie 構造である Double-Array を採用」「C/C++/Perl/Ruby ライブラリの提供」

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

意味解析とは?

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

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

意味解析・例:

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

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

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

文脈解析とは?

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

文脈解析・例:

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

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

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

自然言語処理モデル

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

Transformerの特徴

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

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

BERTの特徴

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

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

GLUEのタスク

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

論文:https://openreview.net/pdf?id=rJ4km2R5t7

自然言語の活用事例

自然言語処理の応用例として、機械翻訳があります。
その代表例とも言えるのが、deeplがです。

名前を聞いたことがあったり使ったりしたことがある人は多いのではないかと思います。

DeepL翻訳は2017年に開始されたサービスであって、基本的には無料で翻訳のサービスを利用することができます。ディープラーニングを利用して開発されています。

google翻訳より、高い精度の翻訳をしてくれることが多々あります。

仕事で海外の人や会社と連絡をする際や、学校の課題で英語の文章をつくったりする際に使用することが多いと思います。

語彙、慣用句、フレーズ単位で翻訳文を探し出し、最適な文章を生成してくれます。また実行時間も早いのが特徴です。

弊社の取り組み

弊社では自然言語処理を用いた自社エンジンを開発しています。


自然言語処理の応用例の1つとして挙げられるのが、機械と人間とが会話できる対話システムであり、弊社が開発したAI HAL3も対話システムの1つです。

また他には、入力された日本語に対して読みがなをカタカナで出力する「カナふりサービスAPI」です。 こちらは試用版を無料で配布していますのでぜひ一度お試しください。

他にも、様々な応用のための自社エンジンを開発しているため、企業様のご要望に沿ったご提案ができます。

お問い合わせはこちらからお願い致します。

[関連記事]
量子コンピュータはシンギュラリティの実現に近づけるか。量子理論によってコンピュータの計算能力は大きく進歩しました。それによってシンギュラリティ―技術的特異点―は確実に実現に近づきました。ではいつ実現するのか?2045年問題とは?以下の記事でイチから解説します!是非ご覧ください!
>> シンギュラリティとは?意味やいつ起こるのか解説