なぜ、自然言語処理には可能性があるのか？

#なぜ、自然言語処理には可能性があるのか？
## Machine Learning Advent Calendar 2016：9日目

本記事は「<a href="http://qiita.com/advent-calendar/2016/machine-learning" target="_blank">Machine Learning Advent Calendar 2016</a>」9日目の投稿です。


## はじめに――自然言語処理の可能性

「**自然言語処理**」（以下、文脈から明らかな場合は「言語処理」と省略する場合も）は、人工知能の一分野に分類されることが多く、言語処理に機械学習を用いる場合もよくあります。

ただ、人工知能関連で一般にも知られるくらい今流行しているのは、ディープラーニングでしょう。それに比べると、自然言語処理は地味なジャンルだという印象があります。しかしそれでも、私は重要だと考えています。少なくとも、可能性はあると思います。

ではなぜ、重要なのか？　理由は以下で述べていきますが、あまり言語処理だと思われていないが、じつは言語処理の要素があるものを具体例として取り上げましょう。みなさんもよくご存じの検索エンジンです。


***
## 検索エンジンと自然言語処理
### 自然言語処理とは何か？

まず先に、機械学習と自然言語処理について、ざっと概観しておきましょう。機械学習と自然言語処理とは何か、ごくかんたんに定義します。

それは、**機械に学習させるのが機械学習**で、
**自然言語を処理するのが自然言語処理**です。

これでは単純すぎると感じるでしょうから、もう少し補足しましょう。人間がプログラムを毎回書かなくても学習できるのが機械学習で、人間がプログラミング言語などの人工言語を読み書きするのではなく、人間が使っている自然言語を機械で直接処理するのが自然言語処理です。

ですからどちらも、処理を機械で自動化して、人間の仲介を省くことが目的になります。機械化／自動化することで人件費を抑えることが、ビジネス上重要になることは言うまでもないでしょう。


### 検索エンジンと自然言語処理

**検索エンジン**は文字列を扱います。入力が文字列、出力も文字列。その文字列は人間が読み書きします。典型的な自然言語処理ですね。

そしてご存じの通り、（初期の）**Google**は検索エンジンを開発運用する企業でした。みなさんご存じのグーグル大勝利の流れも、まず検索エンジンから始まっています。とすれば、重要性は言うまでもないでしょう。

昔は、ほかの検索サービスが人力で分類していたのに対して、グーグルは機械化／自動化しました。その圧倒的なコストパフォーマンスの良さで、**ブルーオーシャン**を独占するIT系ビジネスの理想形を実現しました。だからグーグルは大成功しました。

もちろん、グーグルと同じ検索エンジンでの後発サービスで、デファクトスタンダードになるのは難しいでしょう。

しかしなにも、検索エンジンだけが自然言語処理ではないので、別の分野にかつてグーグルが開拓したような**フロンティア**が広がっている、と考えてもそうおかしくはないと思います。

さらにダメ押しで、もうひとつ事例を挙げれば、**IBMの「Watson」**は典型的な自然言語処理をしていますよね。


### アーキテクチャの変化

自然言語処理が重要な理由には、ITを取り巻くアーキテクチャの変化もあります。具体的には、**ビッグデータ**の増大、**スマートフォン**の普及、**機械学習**の発展、という三本柱に整理できます。

まず、ご存じのようにインターネットの普及で、ビッグデータは増大する一方です。ビッグデータはたんなる量の多さだけではなく、質の問題があります。Webのテキストは自然言語で書かれているので、これを処理できる方法が求められています。

次に、スマホの普及、さらには将来的に**IoT**や**ウェアラブル端末**など、小型端末の普及、**VRやARなど仮想現実**技術の普及、といったハードウェア環境の変化が挙げられます。

このことは機械学習の実用化と結びついて、**音声認識**技術の需要をもたらします。つまり、スマホなどはデバイスが小さいので、音声認識が可能だと人間は楽で、それを実現するためのディープラーニングなどの機械学習も発展してきていると。じっさい、「Siri」「Cortana」「Alexa」など、音声UIが登場してきていますよね。

ここで、音声認識というのは、音声を認識する技術ですが、認識というのは具体的には、音声を文字列に変換することです。変換した文字列から意味を認識するには、自然言語処理が必要です。つまり、音声認識が主流になれば、自然言語処理の需要も増えます。


### 機械学習を目的から手段に

記事が所属しているカレンダーのテーマでもある機械学習は、本当にゼロから原理的に学んでいくと難しいです。

