自然言語処理の専門でない方にこそ、新しい研究をするチャンスがある

海野裕也氏:こんにちは、プリファードの海野と申します。私は自然言語処理のお話をさせていただこうと思います。自然言語処理という言葉は、多分皆さん聞いたことあると思うんですけども、自然言語処理を専門でやっているっていう方、どれぐらいいらっしゃいますか? 意外といた。

実は、今日のこのスケジュールが言語処理学会の全国大会とかぶっていまして、今、多分裏で京大のほうでチュートリアルをやっているんで、あまりいないのかなと思ってたんですけども、意外といらっしゃると。

今日私がお話するのは、どちらかと言うと自然言語処理をやっていらっしゃらない方向けに、ちょっと自然言語処理をやってみたいと思っていただくようなお話をできればいいかなと思っております。

自然言語処理が専門じゃないんだけれども、ちょっとやってみたいですというような方ってどれぐらいいらっしゃいますか? すばらしい、たくさんいらっしゃいましたね。全然手が上がらなかったとき用のセリフも考えておいたんですけど、大丈夫でした(笑)。

皆さんに今日お伝えしたいのは、実は自然言語処理が専門じゃない皆さんのほうが、この業界で新しい研究をするチャンスがあると私は考えています。ですので、皆さんのほうが実は、新しい研究ができるんだぞっていうことを今日、全体の中でお伝えできればいいなと思います。

話としては2つ話します。最初に、自然言語処理界隈でホットな話題っていうものを話します。もう1つは、この研究分野とその周辺の分野の研究の関係っていうところをお話します。後半のほうが、実際にはお話したい内容で、皆さんのほうが新しい研究ができるはずだって私がなぜ思っているかっていうところの話になります。

「基礎か、応用か」と「浅いか、深いか」という2つの軸

最初に自己紹介なんですけども、海野と申します。今日、ご講演される先生の中で私だけ大学の先生でもなければ、大きな会社でもなくて、小さなベンチャー企業で働いております。

もともと修士を出た後にIBMの研究所のほうで研究員として働いていました。2011年から今の会社のプリファードインフラストラクチャーという小さい会社にいます。ちなみにこの会社、名前聞いたことあるぞっていう人どれぐらいいらっしゃいますか? 意外といらっしゃいます。すごい小さい会社なんですけど。

実際に中で何をやってるのかと言うと、自然言語処理関係の話ですとか、検索エンジンというものを作っていたりします。その検索エンジンの中でも自然言語処理の技術っていうのは使われています。

最近ではデータ解析ですとか、画像解析といったところもやっております。私自身は、一番下にちょっとあるんですけども、NLP若手の会という、NLPというのは自然言語処理のことですね、Natural Language Processing。これの若手の会の委員長というものを去年からやっております。こちらもいろいろなシンポジウムとかあるので、ぜひ参加してください。

一番最初に、自然言語処理界隈でホットな話題というところをお伝えしていきます。一口で自然言語処理と言っても、分野があまりにも多すぎて、いっぱいありすぎるぞと。しかも、いろんなカテゴリーが、いろんな方向にできていると。

大体その分野の全体を見ようとしたら、2つ軸があると思っています。1つは基礎的な分野か応用よりの分野かという軸。応用っていうのは、例えば検索だとか翻訳みたいなもの。実際に皆さんが何かしら使うアプリケーション。

一方で基礎的なところっていうのは、例えば単語を解析するだとか、文を解析するみたいな地味な処理ですね。基礎的なほうが皆さんあんまり知らないようなキーワードが多いかなと思います。

もう1個軸があって、処理が浅いか深いかっていうところですね。処理が浅いっていうのは何かって言うと、文字に近い。表層の情報に近いような処理をするものが浅い処理というイメージ。

もう一方で深い処理は何かっていうと言葉が持っている意味が何を指し示しているのかっていうものを解析するようなイメージです。

自然言語処理のトレンドは、深いほうにうつっている

今、自然言語処理の技術的なトレンドとしては、基礎的な技術も応用的な技術もどちらかというと深いほうにだんだんと移っているような傾向があります。

