自然言語処理(NLP)とは? できることや仕組み、活用例をわかりやすく解説

自然言語処理(NLP)とは?できることや仕組み、活用例をわかりやすく解説

私たちが日頃使う言葉である自然言語には、意味を複数に解釈できる「曖昧さ」が含まれています。自然言語処理とは、コンピュータが、私たちが使う日常の言葉の解釈を1つに絞りながら、できるだけ自然に意味を把握するための技術です。この技術を応用することで、「機械翻訳」や、大量のテキストデータを処理して有益な情報のみを取得する「テキストマイニング」へとつながります。

★自然言語処理を活用した事例はこちら

➡︎【資料ダウンロード】ビジネスにコミットする「データ利活用のガイドブック」

自然言語処理とは

自然言語とは日常的に私たちが使う話し言葉や書き言葉です。人々がコミュニケーションを取るために文化的背景のなかで自然に発展してきた言語であるため、このように呼ばれています。人為的に作られた「人工言語」や「プログラミング言語」が対義語となります。自然言語について詳しく見ていきましょう。

自然言語の定義

つまり自然言語処理とは、日常的に人が使う言葉を、コンピュータが正しく解析し、処理するための技術です。自然言語処理の技術は、コンピュータに話しかけると異なる言語に翻訳してくれる翻訳技術や、企業にある大量のテキストデータを高速・正確に処理するAI技術などにつながっていきます。しかしながら、未だ完璧な自然言語処理は実現できているとは言えません。

なぜ未だに自然な翻訳が実現できていないのでしょうか? それは、自然言語が持つ曖昧さが要因となっているのです。

話し言葉からの自然言語処理を行う場合、一般的にはコンピュータが音声をテキスト化し、テキストを品詞分解、意味を解釈する、という流れで行われます。

具体例で理解を深める

例えば、男の子が父親と一緒にカレーを食べた、という話し言葉をコンピュータで処理することを考えてみましょう。

「今日、父さんとカレーを食べました」
音声をテキスト化し、うまく品詞単位に分割できると、
きょう / とうさん / と / かれー / を / たべました
のように区切ることができます。

しかし、解析が適切でない場合以下のようになってしまう可能性もあります。
きょうと / うさん / と / かれーを / たべました 「京都、胡散とカレーを食べました」
きょうとうさん / と / かれーを / たべました 「教頭さんとカレーを食べました」

このような、複数に解釈できる可能性があることを「曖昧さ」といいます。自然言語では人工言語とは異なり、曖昧さを持つ文章が存在しているのです。

コンピュータが曖昧さを持つ文を一つの意味に解釈し、正しく認識するには、単語の持つ意味や、文脈から判断するための学習が必要です。近年、ディープラーニングの登場により、コンピュータの解釈の精度は劇的に向上しています。

➡︎【資料ダウンロード】ビジネスにコミットする「データ利活用のガイドブック」

★自然言語処理とは、私たちが日常的に使う言葉をコンピュータが処理するための技術
・対義語は「人工言語」や「プログラミング言語」
・自然言語は意味を複数に解釈できる曖昧さを持つ
・自然言語処理の精度は、コンピュータが単語の意味や文脈を学習することで上がる

自然言語処理でできること

日常的に私たちが使う言葉をコンピュータが処理できると、どのようなことが実現できるでしょうか。実際に使われている身近な例を含めて紹介します。

機械翻訳

「機械翻訳」は、自然言語処理でできることの代表例です。外国語と日本語との機械翻訳では、特にGoogle翻訳が有名です。使ったことがある方もいるのではないでしょうか。近年、ドイツのDeepL SE社が開発した「DeepL(ディープエル)」は、より自然な文脈で正確に翻訳が行われるとのことで人気が出ています。また機械翻訳には、カメラで直接テキストをスキャンして翻訳する「カメラ翻訳」や、端末のマイクに話した音声が自動で翻訳される「音声認識翻訳」といったものも存在しています。

音声対話システム・チャットボット

ユーザーの音声での質問に対し自然言語処理を行い、質問に対する回答を音声データに変換して答える「音声対話システム」も身近な例です。iPhoneに搭載されている「Siri」やAndroid端末に搭載されている「Google アシスタント」がその代表です。また、企業のホームページなどにおいて、ユーザーが打ち込んだ質問に、文章の文脈や意味合いを的確に理解した上で、最適な回答を文章化してくれる「チャットボット」も近年よく利用されています。

予測変換機能

