長文翻訳には素直にGPT-4 Turboに金出したほうがいいというだけの結論

承前。

goldhead.hatenablog.com

読みたい小説がある。とても古い小説で、日本語訳が手に入らない。元はノルウェー語だが、とりあえずプロジェクト・グーテンベルクの英語版は見つけた。おれは英語が読めない。翻訳エンジンを使うしかない。比べてみたらAIに翻訳させると質がいい。しかし、いちいちコピペできる分量ではない。なにか方法があるかとChatGPTに聞いてみた。Pythonを使えばできるという。なので、やってみた。とりあえず、できそうな感じがした……というのが上の記事まで。

 

そして、今日だ。あ、この一連の記事はリアルタイムでお伝えしています。昨日の記事は昼休みに書いた。で、今日は朝から体調を崩して、午後遅くに出社。仕事を終えたあとPythonをいじりはじめる。昨日は「短い英文テキストファイルを読み込ませて、ChatGPTに翻訳させて、日本語テキストファイルを出力させる」というところまで成功した。たぶん、おれの目的の芯となる部分だろう。

 

問題はここからで、大量の文章をぶちこんで、一気に翻訳させることだ。でも、とりあえず第一章(16,000字)だけのファイルを用意して、それを使う。ChatGPTは自動的にテキストを分割できるみたいなことを言って、コードを出してきた。いきなりそれを実行する……と、ターミナルが反応しない。エラーも吐き出さず、無反応。まったくわからない。べつのOpenAIを使うテストスクリプトには反応する。

 

というわけで、「反応しないぞ」と言って、とにかく書き換えさせる。ついでに、処理中であることを表示させるように「print("Translation in progress...")」とか追加させた。

 

したら、なんかわからんが動いた。なんかわからんでいいのだ。おれの目的はPythonの学習でもなんでもない。クヌート・ハムスンの『土の恵み』をそれなりにまともでかっこいい翻訳で読みたいというだけなのだ。

 

で、まずはやっぱりトークン多すぎる、と思われるエラーが出た。

openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens. However, you requested 5177 tokens (1081 in the messages, 4096 in the completion). Please reduce the length of the messages or completion.

「分割できてねえじゃねえか」みたいなことを丁寧に言って、また何度か書き換えさせる。したら、なんか「Translation complete. Check 'translated_text.txt' for the result.」とかターミナルに出た。やったか? ファイルを開く。すると……。

第一章

荒野穿过乡间小路,进入森林深处

中国語、しかもこれだけ。おれは第一章の15,000語くらいのファイルを開かせているんだ。なんだこれは。しかし、コードを見ると「"Translate the following text into hard-boiled style Japanese:」って書いてある。Japaneseが抜けてもいないし、Chineseとも書いてない。

 

どちらかから解決するべきなのかもしれないが、面倒なのでどっちも対処させる。「翻訳の精度を向上させます」とかいって「{"role": "system", "content": "You are a helpful assistant."}」とか追加してきた。そんで、また、「Translation complete. Check 'translated_text.txt' for the result.」。やったか?

Chapter I

The damn long road over those damn mo

英語やん。しかも、たぶん「damm」とか書いてあって、英語でハードボイルド風になっている。短いし。

 

とにかく短いの直せと言って、書き直させる。そんでもって、無駄かもしれないが、一回の送信トークン量が4096ってなんかギリギリになってるのを4000にして、「You are a helpful assistant.」のあとに「You are a translator who translates English into Japanese.」(Google翻訳による英語)って付け加えた。

 

その結果……。長いエラーが出た。長いエラーをChatGPTに読み込ませたら、「タイムアウトですね」みたいなことを言う。

requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. (read timeout=600)

この部分だろうか。

このエラーは、OpenAI APIへのリクエストがタイムアウトしたことを示しています。可能な原因として以下が考えられます。

1.ネットワークの接続が不安定である。
2.リクエストが大きすぎて、OpenAI APIが処理に時間がかかりすぎている。

まず、ネットワーク接続が正常であることを確認してください。また、大きなテキストを送信している場合は、分割して送信するなどの対策を行ってみてください。