昔は文字列的に一致するような情報だとか、文字列的な処理が非常に多かったんですけれども、最近はより意味を深く解析するような、そういう研究分野が増えているというようなところがあります。

全部をお話できればいいんですけど、さすがに30分しかないので、1個だけテーマを絞ってお話します。何の話をしようかなと思ったんですけど、やはりこれは機械翻訳の話をしなければならないなと思いまして、機械翻訳の話をさせていただこうと思います。

もう1個迷ったのは、質問応答がちょっと今はやりっていうか、ニュースとかにたくさん出てるんですけど、私は機械翻訳のお話をさせていただきます。

実は私自身は機械翻訳のプロではないんで、自然言語処理の人間ではあるんですけど、機械翻訳の本当に詳しい内容は検索すると見つかると思うので、そういう資料を参考にしてください。

例えば、日本の研究者ですごい有名な渡辺太郎さんの2012年のチュートリアルなんですけども、こういうところを参考にしていただくと非常に深い内容が書かれていると。

「統計的機械翻訳」の衝撃

まずは機械翻訳って何だよって話ですね。皆さん機械翻訳のツールを使ったことってありますか? 機械翻訳って何かっていうと、ある言語で書かれたテキストを入力すると、別の言語で同じ意味の内容を出力すると。日本語で入力してあげるとそれに対応する英語が出てくるというようなイメージです。

実はこの研究っていうのが自然言語処理の分野の究極的なゴールの1つになっています。というのも、自然言語処理という分野ができた1個の動機がこういうものを成し遂げるためです。

これはもう数十年という歴史があって、ずっと昔からこの分野は研究されています。今日はこの機械翻訳のお話させていただこうと思った理由っていうのが、93年のすごい有名な論文がありまして。

これは自然言語処理をやっている人だったら絶対に知っているくらい有名、ものすごいリファーされているような論文で、「統計的機械翻訳」っていう1個のカテゴリーがその時にできたんですね。ちょっとこれのお話をさせていただきます。

これは何かって言うと、統計的な手法を用いて機械翻訳をやってしまおうということがいわれました。雑音のある通信路モデルと言われる、「noisy channel model」といわれるものですね。

このモデル自体は、実は翻訳以外にも使われるんですけど、例えば、音声認識といった分野でも同じようなモデルが使われます。先ほどコンピュータービジョンのところで似たような式が出てきたと思うんですけども。

この翻訳前の文「x」が与えられた時に、確率の「P(y|x)」が最大になるような「y」を求めるというようなものです。つまり、「y」のほうが翻訳後の文ですね。観察された(日本語の)データは、もともとの翻訳後の(英語の)文に雑音がのることによって、この日本語の文になったと考えて、元の文を推定する問題だと考えてあげるということをやってあげると。

「x」はここでは日本語ですね、日本語の文が与えられた時に、一番もっとももらしい英語の「y」のほうを推定する問題だというふうに考えて、こういうふうに定式化してあげるっていうような手法です。

言語学者を首にして、統計学者を雇う!?

こういうふうに定式化してあげると、何ができるのかと言うと、ベイズの定理って皆さんご存知ですか? 条件付き確率というのはひっくり返すことができるっていう話があります。

上の式をちょっと見ていただくとわかるんですけど、「P(y|x)」をひっくり返して「P(x|y)」にしてあげると。それと、yの確率「P(y)」の積に書き直すことができる。argmax付きの時ですね(補足:正しくはP(x)で割りますが、argmaxの中でxは固定なので無視できます)。

この2つの項で見てあげると、「P(x|y)」のほうの式が翻訳モデルと言われます。これは何かと言うと、「y」を与えられた時に「x」、つまりその英語の文に対する日本語の文が生成される確率のことで、どういうふうに語順が入れ変わって、単語が訳されるかということを表現している。これの学習には、「x」と「y」の入れ替わった、つまり翻訳関係にある文のたくさんのデータが必要になってくる。こういう対訳データと言われるものが必要になってくる。

