【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

ローカルLLMの翻訳能力を調査

新しめのローカル LLM で英語から日本語とフランス語への翻訳を行って、Gemini 1.5 Pro で評価しました。

目次

LLM

Ollama で以下の LLM を動かして、Python から呼び出しました。

  1. gemma2:2b-instruct-q4_K_M
  2. gemma2:9b-instruct-q4_K_S
  3. llama3.1:8b-instruct-q4_K_S
  4. mistral-nemo:12b-instruct-2407-q4_K_S

4bit 量子化モデルは、デフォルトの q4_0 より q4_K_M の方が良いようです。👉参考

※ q4_K_M を選んだつもりが、間違ってほとんどが q4_K_S を選んでいました。今後の注意喚起として、このまま残しておきます。

使用したコードは最後に掲載します。

コード

以下の記事で実装した stream 関数を使用します。

qiita.com

import ollama

text = " ".join("""
Robert Cohn was once middleweight boxing champion of Princeton.
Do not think that I am very much impressed by that as a boxing title,
but it meant a lot to Cohn.
He cared nothing for boxing, in fact he disliked it,
but he learned it painfully and thoroughly to counteract
the feeling of inferiority and shyness he had felt
on being treated as a Jew at Princeton.
""".strip())

models = """
gemma2:2b-instruct-q4_K_M
gemma2:9b-instruct-q4_K_S
mistral-nemo:12b-instruct-2407-q4_K_S
llama3.1:8b-instruct-q4_K_S
""".strip().split()

prompts = [
    ("日本語", "日本語に翻訳してください:"),
    ("French", "Translate into French:"),
]

for lang, prompt in prompts:
    print("#", lang)
    for model in models:
        print("##", model)
        stream(model, prompt + "\n" + text)

評価方法

以下のプロンプトによって Gemini 1.5 Pro Experimental 0801 で評価しました。

評価対象について、以下の5項目に関して、それぞれ1から5までの5段階評価をしてください。

  1. 不足: 原文に含まれる内容がすべて翻訳されているか。ここでは不足分のみをチェックし、過剰分は無視してください。不足がなければ5点です。
  2. 過剰: 原文に含まれない内容が含まれていないか。ここでは過剰分のみをチェックし、不足分は無視してください。過剰がなければ5点です。
  3. 順番: 原文の順番通りに翻訳されているか。文章の順番を評価対象としますが、英語と日本語の文法に起因する違いは無視します。順番通りであれば5点です。
  4. 正確さ: 原文の内容が正確に反映されているか。間違いがなければ5点です。
  5. 流暢さ: 訳文が日本語として読みやすいかどうか。問題がなければ5点です。

原文

ヘミングウェイ『日はまた昇る』の冒頭からの引用です。

Robert Cohn was once middleweight boxing champion of Princeton. Do not think that I am very much impressed by that as a boxing title, but it meant a lot to Cohn. He cared nothing for boxing, in fact he disliked it, but he learned it painfully and thoroughly to counteract the feeling of inferiority and shyness he had felt on being treated as a Jew at Princeton.

評価者として使用した Gemini 1.5 Pro Experimental 0801 による翻訳です。

ロバート・コーンはかつてプリンストン大学のミドル級ボクシングチャンピオンだった。ボクシングのタイトルとしてはそれほど大したものだとは思わないでほしいが、コーンにとっては大きな意味を持っていた。実際にはボクシングに興味がなく、むしろ嫌っていたのだが、プリンストン大学ユダヤ人として扱われたことで感じていた劣等感と内気さを克服するために、苦労して徹底的にボクシングを習得したのだ。

参考として、DeepL の次世代言語モデルによる翻訳です。

ロバート・コーンはかつてプリンストンのミドル級ボクシングチャンピオンだった。ボクシングのタイトルとして私が非常に感銘を受けたと思うな。しかし、それはコーンにとって非常に大きな意味を持っていた。実際、彼はボクシングを嫌っていたが、プリンストンユダヤ人として扱われた際に感じた劣等感と内気さを打ち消すために、彼は苦痛を伴いながらも徹底的にボクシングを学んだ。

日本語訳

英語から日本語への翻訳を行って、Gemini で評価しました。

gemma2:2b-instruct-q4_K_M

ロバート・コHnはかつてPrincetonのミドル級ボクシングチャンピオンであり、その経験は彼の人生に大きな影響を与えました。

「そう言うのは恥ずかしいが、ボクシングのタイトルを頂戴したことは決して私にとって特別な意味を持ちませんでした。」

