先週の Amit の記事 では、Dr と Doctor/Drive のような例を使って Google の同義語システムについて説明しました。このシステムはもちろん日本語でも有効です。Google は[
ファミマ] と [
ファミリーマート] が同じ意味だと知っています。また、[
Webサーバ 作り方] で検索すると [
Webサーバ 構築] の結果を含めて表示します。
さらに、日本語では重要な「字種違い」にも対応しています。日本語にはひらがな、カタカナ、漢字、アルファベットと、いろいろな字種があります。なので、同じ単語でも「さくら」「サクラ」「桜」、「グーグル」「Google」といろいろな書き方があります。Google はこれらが同じ単語だと知っているので、検索するときに [
Google Earth] ? [
グーグルアース] ? と悩む必要はありません。
この字種違いへの対応は一見簡単そうですが、機械が処理するには難しい問題です。「サクラ」「桜」や「ゴマ」「胡麻」は同じ単語ですが、「オバマ」と「小浜」は違います。「
えんがわ」は漢字で書けば「縁側」ですが、漢字の方で思い浮かべるのは
別のものですよね。また、英単語をカタカナで書く方法にはちゃんとした規則がありません。なぜ tomato はトマトなのに potato はポタトではないのでしょう?
このように、字種違いにきちんと対応するには、単純なルールでは書けない複雑な知識が必要です。人間が頑張って辞書を作るというのは1つの手ですが、最新の単語からマイナーな単語までカバーした辞書を作るのは大変です。そこで Google では、字種違いの単語についての知識を Web などの大量のデータから自動で学習しています。これによって、[
Bernoulli数] (読めますか…?)といった専門用語までカバーするシステムが完成しました。
Google の同義語システムは、大量のデータを学習することで、検索する人の意図に合った適切な同義語だけを適用します。しかし、もし Google で検索していて「検索したいものとは違う単語にヒットしている。入力したとおりの単語がヒットした結果だけを見せてほしい」と思ったら、検索する単語の前に半角の + 記号をつけてください。例えば、[
+グーグルアース]で検索すると、カタカナのグーグルアースを含む結果だけが表示されます。
今回紹介した、字種違いに対応する同義語システムは、東京オフィスのエンジニアが開発したものです。もともとは日本語のために開発したシステムでしたが、実は中国語やロシア語などでも役に立つことがわかりました。例えば、中国語では Nokia を
诺基亚と書きます。現在はこのような日本語以外の言語でも、同じシステムが使われています。
Google の同義語システムは、検索する人の意図を汲み取ってより良い検索結果を表示できるように、今後も改良を続けていきます。