肝は後者のほうで、この言語モデルっていうほうをちょっと見ていただくと、こちらは式の中にyしか入ってないですよね。「y」は何かって言うと英語のほうの文章です。この「P(y)」は何を表現しているかと言うと、英語の文らしさを表現してるわけですね。英語の文が自然かどうかを。こちらがその「y」のデータ、つまり英語の文のデータがたくさんあれば、精度よく推定できますと。

つまり、単一の言語のデータさえあれば、すごい精度がよく「P(y)」っていうのは推定することができる。今たくさんデータってありますよね、Webとかに。そういうデータをたくさん持ってきてあげると、「P(y)」のほうはいいパラメータを推定することができると。こちらは大量のデータで精度よく推定できるので、すごい翻訳の性能が上がりましたっていう話がその後はやってくるというような形になっています。

何でこのお話をしたかって言うと、この話ってすごい衝撃をもって受け入れられて、その後どちらか言えば2000年代ぐらいになってから、すごいブームというか、ほとんど機械翻訳の研究はみんなこれを無視できないような状態になりました。

もともと機械翻訳っていうのは、言語学的な解析を積み重ねていって、最初に与えられた文が形態素の列に変換して、それの統語的な構造を解析し、そして意味的な構造を解析する。意味が同じ別の言語の中で同じように文を構築するっていうことをやるっていうのが伝統的なアプローチだったわけですね。

それが直接、さっきの式で表されちゃったわけですね。原文から翻訳文に、この数式で表せますと。当時言われたのか、その後に言われたのはわかんないんですけど、言語学者の首を切って統計学者を雇えば雇うほど精度が上がると言われたというような、そういう逸話があったと。

その時、すごいパラダイム的な変化が起こったということですね。これはすごい衝撃的でした。

「機械統計」から、「ニューラルネット」へ

今どうなっているのかと言うと、もちろん先ほどお話した数式っていうのは90年代の話で、そこからさらにだんだん難しくなっていくわけです。

最初は「x」と「y」っていうのはただのシーケンスとして扱っていった。(単語)列から(単語)列への変換として見ていたのが、例えば名詞句みたいなまとまりのある句が、まとまりのある句に変換されるみたいな、その文の中の構造を意識しながら変換するように変わってきていて。

最近の研究的なトレンドとしてはさらにもっと複雑な文の構造を、構文木みたいな複雑な文の構造をもったものから、複雑な構造をもった文の構造への変換を学習するみたいなところに、だんだん移っていると。あんなに構造いらないって言ったのに、結局は構造を考えてるじゃんっていう感じになってるんですけど、だんだん複雑になっている。

さらに去年の秋ぐらいにですね、結構衝撃的な論文が出てきて、それも全部無視してニューラルネットワークでバシッとやったら変換されちゃうとかいう話が、これはGoogleから出てきた論文ですね。

これは、ニューラルネットワークの一種である「Recurrent Neural Network」というものを使ってあげると、文もニューラルネットワークに食わせたら、翻訳後の文がポコポコ出てくるよっていうことを突然言われてしまったと。

20年ぐらい統計で機械翻訳やってきたのに、今度ニューラルネットで全部置き換えようとしてるのかどうかちょっとわかんないんですけども、突然バッと手法自体が変わることがあるというのはちょっと余談です。

こういう複雑な問題も裏では基礎的な技術っていうのが下支えしておりまして、伝統的な構文解析ですとか、自然言語処理とかの構文解析みたいな話ももちろんあります。実際に翻訳をしようとすると大量の文の候補みたいのが出てくるので、その中から効率よく、一番確率が高い文を生成するにはどうすればいいかっていうようなアルゴリズムの問題もあります。

たくさんデータを集めてきた時に、それを使ってどうやって学習の問題に落とすかっていうような機械学習の問題っていうのもあります。だから、こういう基本的な技術に下支えされている。

機械翻訳がトレンドになったのは、ソフトウェアのおかげ

それから、単に技術的な側面というだけじゃなくて、エンジニアリングといいますか、ソフトウェアが流行すると一気にはやるっていうところもあります。2000年代ぐらいにすごいはやった1個の理由が、ここら辺のGIZA++とかMosesといった研究者の中では有名なソフトウェアなんですけども、こういうものが続々と公開されたと。

