私は、ウェブ上の文書を用いて、英語と日本語の訳語対応を推定する研究を行っています。
この研究の内容は一言でいうと、「訳の分からない英語の訳語を、ウェブを利用して自動で見つけてくる」というものです。
例えば、皆さんが英語の新聞記事を読んでいて、訳の分からない「advance team」という語を見つけたとします。普通皆さんが分からない語に出会った場合には、英和辞典などを使って訳語を調べますね?
ところが、この「advance team」は最近よく使われるようになった語で、辞書には載っていませんでした。さて、どうしましょう?
・・・こういうときに、この研究が役に立つのです。
私達のシステムでは、まず報道記事を利用して、「advance team」の訳だと思われる日本語、「先遣隊」「他国領土」「本隊派遣」「報道陣」などを見つけてきます。
次に、ウェブを利用して、これらの日本語に、「これが一番訳っぽい」「これが2番目に訳っぽい」というように順位をつけます。その結果、「先遣隊」が「advance team」の訳として一番ふさわしい、という結果を示してくれます。
さて、私達の研究の詳しい内容を説明する前に、少し余談をさせてください。
私達の研究は、機械翻訳という研究分野に分類されるものです。
機械翻訳とは、機械(コンピュータ)の力で翻訳を行ってくれるというものです。
コンピュータが行うのですから、もちろん人間の力は借りずに、勝手に自動で翻訳してくれることが期待されます。
理想としては、ドラえもんが使っている「翻訳こんにゃく」のように、人間は何もしなくてもすべての言葉を理解できるという状態が実現できれば文句ないですね。
さて、では機械翻訳を実現するには、何が必要なのでしょうか。
例えば、「He wrote this letter.」という英文を、「彼がこの手紙を書きました。」という日本語に翻訳するとします。
まず欠かせないのは、英語の「S+V+O」という文法の形を、日本語の「〇〇が××を△△した」という形に変換することです。
それから、それぞれの英単語を日本語の単語に翻訳することも必要になります。
この2つをコンピュータで実現できれば、コンピュータが自動で英文を日本語に翻訳できるのです。(最近では、この2つを実現する方法とは全く違う、裏技的な方法も研究されています!)
ここまで聞いて分かる通り、私達の研究は、このうちの「単語の翻訳」の部分に関する研究なのです。
「単語の翻訳」において、辞書にないような語を翻訳できるようになることで、コンピュータが自動で単語を翻訳する性能はグッと良くなるのです。
では、私達が研究で作成した、「訳語対応推定」システムの詳細について説明しましょう。
私達のシステムの流れは、上の図のようになっています。
・・・難しい単語がたくさん並んでいて難しいですね。
ではこれを分かりやすいように書きかえてみましょう。
はじめに、システムに訳を知りたい英語を入力します。
始めに見た例でいうところの「advance team」です。
システムは、日本語と英語の報道記事を使って、訳と思われる日本語を見つけ出します。
例えば「先遣隊」「本隊派遣」などです。
実はここまでにも様々な工夫をしているわけですが、それを話し出すとあまりに長くなるので、今回は秘密にしておきましょう。
さて、ここからが大事なところ。 見つけてきた日本語の中から、一番訳らしい語を見つける部分ですよ!
はじめに、このシステムはウェブを利用することで、訳と思われる語に順位をつけると言いましたね。
では実際にはどのようにして利用しているのでしょうか。
実は、「検索エンジン」を利用するのです。
「検索エンジン」とは、皆さんがウェブで何か調べたい語があるとき、その語が載っているページを探してくれる、Googleやyahooなどのページのことです。
「advance team」を、英語のページを調べてくれる検索エンジンに入力すると、「advance team」を含むページをたくさん集めることができます。「先遣隊」などの日本語についても、同じようにして、日本語のページをたくさん集めます。
そして、集めてきたページを比べて、そこに書いてある内容がどれくらい似ているかを調べることで、始めに検索エンジンに入力した語が訳かどうかが判断できるわけです。
もう少し具体的にお話ししましょう。
例えば、「advance team」が載ってるページと、「報道陣」が載ってるページを比べます。
このようにして、「advance team」と、それぞれの日本語について集めてきたページを比べたところ、「先遣隊」が載っているページがもっとも内容が似ていると分かりました。
ということは、同じような内容のページによく出てくるのですから、一番「advance team」の訳らしいのは、「先遣隊」だろう、というようにして、訳を見つけることができるわけです。
これがこのシステムのミソです。
これで解決!あとはコンピュータが勝手にやってくれます!
・・・ではありませんね。これだけではコンピュータは動けません。
ページの内容が似ている、というのはどうすれば分かるのでしょうか。
人間はページを見比べたらいいけれど、コンピュータはそう簡単にはいきません。
それでは、ページの内容がどれくらい似ているか、を調べる方法を次に説明しましょう。
ページの内容が似ているかどうかを調べるには、「文脈ベクトル」というものを使います。
文脈ベクトルの作り方は次の通りです。今回は簡単に見るために、「手紙」という日本語が載っているページの文脈ベクトルについて考えてみましょう。
まず、「手紙」が載っているページの中から、「手紙」を含む文を集めます。そして、集めた文すべての中に出てくる語について、それぞれの語が出てきた回数を数えて並べます。上の右側の図ですね。
この語と回数が並んだものが、「文脈ベクトル」です。
これを使うことで、ページの内容が似ているかどうかが分かります。
理屈は簡単! 内容の似ているページどうしなら、同じような単語がたくさん出てきますね。
ということは、文脈ベクトルの単語とその回数がどれくらい似ているかを比べれば、コンピュータにもページが似ているかどうかが分かるわけです。
それでは、さきほど集めた英語と日本語のページから、「文脈ベクトル」を作って比べることで、ページどうしがどれぐらい似ているかを測ります。
ところが、「文脈ベクトル」をそのまま作ってしまうとうまくいきません。
だって日本語の文脈ベクトルは日本語の単語を並べてできているのに、英語の文脈ベクトルは英語の単語でできているのですからね。
ここでひとつ工夫をしましょう。
英和辞書を使って、英語の文脈ベクトルのうち、翻訳できる部分を翻訳して日本語にしてしまいます。
こうすれば、英語のページから作った文脈ベクトルも日本語になって、比べることができるわけです。
文脈ベクトルがどれくらい似ているかを測るのに、口で「とても似てる」といっても他の場合と比べられないので、どれくらい似ているかを数値できちんと測ることにします。
ここでどれくらい似ているかを測るには、ベクトルの余弦の値を計算します。
ベクトルの余弦は、ベクトルどうしが似ていれば似ているほど1に近くなる値です。
それで、この値を文脈ベクトルの類似度として使うことができるのです。
このようにして、訳語の分からない英語から、訳と思われる日本語を見つけることができるのです。