自然言語処理とは?具体的にどのようなことができるのか

  • HOME
  • 自然言語処理とは?具体的にどのようなことができるのか

自然言語処理とは?具体的にどのようなことができるのか

2020年2月13日 18:11

漢字かな変換、機械翻訳、自動応答システムの精度がここ数年、一気に上がったように感じませんか?

これらのシステムの基幹となっているのが「自然言語処理」の技術であり、完璧とまで言えるほどではないものの、長い文を一発で変換できたり、あたかも人の手が入っているかのように、こなれた文章や応答が生成されるレベルにまで発達しつつあります。

そもそも、自然言語処理とはどのような技術であり、活用することでどのようなことが可能になるのでしょうか?
身近なものとして活用される機会が増えてきた今だからこそ、ぜひその概要を知っておきましょう。

自然言語処理とは

SNS、メール、WEBページ、営業日報や顧客対応のログ、技術文書など、様々な「文章」がデータとして日々蓄積されるようになりました。
自然言語処理とは、このような私たちが日常的に使用していることばや文章データをコンピューターに処理させる技術です。

コンピューターに何らかの処理をさせる場合には、コンピューターに処理させるための機械語やプログラミング言語を使用して命令を与えます。
これに対して、人間が日常的に使用する、コンピューターにとっては曖昧さが残りがちな言語を処理させる技術なので自然言語処理、あるいは NLP(Natural Language Processing)という名前で呼ばれます。

昨今、Deep Learning を活用したモデルが翻訳、文書生成などで優秀な成果を出しており、非常に注目を浴びている分野です。

自然言語処理の特徴

自然言語処理が、数値データ、カテゴリデータの処理と比べて手間のかかるポイントを挙げてみます。

単語、句の分割

文章をデータとして扱うためには、意味のある単語や句を1つのまとまりとして把握する必要があります。
日本語の文章では単語や句の切れ目が自明ではありませんので、まず最初に分かち書きという処理で単語や句の分割を行います。

英語のような単語の区切りが明確な言語の場合には分かち書きは簡単ですが、連語、慣用句のように複数の単語を1つのまとまりとして扱いたいケースもありますので、必要に応じて1つの句としてまとめる処理を行います。

類似表現の統合

「PC」「パソコン」は "同じもの" として取り扱うべきものですが、文字列としての一致しか考えないと別ものとして取り扱うことになってしまい、正確な分析は出来ません。
全角半角、大文字小文字、類義語・同義語、表記揺らぎ、活用形など、本質的に同じ意味にもかかわらず異なる表現になっているデータの統合を行う必要があります。

「PC」「パソコン」のように当たり前なものであればよいのですが、現場や文章が生成された背景となる文化によって意味は様々です。
「LP」と言われて何を想像するでしょうか。
「ランディングページ」、「LPガス」、「レーザープリンタ」、ギターに詳しい人であれば「レスポール(ギター)」、はたまた「LPレコード」を連想するかもしれません。
我々の会社では「Linear Programming(数理計画の線形計画法)」をイメージする人が多そうです。

略称や類似表現のある専門用語というのはよくあるのですが、汎用的な類義語辞書では解決できない上に解釈上重要なことが多いため、分析対象ドメイン(背景知識)にフィットした類義語辞書作成に非常に大きなコストをかけることになりがちです。

ストップワードの除外

ストップワードと呼ばれる、どの文章にも多く出現するような表現を除外する処理も、本質的に意味のある情報を抽出するためには重要です。
英語の「the」「a」「is」「of」、日本語の「です」「ます」「は」「の」などが典型例です。
技術文書の場合の特定の語調や定型文、SNS でのバズワードなど、分析対象のデータの中ではストップワードと見なす必要がある表現もあるため、データの内容を理解して対応する必要があります。

数値情報への変換とアルゴリズムの適用

日常会話などを対象とすると、出現する語彙はすさまじい量になります。

「山下智久ドラマ初回配信見た?」
「昨日?昨日は会社忘年会。料理はいまいち、化調味w」
「わかるー、人数多いと学食クオリティw」
「学食のカレーは神コスパでしょ」

上記のような文章データを、特定の単語が含まれれば1、含まれなければ0として数値データに変換すると次のような形になります(Bag of Word と呼ばれる典型的な数値表現の方法です)。

山下智久 ドラマ 初回 配信 見る 昨日 会社 忘年会 料理 いまいち 化調味 わかる 人数 多い 学食 クオリティ カレー コスパ
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1

この後会話が続けば出現する単語の種類はどんどん増え、膨大な列の表になります。
本質的には元々の文章を超える情報は持っていないのですが、0の分だけ情報がかさ増しされた行列になっており、列が多くなるほどかさ増しされた0の部分が多い行列になります。

一般的にデータ分析をする上でこのように0の多い行列(疎行列、Sparse Matrix)は0以外の値の詰まった行列(密行列、DenseMatrix)のように扱ってしまうと、情報量の割にメモリ使用量が多くなってしまいます。 そのため、データ保存の方法に一工夫が必要なのですが、典型的な多変量解析のアプローチが使いにくいため、対応方法やアルゴリズムが制限されてしまう傾向があります。

自然言語処理で何ができるの?

自然言語処理技術の応用として次のようなものがあります。

機械翻訳

機械翻訳ではコンピューターを使用してある自然言語を別の自然言語に翻訳します。
英語のWEBページを読むときや、英文のメールを出すときに使用している人も多いのではないでしょうか。
少し前までは機械翻訳では不自然な表現になるので使えないという印象が強かったのですが、
近年の Deep Learning をはじめとする機械学習技術を駆使したアプローチでは圧倒的に品質が向上しました。

自動応答