分割したら意味がねえというか、おれは76万字いっぺんに処理してほしいのだ。でも、とりあえず16,000字だ。それでもだめか? どこまでだめなのか? とりあえずさらに半分に削ってみた。

 

Translation in progress...
Translation complete. Check 'translated_text.txt' for the result.

 

さあ、今度はどうだ。もう「やったか?」とは思えん。と、思ったら、ファイルのサイズが大きいぞ。今度こそ……。

 

やった、この分量ならできる。

……が、ちょっと待て、76万字のうちの7,600字くらいだぞ。それじゃあ、何回繰り返せばいいんだ。本来の目的の一つである、「いちいちコピペできる分量ではない」のをなんとかするのに反する。そしておそらくこれは、OpenAI APIが処理していいよっていう量の話であって、コードをどうにかしてなんとかならないのでは?

 

そして、もう一つの大きな問題がある。翻訳の質が悪いのだ。おれが生成AIに翻訳させようとしたのは、翻訳の質がよかったからだ。

 

goldhead.hatenablog.com

ここに比較があるが。というか、おれが「AIいいぞ」ってなったのはBing AIすなわちGPT-4じゃん。おれが使ってるのは「GPT3.5」じゃん。そのせいか?

 

彼は自分の使命を愛しているかのように、長い道を歩き、重い負担を背負っていた。肩に何ものもない生活が彼にとっては惨めなものであり、彼には生きるためのものではなかった。

とか、このあたりまではいいんだが、次の段落から急におかしくなる。

ある日、彼は彼が背負っていた負荷以上のものを持ってきました。リードで3匹のヤギを連れてきました。彼は角のある牛のように彼のヤギに誇りを持ち、親切に世話しました。そこには初めての通りすがりの見知らぬラップ人が来ました。ヤギを見ると、これは長居する男性であると彼は知り、彼に話しかけました。

なに「ですます調」になってんだよ。なぜか、その後、ずっと「ですます」なんだよ。なんでだ。

 

おれがわざわざAIに翻訳させようとしたのは、翻訳エンジンにはない「ハードボイルド風」文体やってくれて、読み物としてなんか成り立ってるラインのものを出してくれると判断したからだ。これでは、意味がない。

 

というわけで、「一度の大量処理ができない」、「翻訳の質が低い」という二つの理由により、おれのやっていたことは失敗だった。

 

では、ハムスンの『土の恵み』はあきらめるのか? なにか方法はないのか? いや、たぶんあるんだよな。

www.gizmodo.jp

GPT-4 Turbo、これである。300ページ相当というのはどんなサイズの用紙に、何ポイントの文字で、何語で書かれたものかによってずいぶん変わってくるかと思うが、「トークン数が128K」だし、「本をまるごと一冊読み込ませられるようになった」というのだから。たとえば一度には無理でも、一章ごとくらいに翻訳させられるだけでも大成功だ。しかもたぶん、翻訳の質もいいはずだ。Bing AIが見せた実力が本物ならば。

 

dev.classmethod.jp

 

というわけで、GPT-4 Turboに金出すのが正解か。いや、べつに「無料」というのにこだわりはとくになかったし。いや、無料なら無料がいいし、金がかからないに越したことはない。とりあえず18ドル無料の試用期間があるだけで、おれのやっていたことも金のかかることであった(ここまでで0.07ドル分しか使ってないけど)。

 

繰り返すが、おれはクヌート・ハムスンの『土の恵み』を読むのが目的であって、捨てるほど金があったら、翻訳家に依頼したっていいところだ。むろん、そんな金はない。

 

でも、あれだな、いずれにせよAPI使うのは変わらないか。ChatGPTみたいに入力欄に全文ぶちこんで、みたいなのが楽でいいんだが。というか、おれは最初、そういうものかと勘違いしていた。

 

まあ、とりあえずそんなところで、GPT-4 Turbo使えるようなって帰ってきます。つーか、GPT-4 Turboのほうがトークンの金かからんの? でも、有料ユーザーは月額20ドルだっけ。まあそのくらいなら……。

 

まあいいや、遅くなった。今日はここまで。