統計的機械翻訳におけるフレーズ翻訳モデル構築実習

NAIST サマーブートキャンプ2日目。今日は1時間統計的機械翻訳の復習をしたあと、実習。

実習は3本立てで、Moses というオープンソースの統計的機械翻訳エンジンを使い、日英の翻訳機を作って考察する、というもの。データは旅行会話のデータ4万文なので、学習しても翻訳させても5分程度、ちょうどよいくらいである。(自分が M2 のとき学習は15-30分程度かかっていた気がするので、計算機も速くなったものだなぁ)

見所としては、ちゃんと動くものが1時間とかからず作れますよ、ということと、未知語やフレーズに基づく手法の欠点(日本語と英語のように統語構造がかなり異なる言語だと、格助詞など機能語が変なところで切れたり入ったりすることがよくある)を見てもらうところ。今回は実際にフレーズテーブルを見てもらい、翻訳のエラーについてどんなエラーがあり、どんな理由でそれが起こるのか考察してもらった。

フレーズに基づく手法は統語構造(たとえば語順)が似ている言語対であれば、大量のデータさえあればものすごくうまく動くのだが、統語構造が違う言語対(たとえば日本語と英語)ではあまりうまく動かないのである。だからこそ、研究の余地があるテーマでもあるのだが……。

ちなみに、ここで言う「フレーズ」というのも、言語学で言うフレーズではなく、単に単語が連続したものがフレーズなので、言語学的におかしなフレーズがたくさん取れる。自分も最初これを知ったとき気持ち悪いと思ったが、統計翻訳はいろいろと独自の文化を持っているので、慣れるまで奇妙に思えることはいろいろある。

あと追加タスクとしては新聞記事で作成した言語モデルを使って旅行会話の翻訳をしてもらう、というもの。これも、実はかなり翻訳の精度が悪くなるのだが、こういう分野適応の話も実際手を動かしてもらうと、現実的な設定ではなかなかうまく行かないことも分かってもらえると思う。(本当は言語モデルのサイズを変えてコーパスサイズの効果を体感してもらう実習も入れようかと思ったのだが、データがなかった)

最後にやってもらったのは Moses のパラメータ、つまり機械翻訳の素性の重み(14種類)を人手でチューニングしてもらう、というタスク。やってみると分かるのだが、デフォルトのパラメータが往々にしてかなり強くて、人手によるチューニングで向上させるのはなかなか難しいのである。機械翻訳がパラメータを精度を最適化するよう教師あり学習な手法が導入された(誤り率最小化学習、Minimum Error Rate Training、別の名を MERT)のだが、これはパラメータ調節を自動化するという点で画期的である。こういうのまで自動でやれるのだから、人手でしこしこルールを書いたりそれに重みをつけたりしている場合ではない、と思うのである。

以上3つのタスクをやってもらったのだが、午前中の1時間と午後の1.5時間だけで3チームのうち2チームが最後まで、残り1チームも2番目までできたようで、果たして実習の分量や難易度はこれで適切だったのかどうかと悩んだのだが、取り越し苦労であった。TA の2人が合わせて2チームサポートしてくれたので、とても助かった。(学生3人ごとに1人 TA をつけてよいそうだったが、1人だけだと大変だったと思う) また、実際に翻訳会社で働いている人が2人参加してくれたので、実務でどういうことが問題になっているのか教えてくれたので、TA の人たちも参加して勉強になったと言ってくれたのが嬉しかった。学びの場というのはやはり教える側も教わる側も得ることがあるのが理想的な姿だと思うし、次につながるとよいなと思う。

ちなみに本来やろうとしていたのは「自分のかな漢字変換エンジンを作ろう」だったので、今回のブートキャンプの資料も1/3かな漢字変換エンジンの話になっていたりする (笑) 「かな漢字変換エンジンを作ろう」なら参加したいという人がいたら検討するので連絡いただけると助かります〜(春は受験希望者が多いので、多少プログラミング能力は仮定する予定)。自然言語処理の研究成果を社会に還元する、というのが自分の使命だと思っているので……。

夕方は研究室恒例のカレーパーティー。今年の M1 の人たちは相当エネルギッシュなのですばらしい (インターンに行っている人がたくさんいるにも関わらず)。今後に期待、ですな。