絵文字を「語」として処理する難しさ~定義通りとは限らない、絵文字の意味

バイドゥ「絵文字の意味検索」ができるまで(2)

検索エンジンに意味解析が必要な理由

 バイドゥが今年3月に正式公開したモバイル検索は、初めて絵文字に対応したのが売り物の1つ[*1]。そこでは、単に絵文字がヒットするだけでなく、実際に使われている絵文字の「意味」をふまえた検索結果が表示される。では、この「絵文字の意味検索」はどのようにして作られたのか? 今回はその第2回。

 検索エンジンを作る際、まずクローラーと呼ばれる収集プログラムが、インターネット上に存在するHTMLページ(ソースファイル)をごっそり集めてくる。しかし、そうして収集されたデータは、単なる符号の並びにすぎない。符号化方法がシフトJISかUTF-8か不明だし、そもそも絵文字が含まれているかどうかすら分からない。また、キャリアごとに何種類もある絵文字の表現方法も解析しなければならない。

 前回はそうした違いをどのようにして吸収し、絵文字を1つ1つの符号として扱えるようにしたのかを説明した。次はいよいよ絵文字を意味のある「語」として扱う処理へと進むことになるが、これを2回に分けてお伝えしよう。

 前回までの作業で、モバイルウェブに存在する語を扱う準備が終わったことになる。ということは、このデータをそのままインデックスファイルにまとめさえすれば、検索エンジンが完成するのではないだろうか?

 「違います。ウェブの検索エンジンの面白いところは、ただ単語をとってきたらオッケーではないところにあります。検索語とマッチしたページをバッと出すだけだと、ウェブの検索エンジンとしては全然成り立たないんです。どういう順番で表示するのかとか、どういうものを捨てるのかとか、そうしたことが重要です。」

 そう説明するのは同社プロダクト事業部の水野貴明氏だ。彼は前回説明した、絵文字を符号として処理する部分を担当したエンジニアだ。例えば図書館にある検索システムを思い浮かべてほしい。そこで「絵文字」という語で検索すると、これを書名に含んだ本を1つ残らず一覧表示してくれるだろう。しかし、本当にそれがユーザーの望む結果なのだろうか? 水野氏が言うのはそういうことだ。

 ユーザーが「絵文字」という語を検索する場合、まず欲しいのは絵文字についての基本的な説明されているようなページであるはずだ。競争力のある検索エンジンを作るには、そうしたページが一番上に表示されるような仕組みが不可欠だ。そしてそのために必要なのが、ある語がどういう意味で使われているのかという解析、つまり意味解析だ。

浮かび上がってきた絵文字の3つの用法

 絵文字の検索でも全く同じだ。ユーザーが求める検索結果を表示するためには、どういう絵文字が重要か、どういう絵文字は捨ててよいかという解析が必要となる。この部分を担当したのが同じくプロダクト事業部の萩原正人氏。彼は大規模テキストを対象とした自然言語処理を専門とするエンジニアだ。

 「見通しとしては、たぶん絵文字を“語”の代わりに使う用法、例えば『今日は<ビールの絵文字>を飲む』(図1)みたいな使い方が、検索では重要だろうとは思っていました。でも実際にそれがどのくらいの頻度があるのか、そもそも本当に処理に値するものなのか、そういう統計データは全くなかったんですね。そこで、まずは絵文字の調査から入ったわけです。」


図1 絵文字を語の代わりに使う用法。ここでは3キャリアのうちドコモの絵文字を使用(以下、図2を除いてすべて同)

 そうして集まった用例を眺めていく中で、絵文字の用法はおおよそ3つに分類できることが分かってきた(表1)。それぞれ代表的な用例を挙げておこう(図2)。

表1 絵文字における3つの用法
1)意味的用法直接意味を表し、単語の代わりとして使われる。
2)装飾的用法単に装飾する目的で使われる。無くても意味が伝わる。
3)機能的用法直接意味を表さず、特定の機能を表したり、ユーザーへのナビゲーション補助として使われる。

図2 実際の画面に見る、3つの絵文字の用法。画面はauショッピングモール(http://aumall.jp)

 ただし、それぞれの絵文字に固有の用法があるわけではない。同じ絵文字が意味的に使われることもあれば、装飾的に使われることもある。つまり、絵文字の用法は1つ1つの使われ方から判別すべきものだ。では、萩原氏はこの3つの用法をどのように分析に使ったのか。

 「最終的には絵文字の意味検索がしたいわけです。ユーザーさんがどういったものを求めているのかということを、絵文字の形でヒットさせてあげたいわけですよね。そこでこの3つの用法に対して、どういう処理をしてやれば目的に近付けるかというのを考えたわけです。」

 3つの用法のうち、2)の装飾的用法は、単語の代わりには使われない。だから極端な話、無くても意味は伝わるしユーザーも困らない。したがって検索の対象から外してよいだろう。

 3)の機能的用法はメニューで使われる「数字」の絵文字や、店の営業時間を表すのに「時計」の絵文字を使ったりする用法だ。じつは絵文字の中で最も頻度が多いのはこの用法だ(表2)。これらは「時計」なら「営業時間」という語に置き換えることも可能だが、むしろ特定の機能や情報を与えユーザーを誘導するものとして分けて考えた方が処理しやすい。直接意味を表すわけではないが、装飾的用法のように無くても意味が伝わるわけではない。そこでこの用法は一概に検索対象から外したりせず、それぞれに特化した処理をすることにした。


