【事例付き】自然言語処理とは!仕組みやライブラリを解説
初心者向けにAI(人工知能)を構築する上でよく使われる自然言語処理とは何か詳しく解説しています。自然言語処理の仕組みや原理、ライブラリを説明しています。普段使われているサービスの事例も紹介しているので、ぜひ参考にしてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
2016年末頃、Google翻訳の翻訳精度が飛躍的に向上し、大きな話題となりました。それまでは、英語を日本語に翻訳すると不自然な文章になってしまうことも多かったのですが、現在では、より自然な日本語の翻訳結果を得られるようになっています。それには人工知能(AI)の研究成果が深くかかわっています。
SNSや自然言語の情報をデータ分析する上で、自然言語処理の理解は欠かせません。
自然言語処理とはどのような技術か、実際にどのようなサービスに使われているのか、ぜひ知っておきましょう。
なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。
目次
今回は自然言語処理について解説するよ。
田島メンター!自然言語処理って、なんだか難しそうですね。理解できるでしょうか〜?
丁寧に説明するから大丈夫だよ。詳しく見ていこう。
分かりました!
自然言語処理とは
自然言語処理とは、私たちが日常的に使っている言葉(以降「自然言語」と表記します)をコンピューターに処理させる一連の技術のことです。人工知能(AI)と言語学の一分野です。
自然言語は、人間がお互いにコミュニケーションを行うために自然発生しました。そのため、プログラミング言語と違い、曖昧さを含みます。また文化的な背景、時代や地域によって様々に変化するため、ルール化が難しい、コンピューターにとって扱いづらいという特性があります。
自然言語処理は、とても古くから研究されており、その研究分野は多岐に渡ります。また現在でも毎年のように各分野で新しい技術が生まれています。
自然言語処理の仕組み、原理とは
自然言語処理は、「形態素解析→構文解析→意味解析→文脈解析」の順で行われます。
また、自然言語処理の前段として、処理対象となる文章群(コーパスといいます)と、単語を識別するための辞書が必要となります。現在では、インターネットを経由して、日々大量の言葉がやりとりされ、多くの新しい単語が生まれています。
処理対象となる文章を収集することが、とても容易になったとも言えます。また、それらの文章から自動的に辞書を作る試みも行われています。
形態素解析
自然言語を、辞書や文法ルールをもとに、「意味を持つこれ以上分割できない最小の単位(以降、総称として「単語」と表記します)」に分割する作業です。
例えば「高い富士山と海が美しい。私はそれを彼女に伝えた」という文章があったとします。前半部分「高い富士山と海が美しい」を形態素解析すると、以下のようになります。
自然言語処理では多くの場合、単語を1つの単位として表し、以降の「構文解析→意味解析→文脈解析」の処理により意味を導き出して行きます。そのため、形態素解析は、自然言語処理で必要不可欠な最初の手順となります。
英語を含む多くの言語では、基本的に単語と単語の間はスペースで区切られているため(わかち書き)、単語への分割は非常に容易です。しかし日本語や中国語、タイ語などでは、通常単語と単語の間にスペースを挿入しないため、文を単語に分割する処理はより複雑となります。
構文解析
形態素解析で得られた単語の関係性を解析する作業です。
係り受け解析とも呼ばれます。構文解析の結果は「構文木」というもので表すことが出来ます。例えば「高い富士山と海が美しい」を構文解析した構文木は以下のようになります。
しかし、もう一つの例として、以下のように「高い」が「富士山と海」に係る例も考えられます。
日本語に慣れていると、前者が正解だということがすぐ分かりますが、それは構文解析とともに意味解析も行っているためです。構文解析段階では、どちらも正解となります。
意味解析
構文解析で文章の係り受けの構造が把握できました。しかしこの状態では、
- 高いのは富士山だけか、海も高いのか
- 美しいのは「高い富士山と海」なのか、海だけ美しいのか
といった点がはっきりしておらず、正しいものを選択しなければなりません。これは、「意味」を利用して正しい構文木を選択することを意味します。それが意味解析です。
意味解析では、辞書をもとに、単語と単語の関連性を調べながら、正しい構文木を選択します。
- 「富士山」と「高い」は関連性が高い
- 「海」と「高い」は関連性が低い
- よって、高いのは富士山だけ
しかし、意味解析は、コンピューターにとっては非常に難しい作業です。コンピューターは「意味」という概念は分かりません。ルール化して伝える(プログラムする)必要がありますが、前記した「単語と単語の関連性」だけが「意味」のルールではないためです。
例えば「高い富士山」と表現すれば、「山としての富士山」を想像しますが、場合によっては「富士山」という商品があり、その価格が高いということを意味しているのかもしれません。
また、前出の文章「高い富士山と海が美しい。私はそれを彼女に伝えた」において、「それを彼女に伝えた」の「それ」とは何を指すのでしょうか? その答えを得るには、文脈を通して判断する必要があります。
文脈解析
文脈解析は、複数の文を通して、形態素解析と意味解析を行います。文脈解析は、単に解析の対象が長くなっただけではなく、文の関係性も解析しなければならない、とても複雑な作業です。
例えば「高い富士山と海が美しい。私はそれを彼女に伝えた」において「それ」は直前の文章を指します。しかし文章の並びをかえるだけで、とたんに「それ」が指すものは分からなくなってしまいます。
「私はそれを彼女に伝えた。高い富士山と海が美しい」
ここまでの、形態素解析→構文解析→意味解析→文脈解析の過程を経て、やっとコンピューターが自然言語処理を完了した状態となります。それでは、冒頭にお伝えした、Google翻訳の翻訳精度の向上と人工知能(AI)とは、どのような関係があるのでしょうか。
人工知能(AI)との関係
形態素解析と構文解析は、コンピューターにとって比較的行いやすい作業です。しかし意味解析や文脈解析は、より高次元な判断が必要となります。これまで、コンピューターによる翻訳結果が不自然な文章になりがちだったのは、正しい意味解析や文脈解析を行うのが、非常に難しかったからです。
意味解析や文脈解析を行うには、大量のデータでコンピューターに学習させることが必要です。
大量のデータでコンピューターに学習させることを「機械学習」と言います。「機械学習」は人工知能(AI)で総称される技術の1つです。
従来は、紙の辞書を編纂するように、人間がひとつづつ、単語意味や関連性を記述してコンピューターに学習させていました。もととなる文章も、新聞や書籍などから転記していたため、非常に手間と時間がかかりました。
しかし2000年代に入り、高速・高性能なコンピューターが容易に入手できるようになりました。また、インターネットの発展により、従来より格段に多くのデータを収集できるようになりました。
大量の学習データを高速にコンピューターに学習させることができる環境が整ったことで、これまでの何倍ものスピードで、意味解析や文脈解析の学習が行えるようになりました。それにより、コンピューターが人間により近い「意味」の概念を習得できるようになり、自然言語処理の精度が飛躍的に向上することになりました。
自然言語処理の事例
それでは、自然言語処理が使われている例をいくつか見てみましょう。
日本語入力(かな漢字文字変換)
キーボードで入力した「かな文字」を「漢字混じり文字」に変換する際、自然言語処理が使われています。ワープロの時代から研究されている分野で、最近は長い文章も精度良く変換できるようになっています。
機械翻訳
冒頭にお伝えした、Google翻訳をはじめ、ここ数年で急速に精度が上がってきている分野です。また合成音声と組み合わせたサービスも一般的になってきています。
対話システム
音声または文字で入力した文章を、コンピューターが理解して応答を返すシステムです。スマートスピーカーやSiriなどのアシストサービス、LINEのボット(自動応答システム)などがあります。また、対話システムを容易に構築できるAPIも提供されています。
- Amazon Echo
- LINE Clova WAVE
- Google Home
- Siri
- Cortana
- りんな Microsoftが作成したLINEの自動応答システム
- Watson Conversation 対話システムAPI
自然言語処理ができるライブラリまとめ
最後に、自然言語処理ができるライブラリについて見ていきましょう。
MeCab
日本語の自然言語処理器(形態素解析器)システムとして最も有名です。
JUMAN
こちらも形態素解析器です。WikipediaやWebサイトから収集した辞書により、MeCabと比較して、最近の言葉でも正確に処理を行うことが可能です。
Cabocha
構文解析器です。MeCabと組み合わせて使用します。機械学習(SVM)を利用しています。
KNP
構文解析器です。Webから自動構築した大規模格フレームにより、より精度の高い解析が行えます。
自然言語処理について、理解は深まったかな?
身近に感じていましたが、とても奥が深い技術なんですね。勉強になりましたー!
気軽に利用できるAPIもあるから、使ってみるといいよ。深層学習や機械学習、画像認識技術については、また別のところで説明するね。
分かりました。ありがとうございました!
今回は、自然言語処理について解説しました。
これから自然言語処理を勉強したい、機械学習を使って何か作ってみたいという方は最初に理解しておきたい内容でしょう。
また、オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。
AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
この記事を監修してくれた方
太田和樹(おおたかずき) 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |