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

AI で『神曲』を翻訳して比較

AI で『神曲』を翻訳して比較します。

The grayhound making the she-wolf die of grief
Bing Image Creatorで作成。Powered by DALL-E.

2023 年 5 月 28 日~『神曲』勉強会開催中!

lingua.connpass.com

ダンテ『神曲』シリーズの記事です。

第 1 部
第 2 部

  1. AI で『神曲』の古代ギリシア語訳を分析
  2. AI で『神曲』の画像生成
  3. AI で『神曲』をフレーズ分解
  4. AI で『神曲』ノートン訳を行分割
  5. AI で『神曲』を翻訳して比較 ← この記事

目次

概要

Bard や ChatGPT では翻訳が可能です。

  1. 単なる翻訳と、中間過程として単語表作成を挟んだ翻訳を行います。
  2. 翻訳結果を既存の機械翻訳と並べて、編集距離によってスコアを付けます。
  3. スコアに基づいて、最も平均的な行を選んで混ぜた訳文を作成します。
  4. 行ごとに翻訳を並べて目視できるようにします。

以上を英語・現代ギリシア語・エスペラントの 3 言語で行います。

なお、ChatGPT は GPT-3.5 を使用します。

英語

イタリア語の原文を英語に翻訳します。

ログは試行錯誤の過程を採取したもののため、Bard と ChatGPT では指示が統一できていません。以下の理由でやり直しは見送りました。

  1. 同じプロンプトでも結果は毎回変わるが、やり直してもその範囲内に収まることが予想される。
  2. API ではなくチャットで地道に質問しており、手間が掛かる。

直訳

イタリア語から英語への翻訳を指示します。上述の通り、付加的な指示事項は揺れがあります。

Bard

翻訳結果です。

ログの冒頭を引用します。翻訳結果をログから分離しやすくするため表形式で出力させます。

Please translate literally into English. The results should be summarized in a table containing the following columns: Line Number, Italian line, English line.

1 Nel mezzo del cammin di nostra vita
2 mi ritrovai per una selva oscura,
3 ché la diritta via era smarrita.

4 Ahi quanto a dir qual era è cosa dura
5 esta selva selvaggia e aspra e forte
6 che nel pensier rinova la paura!
Line Number Italian Line English Line
1 Nel mezzo del cammin di nostra vita In the middle of the journey of our life
2 mi ritrovai per una selva oscura I found myself in a dark wood
3 ché la diritta via era smarrita because the straight way was lost
4 Ahi quanto a dir qual era è cosa dura Ah, how hard it is to tell what it was like
5 esta selva selvaggia e aspra e forte this wild, harsh and strong forest
6 che nel pensier rinova la paura! that renews the fear in the mind!

ChatGPT

翻訳結果です。

ログの冒頭を引用します。直訳を指示しますが、表形式での出力は求めません。

Please translate literally into English.

1 Nel mezzo del cammin di nostra vita
2 mi ritrovai per una selva oscura,
3 ché la diritta via era smarrita.

4 Ahi quanto a dir qual era è cosa dura
5 esta selva selvaggia e aspra e forte
6 che nel pensier rinova la paura!

7 Tant’è amara che poco è più morte;
8 ma per trattar del ben ch’i’ vi trovai,
9 dirò de l’altre cose ch’i’ v’ ho scorte.

10 Io non so ben ridir com’i’ v’intrai,
11 tant’era pien di sonno a quel punto
12 che la verace via abbandonai.

13 Ma poi ch’i’ fui al piè d’un colle giunto,
14 là dove terminava quella valle
15 che m’avea di paura il cor compunto,

The text you provided is the opening passage of Dante Alighieri's "Inferno," which is the first part of his epic poem, "The Divine Comedy." Here's a literal translation into English:

1 In the middle of the journey of our life,
2 I found myself in a dark forest,
3 because the straight way had been lost.

4 Ah, how hard it is to tell what that forest was,
5 that wild and rough and strong forest
6 that renews the fear in the thought!