コンピュータや携帯電話で単語の始めの数文字を打つと、候補を表示してくれる「予測変換機能」があります。文字入力を削減してくれるこの機能は、特に携帯電話だと便利さを感じている方もいるのではないでしょうか。予測変換の方法としては、入力履歴を参照した候補表示や、内部の辞書を参考にした表示、中には辞書をもとに文脈を判断した予測表示をするものもあります。これらの候補表示には自然言語処理技術が応用されています。

テキストマイニング

テキストマイニングとは、大量のテキストデータから有益な情報を取り出すことです。テキストデータを分類し、文脈や意図を解析することで、知見であるインサイトの発見へとつながります。

例えば、コールセンターでは顧客の対応記録が蓄積されており、このデータには、不満やニーズなどの有益な情報が含まれています。この大量のデータをコンピュータに解析させ、有益な情報を取り出したい場合、「どんなお客様が、いつ、どのような内容を話していたか」を分類した上で、有益と思われる情報を取り出さなくてはなりません。

この処理に使われるのが、自然言語処理です。自然言語処理を用いてテキストマイニングを進めることで、有益な情報のみを抽出し、企業のサービスに役立てることができます。

➡︎【資料ダウンロード】ビジネスにコミットする「データ利活用のガイドブック」

自然言語処理の仕組み

自然言語処理の仕組みを具体的に見ていきましょう。

前述と同じく、子どもが父親と一緒にカレーを食べたという例を使い、話し言葉をコンピュータが解釈するための流れを見ていきましょう。

各段階を行う上で必要となるのが計算機用辞書とコーパスです。まずこの2つについて説明してから、自然言語処理の流れを解説していきます。

計算機用辞書

ニュースなどでわからない単語が出てきた時、辞書を引いて意味を調べることがあるかと思います。この辞書にあたるのが計算機用辞書です。辞書と一口に言っても内容は広く、一般の辞書と同じく意味情報や、調査した単語がどのような品詞や表記などの情報を持つか、はたまた、熟語がどのような言葉と紐づく場合があるかなどの情報まで辞書を記述しているものもあります。

コーパス

辞書を引いて単語の意味を調べた後、本当にその意味であっているかを確認したいときに、その単語が使われている例文を調べることもあるかと思います。この例文集にあたるのがコーパスです。分野によって、単語の使用法が変わることもあるので、様々な分野から実際の使用実態を反映するよう事例を収集し、作成されています。ジェスチャーや視線、表情などの非言語情報が記録されたコーパスも存在しています。

音声のテキスト化

文字をコンピュータに打ち込むときはこの段階は不要ですが、音声対話システムなど、話し言葉をコンピュータに認識させるには、まず音声のテキスト化が必要です。

言語によって音声のテキスト化手法は異なります。日本語の場合、まず音の最小構成単位である「a-i-u-e-o」などの音素を特定します。そして音素から単語への変換表である発音辞書や、単語列が出現する確率分布が定式化された言語モデルを使ってテキストに変換をしていきます。

「きょうとうさんとかれーをたべました(kyo-u-to-u-sa-n-to-ka-re-e-wo-ta-be-ma-shi-ta)」とコンピュータが認識した場合の例をみてみましょう。コンピュータは音素から発音辞書を引き、次のような変換候補を作成します。

1.「今日 / 父さん / と / カレー / を/食べ/ました」
2.「教頭 / さん / と / カレー / を 食べ/ました」

上記2つのうち、言語モデルと照らし合わせると、「今日父さん」という単語のつながりのほうが、「教頭さん」という単語のつながりよりも関係性が高いということがわかり、結果として1が採用されることになります。「今日父さんとカレーを食べました」というテキストが次の段階へ進むことになります。

形態素解析

テキストのみでは、コンピュータには名詞や動詞がどれか、といった情報がすぐにはわかりません。そこで、テキストを「形態素」と呼ばれる意味を持つ最小単位に分け、品詞を解析していきます。

「今日父さんとカレーを食べました」の場合、以下のように解析されます。

「今日 (名詞) / 父さん (名詞) / と (助詞) / カレー (名詞) / を (助詞) / 食べ (動詞) / まし (助動詞) / た (助動詞)」

このように文章を分割して書くことを「分かち書き」と言います。

構文解析

分かち書きされた文章から、どこまでが名詞句で、どこが述語なのか、などの判断し、単語同士の関係性を解析していきます。

形態素解析で得た、分かち書きの文を解析すると、例として以下のような構造が考えられます。

「 (名詞句) 今日」「(名詞句) 父さんとカレーを」「(述語) 食べました」
「 (名詞句) 今日」「(名詞句) カレーを」「(名詞句) 父さんと」「(述語) 食べました」

このように、取りうる構造をすべて列挙していきます。

意味解析

