2012年10月27日土曜日

OmegaT トークナイザー プラグインの使い方

OmegaT にはトークナイザーというプラグインがあります。

プラグインというと「無くても困らないから使いたい人だけ使えばいいよ」的な印象を受けるかもしれませんが、実用上は、ほぼ必須です。

トークナイザーというのは字句解析器のことで、と書いても、言い方を変えただけで知らない人には何一つ伝わらないと思いますが、要はこれを使うと、OmegaT が少し(だいぶ)賢くなるのです。単語を識別するようになり、辞書や用語集、翻訳メモリの検索精度が向上し、勝手に掲示板に犯罪予告を投稿しだすというおそるべき効果が期待できます。

というわけで今回は、このトークナイザー プラグインの紹介です。

といっても、話は簡単です。

英語の読める方は、OmegaT 公式サイトに導入手順が詳しく説明されていますので、そちらをご覧ください。

OmegaT HowTo: Using the OmegaT tokenizer

英語の苦手な方は…って、OmegaT ユーザーで英語が苦手な人って、自分以外にいるのかなあ。

いない気がするので、万一いたら Web ページ翻訳サービス通して読んでください(日本語版の記事はまだ無いので)。

ちなみに、たしか英語版のユーザーマニュアルにも同じような説明ページがあったはずです(日本語版は未対応なので、将来の更新に期待)。

このプラグインを入れると何が嬉しいの?

ちょっと実例を示してみます。

まずトークナイザープラグインを使用しない場合です。

原文が含む単語 "tree" に対して、用語集から "tree" がヒットしていることを確認できます(Transtips を有効化しているので、該当箇所に青い下線が表示されています)。これは嬉しいですけれど、まあ当たり前ですよね。

しかし、このまま翻訳を進めていくと、嬉しくない状況に当たります。

分かりづらいかもしれませんが、選択中の分節には "trees" という単語が含まれています。"trees" は "tree" の複数形ですから、先ほどと同じ用語がヒットしてほしいところですね。しかし、ヒットしていません。

OmegaT の既定の状態(既定のトークナイザー)は、英語の複数形を認識してくれない、ということになります。言語によって形態素はまったく異なりますから、言語を特定しない汎用のトークナイザーが語尾変化を認識できないのは、やむをえないところでしょうか。

次はトークナイザープラグインを使用した場合です。

ちなみにプロジェクトをロードした時点で、どのトークナイザーを使用しているかがコンソールに出力されますので、意図通りかどうか確認しておきましょう。

ご覧の通り、原文には org.omegat.plugins.tokenizer.SnowballEnglishTokenizer を、訳文には org.omegat.plugins.tokenizer.LuceneCJKTokenizer を指定しています(この例では、訳文側のトークナイザーは関係ありませんが)。

注:2013/3/21 にリリースされた 0.5-2.1 から、日本語専用に org.omegat.plugins.tokenizer.LuceneJapaneseTokenizer が追加されました。今なら、日本語にはこちらを使うと良いです。

結果はこの通り。

今度は "trees" に対しても、用語集から "tree" がヒットしています。トークナイザーが英単語 "tree" の複数形変化を認識するようになったため、用語集の照合精度が改善されています。

もうひとつ別の例を。

トークナイザープラグインを使用しない場合です。

翻訳メモリから参考訳文が3件ヒットしています。

取扱説明ガイドによると、参考訳文の先頭に表示されている3つの数字は、順に

<トークナイザープラグインを使用した場合の一致率 [%] / OmegaT デフォルトの一致率 [%] / タグや数値、句読点を含めた場合の一致率 [%]>

だそうです。ここではトークナイザープラグインを使用していないので、1番目と2番目の一致率が同じになっています。

次はトークナイザープラグインを使用した場合です。

やはり翻訳メモリから参考訳文が3件ヒットしています。しかし参考訳文の順番が入れ替わっていることにお気づきでしょうか。

トークナイザープラグインを使用した場合の一致率が変化したため、先ほど3番目だった訳文が、今度は1番目に来ています。

正直言うと、YU-TANG は英語力がちょっとアレなので、このケースで精度が改善したと言えるのかどうかよく分からないのですが(例が悪い?)、一般的には精度が改善するはずです。少なくとも、トークナイザープラグインを使うかどうかによって、参考訳文の順位が容易に入れ替わるということは言えるでしょう。

OmegaT には最も一致率の高い参考訳文を自動的に挿入するオプション設定がありますから、翻訳者が目にする自動挿入訳文がトークナイザー次第でぜんぜん違うといった事態がじゅうぶん起こりえます。

なんで本体に入ってないの?

OmegaT は翻訳メモリソフトです。トークナイザーは、その中心機能の照合精度を大きく左右する、とても重要なコンポーネントといえるでしょう。

なぜこのような本来必須ともいえる機能が、プラグイン扱いなのでしょうか。

実はトークナイザープラグインが使用している Apache Lucene のライセンスが(当たり前ですが)Apache ライセンスなので、OmegaT のライセンス GPL2 と同居できないのです。そのため OmegaT 本体のライブラリに Lucene を含めることができず、やむなくプラグインとして分離している、というわけです。

ライセンスが矛盾する以上、仕方がないとは思いますが、ユーザー側からすると、とても残念な状況ですね…。


いかがでしたでしょうか。この記事を読んで、少しでもトークナイザーを身近に感じられたなら、嬉しく思います。

そう、トークナイザーを使いこなす道のりは、決して遠くないざー

お後がよろしいようで…。(爆

0 件のコメント:

コメントを投稿