7 So bitter it is that death is hardly more so;
8 but to treat of the good that I found there,
9 I will tell of the other things I saw there.

10 I do not know well how I entered there,
11 so full of sleep was I at that point
12 when I abandoned the true way.

13 But after I was come to the foot of a hill,
14 there where the valley terminated,
15 which had pierced my heart with fear,

単語表を作成して翻訳

中間過程として単語表を作成して翻訳します。

以前の記事と同様の手法で単語表を作成します。

Bard

正しく単語を認識しているかのチェックを兼ねて lemma(辞書の見出し語、いわゆる原形)の提示を求めます。

翻訳結果と、それに原文と単語表を添えたものです。

ログの最初の方を引用します。

Omit line numbers. Please create a word-by-word table containing the following columns: Italian, Lemma, English. Lemma indicates the infinitive or singular form. Translate it into English.
1 Nel mezzo del cammin di nostra vita
2 mi ritrovai per una selva oscura,
3 ché la diritta via era smarrita.
Italian Lemma English
Nel nel in
mezzo mezzo middle
del del of
cammin cammino journey
di di of
nostra nostra our
vita vita life
mi mi I
ritrovai ritrovare found myself
per per through
una una a
selva selva forest
oscura oscuro dark
ché che because
la la the
diritta diritto straight
via via path
era essere was
smarrita smarrire lost


English translation:

In the middle of the journey of our life,
I found myself in a dark forest,
Because I had lost the straight path.

ChatGPT

翻訳結果と、それに原文と単語表を添えたものです。

ログの冒頭を引用します。

1. Omit line numbers and punctuations, and create a word-by-word table containing the following columns: Italian, Lemma, English.
2. Translate each line into English, and the results should be summarized in a table containing the following columns: Line Number, Italian line, English line.

1 Nel mezzo del cammin di nostra vita
2 mi ritrovai per una selva oscura,
3 ché la diritta via era smarrita.

Word-by-Word Table:

Italian Lemma English
Nel In il In
mezzo mezzo middle
del di il of the
cammin cammino journey
di di of
nostra nostro our
vita vita life
mi mi I
ritrovai ritrovare found
per per for
una uno a
selva selva forest
oscura oscuro dark
ché che because
la la the
diritta diritto straight
via via way
era essere was
smarrita smarrire lost


Translated Lines Table:

Line Number Italian line English line
1 Nel mezzo del cammin di nostra vita In the middle of the journey of our life
2 mi ritrovai per una selva oscura I found myself in a dark forest
3 ché la diritta via era smarrita because the straight way was lost

評価

ここまでで 4 種類の翻訳が得られました。

比較のため 4 種類の機械翻訳を追加します。

機械翻訳 翻訳結果
DeepL https://github.com/7shi/dante-la-el/blob/main/Inferno/MT/en/01-en-deepl.txt
Google 翻訳 https://github.com/7shi/dante-la-el/blob/main/Inferno/MT/en/01-en-google.txt
Bing 翻訳 https://github.com/7shi/dante-la-el/blob/main/Inferno/MT/en/01-en-bing.txt
Baidu 翻訳 https://github.com/7shi/dante-la-el/blob/main/Inferno/MT/en/01-en-baidu.txt

何らかの定量的な評価を行う必要があります。翻訳の質を客観的に評価することは難しいため、レーベンシュタイン距離(👉参考)に基づいて行単位で多数決のようなことを試みました。

この内容について説明します。

作業対象は以下の 8 つです。番号は行ごとの評価の Adopt で使用されます。

chatgpt chatgpt-t bard bard-t deepl google bing baidu
1 2 3 4 5 6 7 8

chatgpt と bard は単語表を経由した翻訳、chatgpt-t と bard-t は直接翻訳です。-t は translation で翻訳だけを指示したことを意味します。

※ 翻訳だけなら機械翻訳でもできるため、AI を使うなら単語表をセットにした方を標準的な作業だとする意図です。