人工知能研究の文脈で、人間のような自然な応答をするシステムを目指してチャットボットのような自動システムが開発されてきました。
古くは人工無脳として有名な「ELIZA」、最近ではマイクロソフトの開発している「りんな」などがあります。

より実用的なもので、AIスピーカーやPC・スマートフォン等のAIアシスタントは自動応答システムの代表例です。
最近はヘルプデスクの負担軽減等を目指して、特定のサービスの問い合わせ対応をするチャットボットの開発を弊社にご相談いただくことも多く、
人工知能研究というよりは現場の負担軽減に役立つシステムを作りたいというニーズが増しているようです。

あいまい検索・類似文書検索

皆様おなじみのWEB上の検索サイトでは、うろ覚えのキーワードや文章を入力した際に期待した検索結果になる確率は数年前と比較して圧倒的に高くなっています。
単純な文字列のマッチングではなく、入力された文字列を解釈して近いキーワードが含まれるページを返すために自然言語処理の技術が活用されています。

技術文書の場合には、自社のドメイン知識を正しく理解して仕事に役に立つ文書を提示してくれるシステムが欲しいというニーズがあり、汎用検索システムではなく自社の既存の文書を学習して適切な情報検索を行うためのアルゴリズム開発や技術検証をご相談いただくことがよくあります。
営業効率化のために、過去の提案書のデータから類似提案を抽出するというような使い方もあります。
いずれの場合も、絶対的な正解のあるわけではない「近い」「似ている」という要件をどのように定量化していくと、気持ち良く使えるものになるのかという調整が難しいタスクです。

分類、スコアリング

機械学習の典型的な分類、スコアリングというタスクにテキストデータを活用したいというニーズも増えてきました。
日報のテキストデータを活用して、工場の異常の予兆検知精度を上げたい、ヒヤリハット報告からトラブルの種類や重要度の分類を自動化したい、営業日報、コールセンターの対応記録などから顧客の見込み度をスコアリングして営業活動を効率化したい、というようなご相談がよくあります。

テキストマイニング

マーケティング、企画などの分野では、アプリケーションとして何かを作りたいわけではないが、既存のテキストデータを使用して何らかの気づきを得られないかというようなご相談もあります。
典型的にはアンケートデータの自由記述文、SNS のコメントなどを活用して製品の評判やマーケットのニーズの抽出があります。
非定型なテキストデータから何らかの定量的な判断指標を得ることが分析の目的ですが、定性的な気付きを得ることが主で、その結果を基にその後のアクションは人間が考えたいというようなタスク設定が多いようです。

自然言語処理を始めるにはどうしたらいいの?

自然言語処理は Deep Learning の影響で特に大きな飛躍を遂げた分野です。
Deep Learning を活用した手法で従来よりも大幅に性能が改善されたという事例が日々報告されています。
このためとりあえず Deep Learning してみようという話になりがちなのですが、できればその前にデータを理解して問題を適切に設定しましょう。

普通の数値データやカテゴリデータの場合は、集計から始めてデータの性質を見極めつつどのような分析を当てていくか検討するのが普通です。
集計で直接的に理解できることを Deep Learning で推定しようとしても無駄ですし、むしろ精度が悪くなってしまいます。
そもそも分からなくても進められること、集計ベースで理解できること、Deep Learning などのアプローチで推定せざるを得ないことを区別して、問題をできる限りコンパクトに設定するのが第一歩です。

対象データが「ことば」になっても基本的には同様です。
数値データは Excel でも簡単に色々な操作ができますが、「ことば」についてはやらなければいけないことが多いので、テキストマイニングツールなどを活用すると良いと思います。
当社でもテキストマイニングツール Text Mining Studio を開発販売しています。
このようなツールでまずはデータ集計、基本的な可視化で見えることを理解しましょう。

データがどのようなものかある程度理解できたら、このデータでやりたいことが実現できるのか考えてみましょう。
Deep Learning をはじめとする機械学習の技法ができるのは過去データからの「内挿」であり、完全に未知の状況には対処できないことを頭に入れておきましょう。
「データはある程度ある」、「熟練の人間なら何とかできそう」しかし、簡単に解決できていないようであればアルゴリズム検討のフェーズです。まずは同じようなデータで同じような問題に取り組んでいる事例を 調べてみましょう。MSIISM においてもなるべくたくさんの事例を公開していきたいと思いますので、参考になれば幸いです。

おわりに

この記事では、自然言語処理やデータ分析の一般論について説明しました。
ただし、具体的なこの問題にどう取り組めば良いのだろうかという話になると、色々な事例に触れてみないとわからないだろうと思います。
ぜひ様々な事例に触れて、現在の技術でどこまで面白いことが実現できるのかを調べてみましょう。

また、もしデータがありながらも処理の仕方が分からない…という場合は、上でご紹介した Text Mining Studio(TMStudio)を試してみるのがおすすめです。
毎月、無料体験セミナーをやっており、セミナーに来ていただくと、テキストデータの処理の基本や持っているデータでどんなことができるかがイメージしやすくなるかと思います。

もしもう少し具体的な問題を抱えていて、「このぐらいのデータでできるのか」「問題の難易度は高すぎないのか」という見極めが難しいという方は、ぜひNTTデータ数理システムにご相談ください。
"数理科学" で "現実世界の問題" を解決するプロフェッショナルとして、実現の難易度やどんな方針で実現できそうかを一緒に考えることで課題解決をサポートします。

最近発表された論文やその周辺技術を調べてお客様のデータで試してみる技術PoC的なお仕事もお受けしています。
今回の自然言語処理も含め、Deep Learning 系は進歩が早く追いかけるのが大変ですが、その分インパクトのある成果が出しやすい分野でもあります。ぜひ、一緒にチャレンジしてみましょう。