公開されると今までちょっと実装が大変でこれは手が付けられないと思っていた人も、ダウンロードしてきてデータ用意すると動くみたいなことになった。実はこういうエンジニアリング的な側面っていうのも研究の上では非常に大事だなと思っております。

機械翻訳、実は最近ちょっと熱いんですね。今、言語処理学会の全国大会をやっているって言ったと思うんですけど、発表のかなりの部分が機械翻訳というような状況になっていて。1セッション作るのも大変な分野があるのに、機械翻訳だけ5セッションあるみたいな、それぐらい機械翻訳が今、盛んに研究されていると。

特に、例えばニュースとかを見てみると、NICT、すごい昔から機械翻訳やってますけども、あそこがこういうスマートフォン向けのアプリとかを出しましたとか、NTTドコモが翻訳にこれから力を入れるために会社を設立しましたみたいなニュースが出てきました。

皆さんもご存知のとおり、Googleはずっと機械翻訳をやっていまして、最近リアルタイムで翻訳する機能を公開しました。こんな形でビジネスサイドを見ても、機械翻訳がちょっと盛り上がっているというのが機械翻訳の現状だと思います。

自然言語処理は、多分野にまたがる境界領域

後半の話題ですね。周辺分野のお話をさせていただきます。自然言語処理って、すごい境界領域な分野だと思っています。1つは、自然言語処理っていっても基本的には応用系の分野になるっていうイメージが皆さんあると思うんですけども、実際そうで、さまざまなベースとなるような技術を使って自然言語処理っていう分野が成り立っているっていう側面があります。

一方で、言葉の解析をしただけではまだちゃんとしたアプリケーションになっていなくて、それをさらに例えば情報検索だとか人工知能だとかっていったところに活かしていくといったような話もある。

この技術を輸入する部分と技術を輸出する部分というのが非常に多いので、そういう意味で皆さん別の分野の方っていうのは、実は参入すると新しい価値を出せる可能性が非常に高いという話をします。

特に技術の輸入の部分っていうのがすごい大きくて、実は自然言語処理の分野っていうのは外の技術を輸入することが盛んです。新しい技術が輸入されると、研究の流れがガラッと変わってしまうということがよくあります。

最初に機械翻訳のお話をさせていただきました。先ほどもちょっとお話したとおり、あの時に業界の構造が、もう一気にガラッと変わってしまったんですね。90年代ぐらいに統計の人たちがバアーッと入ってきて、実はそれとは別に機械学習の人たちもバアーッと入ってきて。

それまで自然言語処理っていう言語学の人たちとかと一緒にやってたのが、突然数式ばっかりになったという、業界の構造が変わったと。そういうのをたくさん経験してきたということがありました。他にもちょっといくつか紹介します。

ベイズ統計、LDA、MST Parserという流派が相次いで登場した

これ、2003年、2000年代の中頃ぐらいですね。ベイズ統計といわれるような領域の人たちが一斉に入ってきて、私が院生ぐらいの頃がこういうテーマがすごい盛んだったんですけども、確率的なモデルを作ってあげると。

これは、トピックモデルって言われる分野で、文っていうのは確率的に全部生成されるものだと考えます。文というのは(確率的に)トピックが選択されて、トピックに応じて(確率的に)単語が出てくる、それが文だというふうに考えると。文はどうやって生成されてるんだっていうのを確率の中の世界の話だけで全部片付けようっていうような流派っていうのが出てくる。

2003年、LDAっていう手法が最初に出てきて、そこからより精緻なモデルをどんどん作るのが大流行するというのが、その後数年間続きます。当時はやっぱりこの派の人たちっていうのは、すごい注目されていた。

それからもう1つ、僕が一番好きな論文の1つなんですけども、MST Parserっていうのが、言語処理やってる人だったら大体通じると思うんですけど、これグラフ理論の話がパッと入ってきたんですね。

構文解析っていう技術があるのは多分ご存知だとは思うんですけど、そこの中の1つで、係り受けの構造、単語がどこの単語にかかっているかというかを解析する問題っていうのがあります。