行ごとの評価

まず行ごとに評価して、最も平均的な翻訳を選びます。冒頭 3 行の結果を示します。

Line Dist Adopt Text
1 0.280 1234 In the middle of the journey of our life
2 0.159 123678 I found myself in a dark forest,
3 0.301 14 because the straight way was lost.

Dist は最小の距離 (distance) で、Text はこの数値を持つ翻訳からの引用です。Adopt は Text として採用された翻訳です。2 行目は大半の翻訳がほぼ同じだったことを意味します。

※ 「ほぼ」というのは、句読点の有無や大文字・小文字の別は無視するためです。

距離の計算方法について説明します。距離は違いを数値化したもので、距離が小さいほど違いが小さく、0 は一致を意味します。

  1. 行ごとに、翻訳間のレーベンシュタイン距離を測定して、最大文字数で割って 0 ~ 1 に標準化する。
  2. 翻訳ごとに、他のそれぞれの翻訳との標準化レーベンシュタイン距離を座標と見なして 7 次元空間にプロットする。
    $(a,b,c,d,e,f,g)$
  3. 原点からのユークリッド距離を求める。
    $\sqrt{a^2+b^2+c^2+d^2+e^2+f^2+g^2}$
  4. 結果を 0 ~ 1 の範囲に収めるため、平方根の中において個数 7 で割って標準化する。
    【補足】$a,\cdots,f$ は 0 ~ 1 のため、その二乗も 0 ~ 1 で、その和を個数で割ると 0 ~ 1 に収まり、その平方根も 0 ~ 1 に収まる。
    $\displaystyle{\sqrt{\frac{a^2+b^2+c^2+d^2+e^2+f^2+g^2}7}}$
  5. ある行において、他のすべての翻訳との標準化ユークリッド距離が最も小さい翻訳は、最も平均的な特徴を持った翻訳だと考えられる。これを Text として採用することは、ある種の多数決と見なせる。

標準化レーベンシュタイン距離の平均ではなく、標準化ユークリッド距離を求めているのは、2 乗することで離れていることがより強調されるためです。

標準偏差を求めるための分散と同じ考え方です。簡単のため整数で例を示します。(1, 3) と (2, 2) はどちらも合計が 4 で、平均は 2 です。ユークリッド距離は、それらを底辺と高さとする直角三角形の斜辺を求めることに相当します。$\sqrt{1^2+3^2}=\sqrt{10}$$\sqrt{2^2+2^2}=\sqrt{8}$ では後者がより短いです。これは 3 という大きな値が強調されているためだと解釈できます。直観的には斜めに横切ればどれだけ近道できるかということに相当します。

各行で採用された Text をつなげることで、複数の翻訳を混ぜた平均的な翻訳が生成されます。これを MIX と名付けます。

翻訳ごとに採用された回数を数えて、回数の多い順(降順)に順位付けします。これは平均的な翻訳に近い順だと考えられますが、必ずしも品質が優れていることを意味しません。

Number of Adopted

Rank Name Adopt
1 chatgpt 45
2 bard-t 42
3 bard 40
4 google 39
5 bing 36
6 chatgpt-t 35
7 baidu 23
8 deepl 16

この順位から考察できることを箇条書きします。

  • chatgpt と chatgpt-t は順位が離れていることから、翻訳結果があまり似ていないようです。
  • bard-t と bard と google が並んでいることから、翻訳結果が似ているようです。
  • baidu と deepl の順位が低いのは、平均的な翻訳から離れている、言い換えれば個性的であることを意味します。
  • これだけでは判断できませんが、deepl は飛び抜けて品質が高いことを意味している可能性があります。

採用回数とは別に、翻訳ごとに各行での他のすべての翻訳との標準化ユークリッド距離を座標と見なして原点からの標準化ユークリッド距離を求めます。平方根の中において行数で割れば 0 ~ 1 に標準化できるため、これをその翻訳のスコアとして、低い順(昇順)に順位付けします。これも平均に近い順だと言えます。