しかし、流行分野なのでライブラリやクラウドなどが出てきていますよね。とすると、機械学習ができること自体が目的というより、**機械学習を使って何をするか**、という風に別の目的の手段になってきます。

そこで、自然言語処理は、機械学習を使う分野としては有望だと思います。法律、医療、金融、広告、小売、メディアなど、幅広い分野に応用が利きます。自然言語は人間が使っているものなので、このように潰しが利くのが魅力のひとつです。


***
## なぜ、自然言語処理は難しいのか？
### 自然言語処理は難しいからこそ、ブルーオーシャン

ただし一方で、**自然言語処理は非常に難しい分野**です。というよりも、自然言語処理は難しいからこそ、**ブルーオーシャン**なのです。もし、かんたんに進出できるなら、あっという間にもうレッドオーシャンになってるはずです。

メディアの報道が過熱しているので、ディープラーニングで何でもできる、みたいな空気が醸造されましたが、自然言語処理はまだまだこれからの分野です。「**Word2Vec**」など、機械学習のような数理的手法を取り入れるのが、近年の自然言語処理の流行ですが、それでもまだまだ未開拓の分野は広がっています。

さて、ここでは、ただ難解な専門用語をズラズラ並べるのではなく、既存の知識の延長線上でイメージできるよう、大ざっぱに説明します。


### 自然言語処理の千億円級プロジェクト

まず、全体の規模感をつかむために、理想的な自然言語処理を目指したら、どのくらいの規模になるかを見てみましょう。

なお、ここでの「理想的」というのは、自然言語を使っているのは人間ですから、その人間と自然にやり取りできるような、正攻法で汎用的な自然言語処理のことです。

かつて1980年代に、「**第五世代コンピュータ計画**」という計画が、通商産業省（今の経済産業省）によって立ち上げられました。

この予算は約千億円（ただし、実際に使った費用は6割弱）。それでも少なくとも、人間と普通にやり取りできるような、理想的な自然言語処理は実現できませんでした。

この計画では、自然言語処理にすべて予算を使ったわけではなく、むしろ並列推論マシンが（とくに後期の）メインの目的になっていました。しかし、言語処理と並列化と無関係というわけではなく、むしろ重要な関係があります。

まあ、今回は概論なので、さらに詳細に踏み込むのは、別の機会にゆずりましょう。

<a href="http://www.nikkei.com/article/DGXNASGM0905J_Z00C14A1FF1000/" target="_blank">ＩＢＭ、人工知能「ワトソン」事業に1000億円投資：日本経済新聞</a>

最近の話もすれば、上記事にあるように、IBMは「Watson」に約千億円（十億ドル）投資するという話があります。

どうやら、理想的な自然言語処理を目指すと、千億円規模の話になるようです。少なくとも、人間と自然な会話をできる人工知能が、一億や二億でパパッと作れたりしないのは確実だろう、ということが分かります。


### 自然言語処理の最終目的地はシンギュラリティ

逆に、理想的な自然言語処理が実現したら、どういう状態になるのか、ということを考えます。

もちろん、人工知能は自然言語処理だけではないのですが、言語処理だけに限って言えば、最終目的地は「**シンギュラリティ（技術的特異点）**」です。

もし、人間の言語をすんなり理解できたら、機械同士で勝手に学習して、加速度的に文明が発達するだろう、ということで特異点なのです。

しかしそもそも、そのような地点に到達できるかどうか分からないし、かりに到達できるとしてもそう簡単ではないだろう、ということが分かります。

もしかすると、シンギュラリティの話をすると、どこかSF的な印象がぬぐえないかもしれません。私自身も、シンギュラリティがいずれ達成できる、という楽観的な見方に懐疑的な部分はあります。

ただ、実現可能性はさておき、方向性だけで言えば、遺伝子技術や（二足歩行）ロボットと同じ、神の領域への挑戦です。遺伝子やロボットがハード面なのに対して、自然言語処理はソフト面での未来技術なのです。

「**自然言語処理は（最後の）フロンティア**」だと私は思っています。現代ではもう地理的な未開の地、新大陸は残っていませんが、「言語」という人類の文明の内側にフロンティアが残っているのです。


***
## 自然言語処理をどう実現するのか？
### エキスパートシステムの発想

前節で、自然言語処理の全体像を俯瞰しましたが、では具体的に何をどうすればいいのか、という疑問は残るでしょう。今度は地に足が着いた視点で、とくに小規模でもできることを見ていきましょう。

