Baidu絵文字検索の苦労話、開発者の文字コードマニアが論文に


 バイドゥ株式会社が2009年9月にベータ公開した携帯電話向け検索エンジン「Baidu モバイル」は、絵文字の検索に対応していることが特徴。簡単に言うと、例えば「電話番号」という文字列と<携帯電話の形の絵文字>を“同義語”として扱う仕組みだ。

 これは、「電話番号」で検索した際に、<携帯電話の形の絵文字>を含むページもヒットするということだ。モバイルサイトでは、店舗などが電話番号を表すのに、「電話番号」という文字列ではなく、<携帯電話の形の絵文字>だけを記載しているページも多く、従来のように「電話番号」で検索したのではうまくヒットしない場合があった。

「Baidu モバイル」トップページ。画面はベータ版公開当初のもので、絵文字対応をアピールしていた絵文字による検索と、検索結果ページ(スニペット)での絵文字表示の例

 しかし、<携帯電話の形の絵文字>イコール「電話番号」と一意的に決まっているわけではない。検索エンジンで絵文字と単語を同義語として扱えるようにするには、数々の問題を解決しなければならなかったという。「Baidu モバイル」の開発を手がけた、同社プロダクト事業部の前川英之氏、水野貴明氏、萩原正人氏に苦労話を聞いた。

 なお、水野氏と萩原氏は、東京大学本郷キャンパスで開催されている「言語処理学会第16回年次大会」において10日、絵文字検索の研究成果をまとめた論文「モバイル検索システムのための絵文字に対する意味解析」をポスターセッションで発表する。検索エンジンの開発に携わるにエンジニアは当然ながら文字コードに精通していることは必須だが、彼らはむしろ、顔を合わせれば何時間にもわたり文字コードの話が尽きることのない“文字コードマニア”なのだという。

日本のモバイルWeb、100文字に1個の頻度で絵文字が出現

 バイドゥでは、絵文字に対応していない従来のモバイル検索は、重要な情報を無視していることになると指摘する。

前川英之氏(右)は、ヤフーで各種サービス開発などを手がけた後、2009年1月にバイドゥ入社。「Baidu モバイル」では、プロジェクトリーダーとしてサービス開発を担当。水野貴明氏(左)は、はてななどを経て、2008年1月にバイドゥ入社。「Baidu モバイル」ではエンジニアとして開発に携わる。Mac誌でのコラム執筆、書籍執筆などライター活動の経歴も

 例えば、「毎晩<ビールジョッキの絵文字>を飲んで~」という文章に対して、この<ビールジョッキの絵文字>の部分を認識できなければ、いったい何を飲んでいるのかわからない。

 一方で、バイドゥがモバイル検索を開発するにあたり何となく感じていたのは、日本のモバイルWebでは絵文字が大きな要素ではないかということだった。メールだけでなく、ケータイ世代の女子がよく利用するようなサイトに行くと「絵文字が踊っている」。これをきちんとインデックスして検索できるようにし、ユーザーに検索結果として表示すること。これが、「Baidu モバイル」で絵文字対応に取り組むモチベーションになった。

 なお、「Baidu モバイル」公開後の2009年11月にあらためて調査した数値になるが、同社がインデックスしているモバイルWebページからランダムに抽出した8812ページのうち、46.6%のページに絵文字が含まれていたという。絵文字を含むページにおいては、1ページあたり平均7.6個もあった。標準的なページ(中央値)では5個で、平均すると約246バイトに1個の絵文字が出現する割合だ。このバイト数にはHTMLタグも含まれており、文字コードによっても異なるため正確な数値は言えないが、だいたい100文字に1個の頻度だとしている。

 「モバイルWebには、我々が予想していたよりもはるかに多くの絵文字が使われている。もっとまじめに取り組まないといけないと思った」。バイドゥでは、携帯電話の絵文字をどうやってインデックスするのか、技術的検討に入った。