Distance from Others

Rank Name Dist
1 bard-t 0.336
2 chatgpt 0.343
3 bing 0.359
4 chatgpt-t 0.367
5 bard 0.367
6 google 0.377
7 deepl 0.394
8 baidu 0.399

採用回数とは順位が異なりますが、全体的な傾向は似ています。

順位が異なるのは、回数のカウントは行ごとに 0 か 1 に二値化することである種の切り捨てが入っているためです。切り捨てなければ、採用されなかったけど惜しかったということも考慮されると言えます。

他の翻訳との距離

2 つの翻訳間の距離を測定することで、どの翻訳がどの翻訳に近いかが測定できます。

具体的な計算方法として、2 つの翻訳において行ごとに標準化レーベンシュタイン距離を求め、それらを座標として標準化ユークリッド距離を求めます。

リーグ戦のような総当たり図にまとめます。平均的かどうかだけでは品質の判断にはならないため、前回の記事で行分割したノートン訳も比較対象に追加しました。

chatgpt-t bard bard-t deepl google bing baidu MIX Norton-1
chatgpt 0.283 0.326 0.262 0.384 0.364 0.350 0.405 0.222 0.381
chatgpt-t 0.337 0.294 0.416 0.392 0.393 0.424 0.272 0.376
bard 0.277 0.403 0.394 0.370 0.438 0.267 0.405
bard-t 0.373 0.362 0.354 0.405 0.211 0.373
deepl 0.419 0.371 0.393 0.323 0.398
google 0.328 0.376 0.300 0.454
bing 0.345 0.277 0.434
baidu 0.343 0.474
MIX 0.372

どの翻訳から見ても最も近いのは MIX です。MIX はすべての翻訳の特徴を併せ持っていると言えます。

全部だと長くなり過ぎるため、MIX と Norton-1 から見た近さランキングを示します。

MIX

Rank Name Dist
1 bard-t 0.211
2 chatgpt 0.222
3 bard 0.267
4 chatgpt-t 0.272
5 bing 0.277
6 google 0.300
7 deepl 0.323
8 baidu 0.343
9 Norton-1 0.372

MIX から見た順位は Distance from Others と全体的な傾向が似ています。MIX に近いということは平均に近いということだと理解できます。

Norton-1

Rank Name Dist
1 MIX 0.372
2 bard-t 0.373
3 chatgpt-t 0.376
4 chatgpt 0.381
5 deepl 0.398
6 bard 0.405
7 bing 0.434
8 google 0.454
9 baidu 0.474

MIX から見た順位で Norton-1 は最も遠かったのですが、逆に Norton-1 から見れば MIX が一番近いという結果になっています。いくら Norton-1 が直訳志向だと言っても、やはり機械翻訳とは性質が異なるということが見て取れます。

まとめ

行ごとに目で見て比較できるようにまとめました。

ここまでの結果を踏まえた所感です。

  • 翻訳を混ぜることにあまり意味はない。
  • 単語表とそこそこの翻訳を求めるなら、ChatGPT で十分。
  • 行ごとの翻訳の質を求めるなら、Norton-1 を作ることに意味がある。

AI は学習したデータ量の違いから英語能力が他の言語と比較して突出しているため、英語での結果が他の言語にも当てはまるとは限りません。そこで現代ギリシア語とエスペラントで同様のことを試します。

Norton-1 に相当する人間による翻訳は用意していません。

現代ギリシア

直訳

単語表を作成して翻訳

機械翻訳

評価

Number of Adopted

Rank Name Adopt
1 bard 35
2 chatgpt 34
3 bard-t 28
4 bing 28
5 google 27
6 deepl 24
7 baidu 23
8 chatgpt-t 17

Distance from Others

Rank Name Dist
1 chatgpt 0.412
2 bard 0.413
3 bard-t 0.428
4 bing 0.434
5 deepl 0.435
6 chatgpt-t 0.437
7 google 0.444
8 baidu 0.480

