2026-06-02

XCOMETについて、あれこれ

 

XCOMET

先日はCOMETをローカルPCにインストールし、100セグメント程度のデータセットに対して翻訳品質がどのように評価されるのかを試してみた(参照訳あり・なしの両方を含む)。おまけで、Bootstrap法によってCIを計測してみた。

実は、久しぶりにCOMET関連のドキュメントを眺めていると、すでにXCOMETも公開されており、モデルを入手できることに気が付いた。せっかくなので、翌日、そのまま試してみることにした。

以下は作業メモと、実際に測定してみて感じたことである。


* * *


XCOMETは、COMETを拡張し、よりMQMに近い観点を取り込んだ翻訳品質評価を目指したモデルである。

COMET自体のモデルサイズは1〜2GB程度だったが、XCOMETはより大きなLLMである。XCOMET XLでは10GB以上、XCOMET XXLでは100GB近い規模になる。パラメータの規模も同様にアップしている。そのため、Discrete GPUを搭載していない一般的なPCで気軽に利用できるのは、実質的にXCOMET XLあたりまでだろう。

インストールそのものは難しくない。ただし初回実行時にはモデルのダウンロードが発生するため、それなりに時間がかかる。

一方で、2回目以降は比較的スムーズに動作する。

ちなみに、COMET 2022以外のモデルについては、Hugging Faceでの認証が必要なので注意したい。認証済みトークンを取得し、それをPython環境に渡しておけば利用できるようになる。



XCOMETでは以下のような指標を取得できる。

  • src_score:原文に対する正確性

  • ref_score:参照訳との類似性

  • unified_score:各種評価指標を統合したスコア

  • mqm_score:MQMスコアの予測値

  • XCOMET score:総合評価スコア

さらに興味深いのがこちらである。

  • error_spans:どこがエラーと判断されたのかを示す情報。平たく言えば、「どの単語や表現がスコア低下の原因になったのか」を確認できる。


ざっと触った印象では、COMETよりも翻訳品質を見る「奥行き」が増している。非常に有用な指標だと思う。

とはいえ、褒めてばかりいても仕方がない。ここからは、長年機械翻訳の品質を見てきた立場から、あえて課題も挙げてみたい。


そもそも翻訳品質を単一のスコアに落とし込むこと自体が非常に難しい。

それにもかかわらず、定量化に挑戦していること自体は高く評価されるべきだろう。とくにMQMを取り込もうとしていることは興味深い。


そもそも、翻訳品質をスコア化するのはどうして難しいのか?

例えば10単語からなる文で、そのうち1語だけが致命的に間違っていたとする。肯定と否定を取り違えるようなケースである。PEDであれば、おそらく10%程度になる。一般にPEDは20〜40%程度になることが多いため、10%は高品質と評価されるだろう。

しかし現実には、その1語によって文意そのものが逆転している可能性がある。まさしく一発アウトの致命的誤訳というやつである。

逆に、語順だけを大きく入れ替えたケースを考えてみる。前半の節を後半へ移動させたような場合である。この場合、変更文字数が大きくなるため、PEDは50%近くになるかもしれない。しかし内容そのものは正確であり、単なる表現上の違いにすぎない。

PED上は低品質に見えるが、実際にはむしろ良い翻訳ということもあり得る。


少し極端な言い方だが、BLEUも考え方としてはPEDと近い側面を持つ。PEDが「どれだけ離れているか」を見る指標だとすれば、BLEUは「どれだけ近いか」を見る指標である。

もちろん計算方法はまったく異なるが、どちらも単語の発生を見ており、ある意味ではコインの裏表とも言える。上記のようなシチュエーションを踏まえて言えば、BLEUの問題もPEDと同様である。


これに対して、意味をベクトルとして表現し、その距離を測るアプローチがある。BERT系の評価手法や初期のCOMETがこれに近い。この方法ではPED/BLEUのような問題は軽減される。

一方で、ベクトル空間上で差が付きにくい語句の違いを見逃しやすいという課題がある。

例えば肯定と否定を一文字で取り違えた場合でも、埋め込みベクトルが近いため、十分な差が出ないことがある。

こうした課題に対して、COMETは人間評価を模倣するよう学習されている。つまり重大な誤りに対しては、より大きなペナルティを与える方向へ調整されている。

COMETからXCOMETへ進化したことで、このMQMらしさはさらに強くなったように見える。


ただし、それもある程度までだ。


実際にサンプルデータと挙動を観察していて感じるのは、評価が「甘い」ということである。単純な誤訳に対しては、確かにMQM評価者が付けそうな評価を模倣しているように見える。

しかし、あくまで一般的で専門性のないMQMだ。より高度で専門性の高い誤訳に対しては、それほど鋭さを感じない。専門性どころか、一般的な文章ですら、文章の流れや本当に良い日本語を理解できているかというと、全くそのような気配はない。