「難しい自然言語処理がなぜ可能になるのか」というのは、「難しい人工知能がなぜ可能になるのか」、という問題設定と並行しています。これは「**エキスパートシステム**」の発想です。

人間同様に思考する「**強いAI**」というのは、いまだに実現していません。しかしたとえば、チェスや将棋や囲碁のように、限定された領域での「**弱いAI**」なら、実現しているのはご存じの通りです。

汎用的で万能な強い人工知能を作ろうとすると、「**フレーム問題**」が起こって収拾がつかないので、エキスパートシステムのような弱い人工知能を作る。そして、これは自然言語処理でも同じ面があります。

自然言語処理では、すでに形態素解析や構文解析はかなりの精度でできています。しかし、言語処理で本当に難しいのは、意味解析や文脈解析です。とくに文脈をどう適用するかというのは、フレームをどう適用するか、と同じようなことが起こるわけです。

そこで、**ドメインを特化**して、文脈を固定する、というのがとくに自然言語処理では重要になってきます。このことは分かりにくいので、冒頭の検索エンジンの例を、もう一度違う視点で見てみましょう。


### 自然言語処理から見たグーグルのページランク

グーグルの検索エンジンの初期には、「ページランク」というアルゴリズムをメインに使っていました（今ではもう初期ほど重視されていません）。

これは、HTMLのリンクを、リンク先のページへの投票とみなして、グラフ理論や確率過程論のような数学的な手法で重み付けを行い、検索順位のランキングを決定するというものです。

これ自体は有名な話なので今さらでしょうが、しかし、この記事で注目したいポイントは、**理想的な自然言語処理の難しい部分を、上手く避けている**ということです。

少なくとも初期のグーグルの検索エンジンでは、まともに自然言語処理して、文章の重要性を判断するのではなく、Web、HTML、リンク構造、という**ドメインに特化した処理**をしていました。

つまり、**あのグーグルですら、（初期は）正攻法の自然言語処理ではなかった**のです。まして、われわれは、とくに小規模開発であれば、いかに抜け道を見つけるか、という勝負になります。


### 自然言語処理入門としてのテキストマイニング

機械学習にも、画像認識や音声認識など、いろいろな分野があるように、自然言語処理も、分野が分かれています。たとえば、対話システム、機械翻訳、自動要約など、いろいろあります。

具体的に何をやるかは、もちろん目的に応じて決めますが、ここでは入門しやすい分野を紹介します。それは、「**テキストマイニング**」です。

テキストマイニングはデータマイニングと並行しており、処理が簡易なわりに実用性があるため、実際のビジネスで使われています。テキストマイニングをかんたんに説明すると、テキストを統計的に処理して、何らかの統計的傾向を発見する手法です。

（簡易な）テキストマイニングの処理の流れをざっくり言うと、まずクローラーなどを使って、解析する文章データを集めます。そして、「**MeCab**」などの形態素解析ツールで単語をバラバラに分解した後、集計ツールを使って単語の数を集計します。

テキストマイニングはこのような単純集計だけでなく、本格的な自然言語処理や機械学習を持ち込んで、より実用性を高めることができます。最初は入りやすくて、かつ奥も深いので、オススメのジャンルです。

なお、テキストマイニングほど実用性はありませんが、「**人工無能（無脳）**」、もしくは人工無能を利用した「**チャットボット**」も、自然言語処理の入門用に向いていると思います。

マルコフ連鎖を利用した人工無脳というのは昔からよくありますが、これだと意味や文脈を理解していないので、すぐに会話が破綻します。そこで、本格的な自然言語処理を段階的に導入し、人工無能から人工知能を目指す、という道もあるでしょう。


***
## 結論：自然言語処理は最後のフロンティア

自然言語処理は、人工知能最後のフロンティアです。デバイスの小型化と音声認識の実用化など、アーキテクチャの変化を受けて、市場の可能性も広がってきています。

しかし、言語処理には難しい面があります。難しいからブルーオーシャンなのです。真っ正面から人間並みの自然言語処理を目指そうとすると、いくら予算があっても足りません。

そこで、ドメインを特化して、限定した処理に持ち込むのが、自然言語処理の常套手段です。また、そういう限定された自然言語処理としては、テキストマイニングも入門用にオススメのジャンルです。


***
## 参照
### 自然言語処理
<a href="http://qiita.com/advent-calendar/2016/nlp" target="_blank">自然言語処理 Advent Calendar 2016 - Qiita</a>