文字コードを調べるために、絵文字を1個1個ケータイから送信

 最初に解決しなければならなかったのは、文字コードの問題だ。

 バイドゥによれば、携帯電話向け絵文字のコード領域は、各携帯電話キャリアが独自に決めており、互換性がない。シフトJISの空き領域に勝手に入れるなどして各社導入したものが、バラバラのまま今に至っており、やっかいなことにキャリア間でコード領域が一部重なっていることもあるという。まずは、そのページに使われている絵文字がどのキャリア向けなのかということから判別する必要があった。ただし、それを示す情報は、絵文字そのもの以外に存在しないのだという。

 さらに1つのキャリアの中でも、ある絵文字を表現する方法が複数あるのだという。例えば、「わりと仕様がきれいなNTTドコモ」だけでも、シフトJIS、UTF-8のバイナリのほか、数値実体参照が2種類(UTF-8のコードを16進数で表したもの、シフトJISを10進数で表したもの)あり、Webサイトがどの文字コードで記述しているかによって異なった。さらに、auではIMG要素で記述する方法や、ソフトバンクモバイルではシフトJISのエスケープシーケンスを使用する方法まで存在した。


<太陽の絵文字>を表す表現の種類

 バイドゥでは、このように各キャリアやWebサイトによってバラバラの状態の絵文字の文字コードを、統一した内部的表現に「正規化」して扱うことにした。具体的な仕組みは明らかにしていないが、絵文字をUnicodeで符号化するためにGoogleらが推進している「emoji4unicode」と同様のアプローチだという。すなわち、全キャリアの絵文字を包含する統一コード体系をバイドゥで作り、「Baidu モバイル」の中ではすべてそれに変換して情報処理するわけだ。

 ただし、絵文字の仕様書があっても実機やエミュレーターなどでは動作が異なっている場合もあったとしており、「絵文字を1個1個携帯から送って、その文字コードを調べた」。こうした涙ぐましい努力もあり、コード領域を統一化することで「絵文字を、画像ではなく、文章中に存在する単語と同じような存在として扱えるようになった」。

<ビールジョッキの絵文字>の意味は「ビール」とは限らない

 次に取り組んだのが、それぞれの絵文字の“意味”だ。

 例えば、先に挙げた「毎晩<ビールジョッキの絵文字>を飲んで~」という文章において、<ビールジョッキの絵文字>を単語に置き換える際に、どういう意味で使われているかを判定するのだ。

 NTTドコモのWebサイトにある絵文字一覧を見ると、各絵文字のイメージに対してタイトルが付けられており、<ビールジョッキの絵文字>のタイトルは「ビール」となっている。このことから、この絵文字の意味は当然「ビール」となりそうだが、そう単純なものではない。「お酒」や「飲み会」という意味で使われることも容易に想像できるだろう。

 さらには、NTTドコモのもともとの定義とは全く異なる意味で使われる絵文字があることがわかった。きっかけは、<渦巻きの絵文字>だ。NTTドコモでは「台風」というタイトルを付けているが、萩原氏はこれに納得がいかず、バイドゥがインデックスしているページを調べてみた。すると、「台風」の意味で使われている例は見あたらず、文末などに挿入して「疲れた」「まいった」といったネガティブな意味を表すことが多かった。<悲しい顔の絵文字>と使われ方が似ているという。


もともとの定義と実際の使われ方が異なる絵文字の例

 同様に、定義通りの使われ方が発見できなかった絵文字としては、<霧の絵文字>や<地下鉄の絵文字>がある。<霧の絵文字>はドット状のものが細かくちりばめられた絵柄だが、「大雨」の意味で使われることはあっても、「霧」としては使われていなかった。「頭がクラクラする」といったニュアンスの用法もあったという。<地下鉄の絵文字>は、メトロの頭文字である「M」をかたどったものだが、誰も「地下鉄」の意味では使っておらず、「マクドナルド」や、ひわいな使われ方が多かった。

 すなわち、「台風」「霧」「地下鉄」という文字列で検索した際に、これらの絵文字を含むページがヒットしても何の役にも立たないわけだ。「絵文字を、NTTドコモの定義通りの単語に置き換えればいいかというと、そうではない。実際にどういう意味で使われているかを調べなければ、絵文字を単語に置き換えることはできない」。

「ビール」なのか「飲み会」なのか、文脈から判別してインデックス

 バイドゥでは、各絵文字の意味について、NTTドコモの定義のままではなく、ましてやバイドゥが勝手に決めるわけでもなく、実際にWebページ使用されている例から文脈を抽出するなどして、自然言語処理技術によって明らかにしていった。