私の印象では、学習データに含まれるMQMアノテーションの品質や粒度に限界があるのかもしれない。実際、専門ドメインの高品質翻訳であれば見逃されないような問題が、スコア上では比較的容易に通過してしまう場面が見受けられる。

一般的なニュース記事や説明文のようなデータには、そこそこ追従できる一方で、高度な専門翻訳の評価にはまだ課題が残っているように感じる。MQMアノテーション自体にも課題があるのではないか。そこも改善したほうがいいのではないか。翻訳の品質を決める次元はもっとたくさんあるが、低次元のデータしか取れていないような感じだ。


大きな目線で考えてみよう。

これは、NMTからLLMへ、さらにロングコンテキスト化へと進化してきた機械翻訳の流れと本質的には同じ話である。要するに、「1セグメント単位で評価することの限界」だ。

翻訳には段落や文書全体の流れがある。前後の文脈は翻訳品質に大きな影響を与える。

かつてのNMTがセグメント単位で翻訳していた頃は、この制約が大きな弱点だった。ドメインに適した用語体系が維持されず、文書全体として自然な流れも作りにくかった。

翻訳品質評価についても、同じことが言えるのではないか。

もし現在のXCOMETに本質的な限界があるとすれば、それはMQM学習データも評価システムも、依然としてセグメント単位を前提としている点にある。そして、MQMで評価している次元をもっと深くする必要がある。

次の世代では、MQMアノテーションそのものがマルチセグメントあるいは文書レベルで、かつ専門的次元を含めるように作成され、評価モデルも同じ粒度で学習・推論する必要があるのではないだろうか。


翻訳の品質のプロが扱っていることはもっと深い次元がある。それらをとらえられるようにMQMも改良したほうが良いだろう。

2026-05-30

COMET/Bootstrapで翻訳を評価する

 



NMTやLLMによる翻訳性能の向上は著しい。

今年の日本翻訳連盟の総会では、基調講演として「AI翻訳、進歩したからこそ必要なこと」というテーマが取り上げられるらしい。

「AI翻訳は適切に利用されているのか」「その翻訳は原文の意味内容をどの程度正しく反映し、正確性を確保できているのか」といった観点から、翻訳者に求められる役割について検討するという内容のようだ。

その意図は理解できる。私自身も関心のあるテーマなので、基調講演には参加するつもりである。ただ、このテーマをどこまで掘り下げてくれるのかについては、やや懐疑的な見方も持っている。

さて、翻訳を専門としていないが、業務上ときどき翻訳に関わる人の認識としては、「翻訳者が不要になるかもしれない」というのが大きな見立てではないだろうか。

実際、自分でLLMに翻訳をさせてみると、ほとんど自動化されているかのような感覚を覚えても不思議ではない。LLMの翻訳は確かに素晴らしい。特に2026年のGPT-5.xやGemini 3 Proあたりになると、一般的なプロ翻訳者よりもうまいと思わせる場面が少なくない。*

(ただし、2025年までの段階で「LLMの翻訳は完璧だ」「人間など不要だ」と言っていた人については、自分に関係する限られたサンプルだけを見ていたか、あるいは機械翻訳ベンダーの営業トークを真に受けていたか、技術への期待が先行していた人たちだと私は考えている。そうした議論にも一定の意義はあるので、ここでは脇に置いておこう。LLMの翻訳が素晴らしいことは間違いない。おかしいのは「人間が不要になる」という結論のほうである。)

さておき、私が見ているさまざまなデータから言えることは、現段階で人間が不要になることを示す証拠は一切見当たらない、ということだ。これが率直な感想かつ客観的な評価である。

念のため、もう少し丁寧に書いておく。

個人翻訳者の立場では、異なる感想を持つ人もいるだろう。自分が時間をかけて仕上げた翻訳に匹敵するものが、クリック一つで生成されるのだから、「翻訳者が不要になるのではないか」と感じるのも自然である。

しかし、それは個人vs機械という対立軸で、翻訳スキルを単一のスカラーで評価した場合の話である。

一方で、翻訳を品質管理や運用の観点から見ると、まったく異なる風景が見えてくる。現時点では、人間を介在させずに、大規模な翻訳工程を回しながら明確な品質基準を満たせる仕組みは存在しない。

もちろん、個人がプロンプトを工夫して翻訳させれば、瞬間的に、手直しがほとんど不要なほど良い結果が得られることは珍しくない。問題は、SaaSやCMS/TMSと連携できる汎用性、スケールに耐える処理能力、実運用に耐える速度と安定性、さらにはドメインごとの品質の予測可能性やばらつきである。

 * * *

さて、このような状況では、用途ごとに異なるエンジンが開発され、使い分けられていくことになる。つまり、翻訳会社にとって重要になるのは、単一のエンジンではなく、複数エンジンを管理し、適切に評価・運用する能力である。