グラフ理論をやっている人の「あたりまえ」が新しい発見を導いた

この問題っていうのは長年、動的計画法で、CKYアルゴリズムっていうものを使うと、O(n³)で解けるということはずっと知られてたんですね。これが2005年に、この問題ってよく考えると最小全域木問題(MST)に定式化できるよねってある人が言って。これはもう最初にMSTに定式化されるって読んだ瞬間に、確かにそうだねって私も思ったんですけども、言われるまで気付かなかった。

それ考えると、それ解く手法ってもう知られてるんですね、0(n²)なんです。ずっと誰も気づかなかったのかよっていうような衝撃があったと。その後、この問題っていうのは大体MSTとかで解くっていうのがバーッと広がって、そうだったねみたいな感じの……。

これ、多分グラフ理論やっている人からすると、当たり前みたいな話だと思うんですけども、われわれはそんなこと知らなかったってことです。

これ、そのもうちょっと後のほうですね。2000年代後半ぐらいに最適化の手法がバンバン出てくるっていうのがはやりました。この頃、私はもう働いていたので、今からちょっと前ぐらいですね。

整数線形計画法っていうのを皆さん聞いたことありますか。これ、最適化の分野でよく使われるような手法なんですけども。文書要約をする時にどの文を残してどの文を残さないかっていう選択するっていう問題を整数線形計画法で解けるぞっていう話が突然出てきました。

この式で表されます。内容の関係性と情報を最大化させて冗長にならないように文を選択することによって文章要約ができるぞと(補足:内容の関係性を表すスコア関数と、冗長性を示すスコア関数の差を最大化させる目的関数に置きます。文を選択するか否かの0/1をとる変数の制約をおいて、先の目的関数を最大化するという風に定式化しています)。こういうやり方ってそれまでなかったわけですね。今はさらに、ここから劣モジュラ最適化とかっていうのがはやったりとかして、本当に外の分野の技術がどんどん入ってくるというようなことが起こりました。

これから流行るのは「深層学習」

今、これから来るんじゃないかってみんな言っているのが、深層学習、Deep Learning。この話は僕じゃなくて、明日IPSJ・ONEでKevinさんがお話してくれるということでぜひ聞くといいかなと思います。どの話も出てきた時には、各研究トピックっていうのは業界全体がガラッと変わるようなことがありました。

この話はすごい大事だと思っていて、皆さん、ご自身の技術っていうのが実は自然言語処理の誰も気づいていないところの問題で適用できる可能性があると。そうすると、一気に第一人者になれるという可能性があるということで、ぜひチャレンジしていただきたいなと思います。

もう1つは、技術の輸出のほうですね。2つタイプがあると思っていて、1つは類似の構造を持つような問題にそのまま適用するっていうタイプ。もう1つは自然言語がインターフェースとなるような分野で使われます。

前者の例としては、これは画像処理、画像の解析に応用したものなんですけども、画像って部分構造と全体の構造みたいなやつっていうのがありますよね? 下の図が伝統的な自然言語の構文解析の話なんですけど、実は同じような方法で画像の構造を解析する問題が解けるよっていうことをやった人がいます。これもニューラルネットを使ったような手法です。

こういうふうに自然言語処理で使われるような手法を外で使ってしまおうというところがたまに見られます。どっちかっていうとやっぱり多いのは、インターフェースとして言語が使われている領域に適用するっていうことが多いです。

「東ロボプロジェクト」における自然言語処理の活躍

例えば自然言語処理を情報検索に、つまり検索エンジンで応用しようとすると、検索エンジンの中で分かち書きっていうものが必要になってきます。それから、これ翻字っていうんですけども、例えば英語のスペルで書かれた地名っていうものが日本語で検索した時に「それ何に当たるの?」みたいなのを翻訳してあげると。同じ音の列を別のアルファベットで表現するっていうのを翻字っていうんですけど、そういうところで使われている。それから検索する時に例えば同義語で拡張してあげて、別の表層文字列でも検索してあげることによって漏れを防ぐっていうことも必要になってくると。こういうところには同義語獲得っていうような技術が使われています。