構文解析で列挙された文から正しい候補を絞っていきます。上記の例ですと、コンピュータは、子どもが父さんとカレーの両方を食べてしまったのか、それとも、子どもがお父さんと一緒にカレーを食べたのか、の判別ができません。そのため、辞書を使って単語同士の意味の関係を調べていきます。その結果をもとに、候補から正しく意味内容の解釈を行います。

次の2つを例として見ていきます。

1.「今日、父さんとカレーを、食べました」(子どもが、父さんとカレーを両方食べた場合)
2.「今日、父さんと、カレーを、食べました」(子どもが、父さんとカレーを食べた場合)

1の文を調べると、「父さん」という名詞は食べる対象ではなく、動詞「食べる」の目的語としては関係性が低い。
2の文を調べると、「カレー」という名詞は食べ物であり、動詞「食べる」の目的語としては関係性が高い。

そして1と2を比較した結果、2の方が採用すべき可能性が高いため、「今日、父さんと、カレーを、食べました」が正しい解釈だと解析します。

文脈解析

意味解析で、例文を「今日、父さんと、カレーを、食べました」と正しく解釈することができました。ですがこの文章には実は、主語がありません。このような文中では表現されていないものをゼロ代名詞といいます。今回は前提として、子どもが父親と一緒にカレーを食べた、という設定としておきましたが、このような設定がない場合、子どもではなく、別の人が父さんとカレーを食べたという可能性があります。

このように、1つの文だけでは、正しく主語を補うことができない文も存在します。そこで最後に行われるのが、文脈解析です。これは、複数の文に対して形態素解析と意味解析を行い、文を超えたつながりについて分析していくものです。難易度は高く、実用への応用までは至ってはいないのが現状です。

➡︎【資料ダウンロード】ビジネスにコミットする「データ利活用のガイドブック」

モンスターラボのプロダクト事例

実際に自然言語処理をサービスに活用した事例を紹介します。

キャッシュビーデータ|キャッシュバック提供アプリ『CASHb』の画像処理技術改善

画像処理技術の改善によるレシート内データの効率的な取り込みと識別を実現

画像処理技術の改善によるレシート内データの効率的な取り込みと識別を実現

『CASHb』アプリは、キャッシュビーが提供するレシート内の購買データを収集する日本初のキャッシュバックサービス。ユーザーが送付したレシート画像から生活者購買データを取得・活用し、B2C企業にデータを活用する機会を提供しています。

同社が課題に感じていたのは、OCRで取得したテキストをビジネスで活用できるデータに加工するための正確なデータ収集の仕組みの構築。また、これまで画像から正しくデータを読み取れなかった情報処理は人の手で行われており、それに伴う作業時間とコストの削減も課題となっており、精度の高い画像処理技術の開発が急務となっていました。

モンスターラボは、画像処理技術を改善し、AIの画像認識精度を向上させることを提案。どんな画角の画像でも認識できるように、抽出技術をリサーチしては改善を繰り返した結果、これまで人の手に頼っていた確認作業を大幅に削減でき業務効率化に繋がりました。

現在、モンスターラボは自然言語処理のAIエンジン開発に着手し、収集したデータをより有益なものにする取り組みをサポートしています。

★事例について詳しくはこちら


まとめ:自然言語処理はコンピュータに人間の言葉を理解させるための技術

自然言語処理は、コンピュータが自然に人間のように言葉を把握できるようになるための技術であり、音声認識や翻訳、テキスト情報の解析に活用されています。ディープラーニングを活用した自然言語処理により、形態素解析と構造解析の精度は一層高くなりました。

自然言語処理を活用することでコンピュータが可能な業務を増やすことで、より有益な業務に集中することができるようになります。少子高齢化により労働人口の減少が始まっている日本において重要な課題です。現状の技術を踏まえ、業務で取り入れられることはないかを検討していきましょう。

自然言語処理の活用を検討している企業ご担当者様へ

モンスターラボではお客様からのアプリやWebサービスの開発に関するお問い合わせ・お見積もりのご依頼を随時受付しております。
モンスターラボが提供するサポートの詳しい概要は、下記のボタンから資料をダウンロードしてください。
DX支援サービス紹介資料ダウンロード

直近のイベント

記事の作成者・監修者

平田 大祐(株式会社モンスターラボ 常務執行役員)

平田 大祐(株式会社モンスターラボ 常務執行役員)

2004年IBMグループに入社し、IBM ITスペシャリストとしてシステム開発に従事。 2009年からベンチャー企業にて受託開発、コンテナ型無人データセンターの管理システム、ドローン開発などソフトウェアからハードウェア開発まで幅広く関わる。チーフテクノロジストとして2015年にモンスターラボへ入社し、2018年4月より最高技術責任者であるCTOに就任。 プロフィールはこちら