そのような中で、COMETは機械翻訳エンジンの性能を評価するうえで、最も信頼できる業界標準の一つとされている。ならば、COMETを使って複数エンジンの性能を効率よく分析・評価し、さらには予測することはできるだろうか。

こうした話題に興味を持つ人がどれほどいるのか正直分からないが、軽くPythonで試してみた。以下は、土曜日の朝の数時間でコーディングしただけの結果である。翻訳会社の人が読んだら参考になるかもしれないので、ご覧いただきたい。

 * * *

まずCOMETは、Transformerをベースとした評価モデルであり、それ自体が小規模なLLMの一種と考えてよい。

COMETのインストールはPythonから実行できる。

ただし、現在インストールする場合はPythonのバージョンに注意しよう。私がこれを書いている時点ではPython 3.13系が最新だが、COMETはPython 3.11系のほうが安定しているようだ。実際、私の環境でもPython 3.11に切り替えてから問題なくインストールできた。

まず、GPUのない一般的なPCでも実用的な速度で動作するかを確認してみた。

100セグメントの翻訳サンプルに対してCOMETを計測したところ、私のPC(RAM 32GB、GPUなし)で約1分だった。十分実用的な速度である。

ただし、COMETが出力する値は、あくまでそのサンプルに対する評価結果であり、統計学的には標本平均を一点で示したにすぎない。モデルの性能を議論するのであれば、信頼区間も示したい。

そこでブートストラップ法を用いる。例えば100サンプルから10,000個のブートストラップサンプルを生成し、そこから95%信頼区間を求める。ローカル環境へのCOMETインストールから始めて、対訳データを格納したExcelファイルの読み込み、ブートストラップ法の適用、各種出力の作成まで行った。

結果として、COMETスコアを、0.92~0.96のような幅をもった形で得られる。こういったデータを蓄積していけば、複数のエンジンの使い分けや、優越性・非劣性テストのようなことにも有効なはずだ。とくに、LLMはバージョンが上がると、それだけで挙動が変化し、翻訳品質自体が変わることもまれではない。

翻訳会社のMT担当者は、過去数年間、それを経験しているはずだ。そのたびにプロンプトの最適化などをする必要があり、それをしないと、品質が低下することすらある。この辺りも、翻訳のMT技術のフロントにいる人以外にはあまり知られていないかもしれない。

そこで、以前と同じプロンプトで翻訳を実行したまま、before afterで変化があるか・ないかをある程度自動的に計測できるツールがあれば、非常に便利だろう。

Pythonを知っているならば、これぐらいのコーディング自体は簡単にできると思う。

アテネ

 3月の話。


海外出張が2つあり(3つあったが1つ断った)、なかなか忙しい。

1つ目はバルセロナ。これは出発当日にイラン戦争が始まったため、キャンセル。

もし、1日早くフライトしていたら危なかった。ドーハで10日ぐらいスタックしていた可能性があった。


2つ目はアテネ。こちらはトルコ上空を飛ぶルートのため、欠航しませんでした。


でも、アテネについたのは良いものの、翌日にはタクシーが全面スト。

そうだよね、ヨーロッパはこれがあるよね...。


目的地はアテネからかなり離れた場所にあり、タクシーがないとつらい...。

調べたら、ローカルの路線バスを乗り継ぎ乗り継ぎ、50停留所ぐらい先にあるようだ。

ということで、意を決してゴー!




写真のように、誰もいないエーゲ海沿岸

停留書を探してスーツケース転がして歩く私。


3月の日本海のような海風。

岩稜、荒野、そして看板はギリシア語のみ。


不安しかないが、逆にいうと不安しかない。

信じていくのみ!


ということでなんやかんや目的地に到着しました。




ここが私の泊まるところ。一棟借り上げです。

胸キュンです。




一人ぼっちの住まいは最高なのだけど、ただ、海の真横なんよね。

窓の横がそのままビーチになっている。

日本人としては、海の真横っていうのは、ちょっと怖い。

私だけでしょうか?




あとは会社の同僚たちとパーティー。

写真は、アテネ市街地のビルのルーフトップバーより

アクロポリスの夜景。

ここで民主主義が始まったんよね。昔の人はえらいなあ。




今回は初めてのギリシアで、実はギリシア語の音にも少し興味があった。

文字の読みは(キリル語の知識を使えば読めるが)

どのような音で聞こえるのか、アラビア語っぽいのかなど、全く想像できなかった


実際は意外と巻き舌系のサウンドで、しかもロシア語っぽい巻き舌ではなく、

むしろ南欧っぽい印象を受けた。


あと英語で呼びかけるときは、my friendなのね。

これは、国とか地域によって結構違います。broとか、mateとか...。


しかし、いい年して、いまだにこんな学生旅行みたいなことしてる。

冒険旅行をしたいわけでは決してないのだが。