もうちょっと応用として難しいところの話すると、例えば人工知能に応用するっていうような話があります。「ロボットは東大へ入れるかプロジェクト」って聞いたことある人、どれぐらいいらっしゃいますかね。結構皆さんご存知かと思うんですけれども。

「東ロボプロジェクト」っていう略称がついていて、実はあそこの中にはほぼ各科目ごとに自然言語処理の研究者がついていて、それぞれ固有の問題を解いています。ここに挙げた例っていうのは、数学の問題を解く例になってます。

大ざっぱに数学の問題をどうやって解いてるのかって話なんですけども、まず問題文が与えられたら、その問題文の構造を明らかにします。文を読むっていう作業ですね。文を読んであげると、その問題文が指し示しているような問題文の意図、つまりどういう意味なのっていうのがある論理式で得られるようになっている。出てきた論理式をソルバーを使って解くと解答が得られるっていうような構造になっています。

この大体2ステップになっているんですけども、この前半部分ですね。与えられた問題文の言語学的な構造を解析して、それを数学的な意味の世界にマッピングさせてあげるっていうようなところで使われている。

スマホ時代のインターフェースにおける自然言語処理の重要性

ということで、こういうふうにインターフェースが言葉でやりとりされるような領域っていうのはどこでも応用できるだろうとは思います。先ほどちょっとコンピュータービジョンのところでお話あったとおり、コンピュータービジョンと一緒にやるような話っていうのも今はやってきていて、いろんなところで使われています。

インターフェースとしての自然言語処理ってすごい私は今重要だなと思っていまして、今って皆さん、例えばビジネスのトレンド的にはPCだとかパソコンみたいなところからどんどんスマートフォンみたいな小さなデバイスに移ってきているわけですね。スマートフォンみたいな時代になってくると、(自由に入力できるキーボードやマウスではなくて)インターフェースとして何か言葉なり、アクションなりっていう、すごい制限された状況でこういうデバイス使うことになってくる。

そういう中で実は自然言語処理の重要性って増えてるんじゃないのかなと思っています。例えば音声のインターフェースって一時期すごい話題になりましたよね? AppleのSiriですとか、ドコモのしゃべってコンシェルみたいなもの。Yahoo!さんも出してますね。

こういうのって音声で何か入力するみたいな話って実は2000年代ぐらいにあったんですけども、音声でワープロみたいに使うっていうのはあんまりうけなかったと。それは手で打ったほうが速いよっていうことになってしまう。

ただ、スマートフォンみたいに制限されたデバイスの中で何か操作をさせるっていう意味合いだと、音声で使うっていうのは実は結構適合するんじゃないか。

もう1個は例えばニュースキュレーションみたいなサイトですね。GunosyさんとかSmartNewsさんみたいなの。ああいうところの中でも、私も直接知り合いが何人かいて、自然言語処理やっているような人たちが中にいて、ニュースの解析だとかっていったものをやっている。

なので、こういうインターフェースとして自然言語処理を使っていて、こういうスマートフォンみたいに制限されたデバイスっていうところでこれからもっと使われていくんじゃないのかなとは思っております。

最後にまとめをさせていただきます。今、自然言語処理の研究テーマとしては、トレンドはより深い意味の構造をちゃんと処理するというような方向に移ってきています。ただ、そういう応用的なタスク、意味をとらえるような応用的なタスクっていうところになると、基礎的な解析っていうところも実はすごい重要で、そういうものの積み重ねの上に成り立っているんですよっていうのが1つ目のお話です。

もう1つ目の話っていうのは、この自然言語処理の分野っていうのは非常に技術の輸出入が盛んです。過去に何度も新しい技術が導入されて、業界が一新されるようなことがありました。

これからもどんどん多分変わっていくんだろうなとは思っています。なので、異なる技術を持っているような皆さんのほうが実はすごいチャンスがある。ぜひとも興味があると言ってくださった皆さん、自然言語処理をちょっとやってみていただくとおもしろいのかなと思います。以上になります。ありがとうございました。

制作協力:VoXT