本文へジャンプ

クイズ

いきなりですが、クイズです。以下の日本語を見て、その元となった英語を推測してみてください。

(a)坊主くぎピット
(b)都市を拉致して水夫にします

 
 
 
 

どうでしょう、分かったでしょうか?正解は以下のとおりです。

(a)坊主くぎピットBrad Pitt
(b)都市を拉致して水夫にしますShanghai City

なぜこんな訳が!

(a)は、普通ある男優さんの名前だと思うことと思います。英語の"brad"には「坊主くぎ」という意味があります。(b)は、"shanghai"という語に、「XXを拉致して水夫にする」という非常にインフォーマルな言い方があるようです。

これらの例は、私が翻訳システムを作り始めた時に遭遇した「面白い」訳の例ですが、なぜこういうことが起きるのか不思議に思うことと思います。翻訳システムの肝は対訳辞書の情報量なわけですが、もちろんゼロから作るわけではなく、既存のリソースを購入してそれをベースにカスタマイズをすることになります。ここで既存の辞書リソースは、いわゆる学習用の辞書ですから、考えられる訳語がただリストとして並んでいるに過ぎません。ほとんどの場合、使用頻度順にならんでいるとかいうことは期待できません。ですので、既存リソースを単純に使うと、たまたま、非常にまれな訳語((b)のケース)であるとか、有名人の名前の一部になっている語((a)のケース)などで、不思議な訳が出てしまうということが起こります。最近は、大量のコーパスが使えるようになってきましたので、実際の使用頻度などに基づいて訳語の順番を並べ替えることができるようになっていますが、それでも完璧なものにはなりません。

このような多義語は非常に沢山あって、その訳語の決定が機械翻訳にとって非常に重要です。以下に有名なものをあげておきましょう。

bank銀行、堤防
sprint春、バネ、温泉
free自由な、無料の
capital首都、資本
He彼、ヘリウム
canできる、缶
バルブ電球(bulb)、弁(valve)

訳語選択の実際

では、実際にこれらの問題をどのように扱っているのかを簡単に紹介しましょう。

人間はどうやっているかと言うと、意味や文脈を考慮しているわけですから、コンピューターでもそれをしようというのが、典型的な試みです。たとえば、共起辞書を使うという手法があります。たとえば、"bank"と言う言葉が、"financial","SEC","stock"などの経済用語と一緒に出てくると、その訳語は「銀行」だろうと推測できます。一方、"river","bridge"などの言葉と一緒だと「堤防」だろうと推測できます。このように、一緒に出てくるだろう単語を登録しておくという手法です。

"free"という語は、上記の共起辞書方式だと、微妙なケースが多々あって、あまり有効に作用しません。そのような場合は、確率的に決定するという手法を取ります。これは、大量のコーパスを用意して、現在の文と同様の文脈内でfree(自由な)とfree(無料の)のどちらの出現確率が高いかを調べるというようなことをします。これは、近年のコンピューターの処理能力の拡大とそれに伴うテキスト・リソースの蓄積(特にWeb上のテキスト)によって可能となってきました。15年以上前の時代にはこのような大量のコーパスはなかったので、研究者が言語的直感により決定していたのです。*1

確率的に決めるのとは違って、一番類似な用例と同じ訳を選択するという用例方式という手法もあります。たとえば、"free homepage"というのを翻訳したい場合、用例として"free mail = 無料メール"というのと"free style = 自由形"というのが登録されているとすると、"free homepage"は"homepage","mail","style"の類似性から考えても"free mail"に近いので「無料の」を選択するということになります。

このように機械翻訳では、様々な手法を駆使して訳語選択を行っています。

コーパス(大量のテキスト)があれば何でもできそうに思ってしまうかもしれませんが、解きたい問題に対するコーパスデータの網羅性やアノテーションの精度(人手による付与の場合、人により付け方に揺れがあることがあります)などの点を考慮する必要があります。この辺が十分じゃないコーパスを用いてしまうと、人間のヒューリスティックスの方が良い結果を出す場合もあります。