Distances

chatgpt-t bard bard-t deepl google bing baidu MIX
chatgpt 0.362 0.356 0.374 0.417 0.440 0.430 0.488 0.295
chatgpt-t 0.395 0.406 0.446 0.449 0.472 0.511 0.337
bard 0.355 0.408 0.448 0.428 0.483 0.274
bard-t 0.432 0.462 0.448 0.503 0.317
deepl 0.452 0.418 0.471 0.336
google 0.396 0.457 0.360
bing 0.443 0.346
baidu 0.412

MIX

Rank Name Dist
1 bard 0.274
2 chatgpt 0.295
3 bard-t 0.317
4 deepl 0.336
5 chatgpt-t 0.337
6 bing 0.346
7 google 0.360
8 baidu 0.412

Bard で単語表を作るのが平均的な翻訳に近いようです。

エスペラント

直訳

単語表を作成して翻訳

機械翻訳

Baidu 翻訳はイタリア語から直接ではなく、内部的には英語に翻訳してからエスペラントに重訳していると思われます。イタリア語から英語への翻訳はあまり品質が高くないようなので、代わりに英語の MIX からエスペラントに翻訳したもの (baidu-e) も用意しました。

※ 重訳は傍証による推定です。イタリア語からエスペラントに翻訳した結果と、イタリア語から英語に翻訳してからエスペラントに翻訳した結果が一致します。一時期バグがあって、イタリア語からエスペラントに翻訳すると英語が混ざることがあり、それがイタリア語から英語へ翻訳したものと一致しました。

評価

Number of Adopted

Rank Name Adopt
1 bard-t 37
2 chatgpt 36
3 bard 35
4 baidu-e 34
5 google 28
6 baidu 21
7 chatgpt-t 19

Distance from Others

Rank Name Dist
1 baidu-e 0.356
2 bard 0.360
3 chatgpt 0.364
4 bard-t 0.370
5 google 0.389
6 chatgpt-t 0.414
7 baidu 0.414

Distances

bard-t chatgpt chatgpt-t google baidu baidu-e MIX
bard 0.325 0.329 0.396 0.368 0.412 0.319 0.252
bard-t 0.323 0.395 0.392 0.420 0.352 0.281
chatgpt 0.366 0.390 0.421 0.348 0.271
chatgpt-t 0.436 0.468 0.415 0.349
google 0.402 0.339 0.305
baidu 0.357 0.352
baidu-e 0.234

MIX

Rank Name Dist
1 baidu-e 0.234
2 bard 0.252
3 chatgpt 0.271
4 bard-t 0.281
5 google 0.305
6 chatgpt-t 0.349
7 baidu 0.352

baidu-e が突出しており、英語からエスペラントへの翻訳能力は高いようです。それ以外では、Bard で単語表を作るのが平均的な翻訳に近いようです。

感想

Bard で順調に作業を続けていると、突然以下のような文面で作業を拒否されることがあります。

I do not have enough information about that person to help with your request. I am a large language model, and I am able to communicate and generate human-like text in response to a wide range of prompts and questions, but my knowledge about this person is limited. Is there anything else I can do to help you with this request?

こうなると意固地になって、再生成しても結果は同じです。プロンプトの文面を少し変えると作業してくれたりもしますが、NG ワード判定されていたりすると何をやってもダメです。NG ワード絡みではない場合でも、経験上、回答のパターンが崩れ始める前兆のため、新しいチャットで仕切り直した方が無難なようです。

qiita.com

淡々と回答を返すという点では、ChatGPT の方が安定している気はします。ですが Bard の方が優れた回答をする場合もあり、使い分けを模索しています。

各種 AI の傾向については以下の記事が参考になります。

ascii.jp

関連記事

単語表を作成する記事です。ただし単語表から翻訳するようには指示していません。

レーベンシュタイン距離についての記事です。

qiita.com

qiita.com