萩原正人氏。名古屋大学大学院で情報工学の博士号取得、2009年4月にバイドゥ入社。研究分野は自然言語処理、特に同義語獲得のモデル・手法については国際学会での発表経験も

 例えば、NTTドコモが「カメラ」というタイトルを付けている<カメラの絵文字>は、その定義通り「カメラ」のほか、「画像」「写真」などの意味で使わているが、意味のバリエーションはそれほど多くなかった。これに対して、<ナイフとフォークの絵文字>は、NTTドコモの定義通り「レストラン」という意味のほか、「飲食店」「ごはん」「食事」「飲み屋」「レシピ」など、意味のバリエーションが多岐に渡った。

 こうして、各絵文字を置き換える単語の候補を列挙した同義語辞書ができると、次は、それらの多くの意味の候補の中から、各Webページにおいて、どの意味で使われているのかを判別しなければならない。例えば<ビールジョッキの絵文字>が、「ビール」なのか「飲み会」なのか? 

 これには、自然言語処理における「語義曖昧性解消」という手法を用いている。テキスト文字列の例でいうとわかりやすいが、英語の「bank」という単語が「銀行」なのか「土手」なのか、「plant」が「植物」なのか「工場」なのか、文脈から判定するもので、これを絵文字に適用するわけだ。

 そしてバイドゥでは、文脈と絵文字の意味(使われ方)の対応を機械的に学習させることで、用例集を作成。Webページをインデックスするにあたっては、この用例集に基づき、絵文字がどの意味で使われているかという情報も付加された。

絵柄が違えば意味も異なる~対応キャリア拡大で待ち受ける課題

 このような過程を経てようやく実現した絵文字検索だが、苦労話はこれからもまだまだ続きそうだ。

 「Biadu モバイル」の絵文字検索において、同義語辞書や用例集を整備しているのは、今のところNTTドコモのiモード用絵文字だけである。もちろん他のキャリアにも拡大していく方針だが、そのためには、キャリアごとの絵文字の絵柄の違いが、これまた面倒な問題を引き起こしそうなのだ。

 例えば、<ラーメンの絵文字>は、NTTドコモではどんぶりの絵柄のため、「ラーメン」だけでなく「ごはん」の意味で使われることもある。これに対してauやソフトバンクモバイルの<ラーメンの絵文字>は、NTTドコモに比べるとリアルだ。普通はどう見てもラーメンに見えるため、「ごはん」の意味で使われることは少ないことが予想される。

 また、<バースデーの絵文字>は、NTTドコモでは3本のろうそく“らしきもの”の絵柄だが、auとソフトバンクモバイルでは、3本のろうそくが立ったバースデーケーキの絵柄となっており、単に「ケーキ」の意味で使われることもある。

 このように、同じものを表そうとしている絵文字であっても、キャリアごとに絵柄が異なるということは、同義語辞書や用例集もキャリアごとに微妙に違ってくるということだ。単に、検索クエリや検索結果表示の際に、絵文字の文字コードをキャリア間で変換して処理するだけでは対応できないのだ。「キャリアごとの意味の違いを、どう吸収するかが課題」。


キャリア間の絵文字の絵柄の違いは、意味にまで影響する可能性がある

 「Baidu モバイル」の公開後、<ハンバーガーの絵文字>でファーストフードチェーンのサイトを探すなど、検索キーワードとして直接絵文字を入力するクエリの数も徐々に増えてきているという。実際、テキストの単語を省略し、同義の絵文字を使って文章を書く人が多く存在するのだから、検索キーワードでテキスト代わりに絵文字を使うのも確かにうなずける。

 今のところ「Baidu モバイル」の絵文字検索は、単語の同義語として使われる“意味的”な用法のみを抽出して検索結果に表示している段階だ。しかしながら絵文字は、感情を表現するのに適した方法でもあり、例えばブログを書いた人がうれしくて書いたのか悲しくて書いたのか、あるいは評判のポジ・ネガを判定する要素としても、絵文字は重要になってくる。今後は、感情を表す“装飾的”な用法への対応も研究課題だとしている。


関連情報


(永沢 茂)

2010/3/9 14:36