しかし、それはCohnにとっては非常に重要な意味を持っていました。彼はボクシングをあまり好きではなかった。実際、彼はそれを嫌っていました。でも、彼は苦しみと辛さを乗り越え、徹底的に学び、対戦相手との感情的な戦いを繰り広げ、劣等感と不安に満ちた気分を克服するまで、彼の力を試しました。

評価

項目 評価 理由
不足 3 原文にある「Princetonでユダヤ人として扱われたことによる劣等感と内気さ」という重要な部分が抜け落ちている。
過剰 2 「そう言うのは恥ずかしいが」「対戦相手との感情的な戦い」「彼の力を試しました」など、原文にない内容が複数含まれている。
順番 4 大きな変更はないが、「彼はボクシングをあまり好きではなかった」と「実際、彼はそれを嫌っていました」の順番が原文と逆になっている。
正確さ 3 ボクシングを嫌っていた理由が「対戦相手との感情的な戦い」とされているが、これは原文のニュアンスとは異なる。正確には、ユダヤ人差別への対処としてボクシングを始めたという部分が重要。
流暢さ 4 全体的には読みやすいが、「でも、彼は苦しみと辛さを乗り越え、徹底的に学び、対戦相手との感情的な戦いを繰り広げ、劣等感と不安に満ちた気分を克服するまで、彼の力を試しました。」はやや冗長で分かりにくい。

評価対象の翻訳は、原文の重要な要素が欠落し、過剰な内容も含まれているため、正確性に欠ける部分があります。また、原文のニュアンスを十分に反映できていない箇所も見られます。全体的に見ると、改善の余地がある翻訳と言えるでしょう。

gemma2:9b-instruct-q4_K_S

ロバート・コーンはかつてプリンセトンの中量級ボクシングチャンピオンでした。

ボクシングのタイトルにはそれほど感銘を受けませんが、コーンにとってそれは非常に重要でした。実際、彼はボクシングを嫌っていました。しかし、劣等感と自尊心の低さを打ち消すために、彼はそれを辛抱強く徹底的に学びました。彼がプリンセトンでユダヤ人として扱われた際、感じた卑屈さと内気さに対抗するためです。

評価

項目 評価 理由
不足 4 原文にある「プリンストンユダヤ人として扱われた際に感じた」という部分が少し省略されています。「ユダヤ人として扱われたこと」が劣等感と内気さの直接的な原因であることが明確に訳出されていないため、少し不足しています。
過剰 5 原文に含まれない内容は含まれていません。
順番 5 原文の順番通りに翻訳されています。
正確さ 4 ほとんど正確ですが、「shyness」を「自尊心の低さ」と訳している部分は少しニュアンスが異なります。「shyness」は「内気さ」や「恥ずかしがり屋」といった意味合いが強く、自尊心の低さと完全に一致するわけではありません。
流暢さ 5 日本語として自然で読みやすいです。

全体的に見て、かなり良い翻訳です。原文の意味をほぼ正確に捉えており、日本語としても自然です。わずかに不足している部分と「shyness」の訳語のニュアンスの違いがありますが、大きな問題ではありません。

llama3.1:8b-instruct-q4_K_S

ロバート・コーエンはプリンストンのミドル級ボクシング王者だった。 私がそのボクシングのタイトルにそうても、コーエンにとっ てそれを意味したことは何でもない。 彼はボクシングを何より苦痛で嫌いだと思っていた。 しかしながら、彼はそれを痛みを覚えることなく徹底的に学んだ。それは彼がプリンストンの人々から「ユダヤ人」と呼ばれて、自分に劣等感と恥ずかしさの気分になったということを払うために。

評価

項目 評価 理由
不足 3 "very much impressed" が訳出されていない。
"He cared nothing for boxing" が「何より苦痛で嫌いだと思っていた」と意訳されており、ニュアンスがやや異なる。
過剰 4 特に大きな過剰な情報は含まれていない。
"痛みを覚えることなく" は原文に無く、やや過剰な表現と言えるかもしれない。
順番 5 原文の順番通りに訳されている。
正確さ 3 "He cared nothing for boxing" を「何より苦痛で嫌いだと思っていた」と訳しているのは、原文の意味を正確に反映していない。
"counteract the feeling of inferiority and shyness he had felt on being treated as a Jew at Princeton." を「彼がプリンストンの人々から「ユダヤ人」と呼ばれて、自分に劣等感と恥ずかしさの気分になったということを払うために。」と訳しているが、"treated as a Jew" のニュアンスがやや弱くなっている。
流暢さ 4 概ね読みやすい日本語だが、「彼がプリンストンの人々から「ユダヤ人」と呼ばれて、自分に劣等感と恥ずかしさの気分になったということを払うために。」の部分はやや冗長で分かりにくい。

