はじめに
この記事は CyberAgent Developers Advent Calendar 2023 8日目の記事です。
こんにちは。グループ子会社である株式会社キュレオにて、海外開発グループで責任者をしている @_yukamiya です。
本記事では、キュレオが展開している「QUREO」において、生成AIを用いて多言語翻訳を検証した話をご紹介します。
「QUREO」とは
ひとことでいうと「子ども向けプログラミング学習教材」です。
初心者向けのビジュアルプログラミングから、上級者向けのテキストプログラミングまでを体系的に学習できるeラーニング教材で、その教材を導入した「QUREOプログラミング教室」を全国各地に3000教室以上展開しています(2023年12月現在)。
国内発のサービスを海外で展開するにあたり、発生する作業としては大きく下記の要素があります。
- アプリケーション
- 言語ファイル切り替え
- インフラ
- インスタンス一式を該当エリアのリージョンに構築
- データ
- 学習コンテンツであるマスタデータの翻訳、投入
- 静的リソース差し替え
- 画像
- 動画
- ナレーション音声
今回は、この中でも特に40万文字近くある大量のデータ、特にマスタデータの翻訳にフィーチャーしご紹介します。
翻訳にあたっての課題
- ひらがなメイン
-
- 子ども向けのサービスの特徴として、キャプチャのように、ひらがながメインの文章や単語が大多数を占めています。また、変数名として”いき”という単語が出てくるようなシーンでも、画面と照らし合わせて確認しないと”息”なのか”行き”なのか判断が付かず、単純な機械翻訳では難しいケースが多いです。これらは人手翻訳でもサービス理解が必要であるため難易度が高い問題です。
- 固有名詞が多数出現
-
- オリジナルのキャラクター名、背景名、サウンド名など、学習の素材として登場する教材が基本的に固有名詞のため、こちらも用語集や学習なしに翻訳することはできません。
翻訳方法の検討
検討した翻訳方法は下記の通りです。
- 外注による人手翻訳
- 機械翻訳サービスの利用
- AutoML Translation
- LLM(PaLM2、GPT-4)
外注による人手翻訳
当然ですが、人間が文脈や画面の流れを汲んだ上で翻訳するため品質は担保されます。代わりに相応の翻訳費用が発生します。
機械翻訳サービスの利用
AutoML Translation
Google Cloud製品のひとつであるAutoML Translationを用いて検証しました。AutoML Translationでは、翻訳されたセンテンスのペアからパターンを認識するようにトレーニングする、教師付きの学習を実施できます。教師付きの学習を使用することで、対象となる分野固有のコンテンツを翻訳するようにカスタムモデルをトレーニングできます。*1
AutoML Translationについてはアドベントカレンダーのテーマである”生成AI”とはやや逸れるため、詳細は別途ご紹介できればと考えています。
LLM
AutoML Translationと比較してもうひとつ検証したのがLLMのひとつである、GoogleのPaLM2です。特に2023年5月にアナウンスされたPaLM2では多言語での性能が飛躍的に向上しており、100 以上の言語にわたる多言語テキストにより重点をおいて学習しています。*2
当初AutoML Translationのみを検証していたものの、英語以外への翻訳も考えると生成AIという選択肢もあり得るのではと思い、こちらも検討することにしました。
検証方法
下記の言語とLLMの組み合わせで検証を行いました。
言語
- 英語
- フランス語
- 中国語
LLM
- PaLM2(モデル: text-bison@001)
- GPT-4(モデル: gpt-4@0314)
PaLM2は、Google Cloudアカウントがあれば VertexAI にて試すことができます。
前提
前提として、検証以前の初期段階で日->英は多くの部分で人手翻訳が済んでいます。つまり目視での確認を行った良質な学習データが使える状況です。
翻訳対象テキスト
「もし」を使うことで、オブジェクトにあたったときの動きをつくれるね!
プロンプト
検証に使ったプロンプトは下記の通りです。
日英翻訳のデータセットは持ち合わせているものの、フランス語と中国語は持っていないためプロンプトで工夫します。
日 -> 英
- Japanese: まずは、今回作るゲームをあそんでみよう!
- English: First, let's try playing the game that we will be building!
- Japanese: ゲームせっけい図を使って、メリンの動きを考えるよ!
- English: Using the game design diagram, think about Merin's movements!
- Japanese: メリンは、どんなじゅんばんで動いているかな?
- English: In what order is Merin moving?
- Japanese: 「もし」を使うことで、オブジェクトにあたったときの動きをつくれるね!
- English:
日 -> 仏
- Japanese: まずは、今回作るゲームをあそんでみよう!
- English: First, let's try playing the game that we will be building!
- Japanese: ゲームせっけい図を使って、メリンの動きを考えるよ!
- English: Using the game design diagram, think about Merin's movements!
- Japanese: メリンは、どんなじゅんばんで動いているかな?
- English: In what order is Merin moving?
- Japanese: 「もし」を使うことで、オブジェクトにあたったときの動きをつくれるね!
- French:
日 -> 中
- Japanese: まずは、今回作るゲームをあそんでみよう!
- English: First, let's try playing the game that we will be building!
- Japanese: ゲームせっけい図を使って、メリンの動きを考えるよ!
- English: Using the game design diagram, think about Merin's movements!
- Japanese: メリンは、どんなじゅんばんで動いているかな?
- English: In what order is Merin moving?
- Japanese: 「もし」を使うことで、オブジェクトにあたったときの動きをつくれるね!
- Chinese:
定性評価
英語は自分で、フランス語と中国語はネイティブスピーカーに協力してもらい比較しました。
また、LLM対比のため学習データなしのGoogle翻訳も比較に入れています。
日 -> 英
翻訳方法 | 翻訳結果 | 定性評価 |
---|---|---|
人手翻訳 | By using the “if” function, you can create movements when objects are hit! | ◎ 翻訳前テキストにはない「もし」がブロック名(=function名)ということを示す単語が入っている、かつオブジェクトが複数形である点が、画面と照らし合わせて見ても自然な訳。 |
PaLM2 | By using “if”, you can create movements when an object is hit! | ◯ In-context Learningにより「もし」が「ifブロック」を示すことはわかっている様子だが気の利いた補助単語は入っておらず、無難な訳。 |
GPT-4 | By using “if”, you can create movements when objects are hit! | ◯ In-context Learningにより「もし」が「ifブロック」を示すことはわかっている様子だが気の利いた補助単語は入っておらず、無難な訳。 |
Google翻訳 | By using “moshi” you can create movement when it hits an object! | ☓「もし」を「moshi」と訳してしまい、教材のガイドとして成り立っていない。 |
日 -> 仏
翻訳方法 | 翻訳結果 | 定性評価 |
---|---|---|
人手翻訳 | On peut utiliser la fonction “si” pour définir un mouvement quand on rencontre un objet! | ◎ 翻訳前テキストにはない「もし」がブロック名(=function名)ということを示す単語が入っている。 |
PaLM2 | On peut utiliser “si” pour créer un mouvement lorsqu’on touche un objet ! | ◯ lorsqu’onのonがgeneralな意味を表しており、無難。 |
GPT-4 | En utilisant “si”, nous pouvons créer des mouvements lorsque l’objet est touché ! | △ l’objetのlがtheを意味しておりspecificな訳となっている。 |
Google翻訳 | En utilisant “moshi”, vous pouvez créer un mouvement lorsqu’il touche un objet ! | ☓ 「もし」を「moshi」と訳してしまい、教材のガイドとして成り立っていない。lorsqu’ilの”il”が”it”を意味している。 |
日 -> 中
翻訳方法 | 翻訳結果 | 定性評価 |
---|---|---|
人手翻訳 | 通过使用“如果”命令,我们可以创建对象碰撞时的动作! | ◎ 翻訳前テキストにはない「もし」がブロック名(=function名)ということを示す単語が入っている。 |
PaLM2 | 使用「如果」可以创建当物体被击中的动作! | ◯ 意味として正しい翻訳だが、機械的な印象。「」が変換されていない。 |
GPT-4 | 通过使用“如果”,我们可以创建对象碰撞时的动作! | ◎ 意味としても正しい。文末「ね!」のニュアンスが入っていて感情がある印象、友達と話している感じ。 |
Google翻訳 | 通过使用“moshi”,您可以在撞击物体时产生运动! | ☓ 「もし」を「moshi」と訳してしまい、教材のガイドとして成り立っていない。”あなたがモノにぶつかると運動ができる”といった内容で意味も異なる。 |
考察
限られたサンプルのため一概には言えないものの、今回の検証で判ったことは下記の通りです。
- 英語とフランス語はPaLM2、GPT-4ともに大きな差はなさそう
- 中国語に関してはGPT-4が感情表現が含まれている点で優勢とのこと
- フランス語、中国語ともに、Google翻訳に比べるとある程度は生成AIのfew-shotプロンプトで人手翻訳に近づけることが可能
今後の展望
- PaLM2において、ハルシネーションを抑制する「グラウンディング」の設定を行い日英人手翻訳のデータセットを読み込ませた上で再評価を行う
- プロンプトを工夫して再評価を行う
参考
- *1: https://cloud.google.com/translate/automl/docs/beginners-guide?hl=ja
- *2: https://japan.googleblog.com/2023/05/palm-2.html