表2 絵文字の出現ランキング。このうち「0」「1」「9」「家」はほとんど機能的用法にのみ使われる。ドコモ向けインデックスからランダムに抽出した8812ページをバイドゥが調査した結果。なお、すべてのモバイルページのうち絵文字を含むページの割合は46.6%、1ページの平均絵文字数は7.6個、同中央値は5個

 これらと違って、1)の意味的用法は語の代わりに使われる。だからこの用法が最も検索における必要性が高い。「絵文字の代わりに使われる語」とその絵文字を結び付けてインデックス化できれば、ユーザーが求める検索結果を表示できるはずだ。そう考えて萩原氏はこの用法を対象に解析していくことにした。

コロケーションを使った絵文字の意味抽出

 「まず、それぞれの絵文字に対応する単語[*2]、つまり絵文字の『意味』と考えられる単語を列挙していくことにしました。例えば<ビールの絵文字>を例にとると、これは「ビール」という可能性は高いけど、他に『お酒』という意味もありそうだし、『飲み会』っていう意味もあるだろう。そうした意味として考えられるような単語を、なるべく多く列挙しておかないと、次の処理ができません。」

 そこでまず人間を使って絵文字の意味を挙げていこうとしたが、すぐに無理と分かった。

 「キリがないんですよ。もちろん何百人も集めて、思い付いた意味を全部挙げてくださいなんてやればいいかもしれませんけど、コストをかけずに、しかもスケールせずにできるだろうという直感があったので、自然言語処理の技術を使うことにしました。」

 これには2つの方法を使った。1つは隣接する単語を抽出していく方法だ。モバイルウェブでの絵文字の使われ方を観察していくうち、萩原氏は下図のような使用法が多いことに気付く。


図3 モバイルウェブでよく見られる絵文字の使用法の一例

 この例では、<ビールの絵文字>は左側の語を言い換えていると考えられる(前掲の表1で、2)の装飾的用法)。両者は同格だから、「ビール」という単語は<ビールの絵文字>の「意味」とできる。

 さらに萩原氏は、もう1つ面白いことに気付いた。<ビールの絵文字>と「ビール」という単語は、言語学でいう「コロケーション(共起)」の関係ではないか? コロケーションとは特定の語同士が慣用的に結び付くことだ。例えば「よちよち」という語は「歩く」と結び付くが、「走る」とは結び付かない。

 もしも<ビールの絵文字>と「ビール」がコロケーションであるなら、<ビールの絵文字>で修飾されている他の単語もコロケーションとして捉えられるのではないか。さらには他の絵文字の装飾的用法においても、直前、あるいは隣接する単語とコロケーションになっている可能性が高い。そうであるならば、装飾的用法の場合は絵文字に隣接する単語を抽出することで、その絵文字の「意味」を抽出できる可能性が高い。

 実際に絵文字に隣接する単語を見ていくと、図3と同じような使用法が多く見つかった。例えば<ビールの絵文字>は、次のような単語の直後によく出現することが分かった(図4)。


図4 装飾的用法において<ビールの絵文字>の直前によく出現した単語。この絵文字には、こんなにたくさんの「意味」があった!

 このように「ビール」以外にも「お酒」「飲み屋」など多くの単語が<ビールの絵文字>の直前によく出現していることが分かった。これらの単語も図3と同様、<ビールの絵文字>を言い換えている。つまり、これらは<ビールの絵文字>の「意味」と考えることができる。もちろん同じような抽出法が他の絵文字にも使える。このようにして、萩原氏は絵文字の意味とできる単語を列挙していった。

 この作業の副産物として、興味深いことが分かった。ドコモが「台風」、「地下鉄」と定義した絵文字について、隣接する単語(つまり意味)を抽出したところ、以下のような結果になったのだ(図5)。


図5 「台風」「地下鉄」に高頻度で隣接していた単語の抽出結果。前者は直後、後者は両側に出現した例を抽出

 いずれも、ユーザーはドコモが定義した意味では使っていないことが分かる。この絵文字の定義は、端末で「たいふう」と入力するとこの絵文字が候補表示される。そうしたキャリアの「仕向け」とは無関係に、ユーザーは絵文字のデザインを自分なりに解釈し、それに応じた使い方をしているわけだ。はからずしも萩原氏の分析は、そうした絵文字の使用実態をあぶりだした。

 さて、絵文字の「意味」を抽出する方法は、もう1つある。自然言語処理ならではの、計算によって導き出すものだ。それだけでなく次回は素人目には手品のように映る「大技」が登場するはずだ。では、次なる最終回をお楽しみに[*3]

注釈


[*1]……ベータ公開は2009年11月。
[*2]……語の処理をするためには、まず意味を持つ最小の単位に区切る必要がある。この最小の単位が形態素だ。例えばここで例に挙げられている「お酒」「飲み会」は「お/酒」「飲み/会」といったように区切ってから処理される。従ってここで言われる「単語」は、より正確には「形態素列」と呼ばれるべきだ。ただし、この原稿では身近な表現として「単語」を使わせていただくことにする。
[*3]……なお、参考文献は次回に一括して掲載する。


関連情報


(小形 克宏)

2010/7/12 11:00