全体的に原文の意味は捉えられているものの、細部のニュアンスや表現において改善の余地がある。特に、コーエンがボクシングを嫌っていた理由や、ユダヤ人として扱われた経験が彼に与えた影響について、より正確に表現する必要がある。

mistral-nemo:12b-instruct-2407-q4_K_S

ロバート・コーンはonce中量級ボクシングチャンピオンだった。しかし、コーンを印象づけたのは単にボクサーとしてではなく、その経歴と闘い方があったからだ。

彼はボクシングを好まず、むしろ嫌悪していたが、努力して徹底的に学び、不安と自信のなさを克服しようとした。コーンはプリンストンユダヤ人として扱われることが多く、その経験から闘いへの意欲を得たのだ。

彼のボクシング歴は成功と敗北を繰り返したものだったが、コーンはそのすべての試合で強靭な心で戦い抜いた。彼はボクシングの世界では数少ないアフリカ系アメリカ人チャンピオンであり、またプリンストン出身者としても珍しかった。

コーンはボクシングへの愛情以上に、闘いを通じて自分の力と価値を証明したいという思いから戦っていった。その姿勢と強さが彼の人生とボクシング史上に深い印象を残している。

評価

項目 評価 理由
不足 2 原文で重要な情報である「プリンストン大学の中量級チャンピオン」と「ユダヤ人として扱われたことへの劣等感と恥ずかしさ」が欠落しており、理解に大きな影響を与えている。
過剰 1 原文に全く存在しない「ボクシング経歴の成功と敗北」「アフリカ系アメリカ人チャンピオン」「プリンストン出身者としても珍しい」という情報は、コーンの人物像を大きく歪めてしまっている。
順番 4 コーンがボクシングを嫌っていた理由が後述されているため、やや論理的な流れがわかりにくくなっている。
正確さ 2 ボクシングを嫌っていた理由が原文と異なり、またアフリカ系アメリカ人チャンピオンという全くの誤情報が含まれているため、正確性に欠ける。
流暢さ 4 文章自体は自然で読みやすい。

評価対象の文章は、原文の重要な情報を欠落させており、かつ事実と異なる情報を付け加えているため、原文を正確に反映しているとは言えない。加えて、コーンがボクシングを嫌っていた理由も歪められているため、人物像の理解を妨げている。全体的に、原文を正確に日本語に翻訳したとは言えず、大幅な修正が必要である。

フランス語訳

言語間の近さから、日本語よりもフランス語への翻訳の方が難易度が低いはずなので、比較として試しました。

gemma2:2b-instruct-q4_K_M

Robert Cohn était autrefois champion poids mi-lourds de boxe au Princetown.

N'imaginez pas que je sois très impressionné par ce titre, mais c'était un grand moment pour Cohn.

Il ne se préoccupait pas du boxe, en fait, il détestait la pratique, mais il a appris à travers une douleur intense et approfondie pour contrer l'sentiment d'infériorité et de timidité qu'il ressentait à cause de son traitement comme un juif à Princetown.

評価

項目 評価 理由
不足 4 ほぼ全ての内容が翻訳されていますが、"middleweight" が "poids mi-lourds" (ライトヘビー級)と誤訳されています。
過剰 5 原文に含まれない内容は含まれていません。
順番 5 原文の順番通りに翻訳されています。
正確さ 4 "middleweight" の誤訳以外は、原文の意味を正確に反映しています。
流暢さ 4 全体的に自然なフランス語ですが、"il a appris à travers une douleur intense et approfondie" は少し不自然です。 "Il l'a appris douloureusement et avec acharnement" の方がより自然な表現です。

gemma2:9b-instruct-q4_K_S

Robert Cohn était autrefois champion de boxe poids moyens de Princeton.

Ne pensez pas que je sois très impressionné par ce titre de champion de boxe, mais cela signifiait beaucoup pour Cohn.

Il se moquait complètement de la boxe, en fait il la détestait, mais il l'a appris douloureusement et rigoureusement pour contrer le sentiment d'infériorité et de timidité qu'il avait ressenti en étant traité comme un juif à Princeton.

評価

項目 評価 理由
不足 5 原文のすべての情報が訳文に含まれています。不足はありません。
過剰 5 原文にない情報が訳文に追加されていません。過剰はありません。
順番 5 原文の順番通りに翻訳されています。
正確さ 5 原文の意味を正確に反映しています。
流暢さ 5 訳文は自然で読みやすいフランス語です。

全体的に、これは非常に質の高い翻訳です。原文の意味を正確に伝え、フランス語としても自然で読みやすい文章になっています。

llama3.1:8b-instruct-q4_K_S

Robert Cohen était un temps champion de boxe des poids moyens de Princeton.

N'imaginez pas que je sois très impressionné par ce titre en tant que boxeur, mais cela signifiait beaucoup pour Cohen.

Il ne s'intéressait à aucune boxe, et il la détestait, mais il l'a apprise durement et méthodiquement pour contre-attaquer le sentiment d'infériorité et de honte qu'il avait ressenti en étant traité comme un Juif à Princeton.

評価

項目 評価 理由
不足 5 原文の内容はすべて含まれています。
過剰 5 原文に含まれない内容は含まれていません。
順番 5 原文の順番通りに翻訳されています。
正確さ 4 ほとんど正確ですが、"He cared nothing for boxing" を "Il ne s'intéressait à aucune boxe" と訳している部分が少し不自然です。"Il ne s'intéressait pas à la boxe" の方がより自然です。
流暢さ 5 訳文はフランス語として自然で読みやすいです。

全体的に見て、非常に質の高い翻訳です。わずかに不自然な箇所がありますが、意味はきちんと伝わります。

mistral-nemo:12b-instruct-2407-q4_K_S

Here's the translation into French:

Robert Cohen était autrefois champion de boxe poids moyen de Princeton. Ne croyez pas que je suis très impressionné par ce titre de boxeur, mais cela signifie beaucoup pour Cohen. Il n'a jamais rien aimé autant que la boxe, en fait, il la détestait, mais il l'a apprise avec une douleur et une détermination incroyables pour contrer le sentiment d'infériorité et de synonyme qu'il a ressenti en étant traité comme un Juif à Princeton.

Translation notes:

  • I've kept the original name "Cohen" which is of Jewish origin.
  • The phrase "a Jew at Princeton" was translated literally to convey the same sense of discrimination and otherness.
  • I used "synonyme" instead of "shyness" as it better conveys the feeling of being seen negatively due to his background.

評価

項目 評価 理由
不足 4 ほぼ全ての内容が翻訳されていますが、"he learned it painfully and thoroughly" の "thoroughly" (徹底的に) が訳出されていません。
過剰 3 "avec une douleur et une détermination incroyables" (信じられないほどの痛みと決意を持って) は原文よりも強調が強いです。原文は"painfully and thoroughly" (苦労して徹底的に) です。
順番 5 原文の順番通りに翻訳されています。
正確さ 4 "synonyme" (同義語) は "timidité" (内気) の誤訳と考えられます。"He cared nothing for boxing" を "Il n'a jamais rien aimé autant que la boxe" (彼はボクシングほど好きなものはなかった) と訳しているのは完全に反対の意味になっており、大きな誤訳です。
流暢さ 4 全体的には自然なフランス語ですが、"synonyme" の誤訳が目立ちます。

全体的に見て、この翻訳はまずまずですが、いくつかの重要な誤訳と誇張が含まれています。特に "He cared nothing for boxing" の誤訳は深刻で、原文の意味を完全に逆転させています。また、"synonyme" の誤訳も意味の混乱を招きます。これらの誤訳を修正し、過剰な強調を抑えれば、より正確で自然な翻訳になるでしょう。

まとめ

各項目は 5 段階評価で 25 点満点です。

英語→日本語

LLM 不足 過剰 順番 正確さ 流暢さ 合計
gemma2:2b-instruct-q4_K_M 3 2 4 3 4 16
gemma2:9b-instruct-q4_K_S 4 5 5 4 5 23
llama3.1:8b-instruct-q4_K_S 3 4 5 3 4 19
mistral-nemo:12b-instruct-2407-q4_K_S 2 1 4 2 4 13

英語→フランス語

LLM 不足 過剰 順番 正確さ 流暢さ 合計
gemma2:2b-instruct-q4_K_M 4 5 5 4 4 22
gemma2:9b-instruct-q4_K_S 5 5 5 5 5 25
llama3.1:8b-instruct-q4_K_S 5 5 5 4 5 24
mistral-nemo:12b-instruct-2407-q4_K_S 4 3 5 4 4 20

Gemma 2 9B の成績の高さが目を引きます。全体としてフランス語への翻訳の方が高評価です。Mistral 社はフランス企業なので期待しましたが、フランス語でもあまり伸びませんでした。

Gemma 2 9B による翻訳は、フランス語では実用的で、日本語でも 8 割程度の正確さだと割り切れば使えそうです。Llama 3.1 8B もフランス語では実用範囲のようです。