← ブログに戻る
EngineeringBuild in PublicVideo

LLMに名前の誤字を直させたら、製品名そのものを書き換えられた

AIクリッパーに固有名詞の修正をさせていたら、ある動画で無名のモデル名が実在する競合製品名に置き換わっていた。なぜ起きたのか、そしてコードでの対処。

2026年9月28日

LLMに名前の誤字を直させたら、製品名そのものを書き換えられた

作成日: 2026年9月28日 · 更新日: 2026年9月28日

Katto はAI動画クリッパーです。長い動画を放り込むと、良いところを切り出して縦型ショートにし、字幕まで書いてくれます。私はこれを個人で、公開しながら作っています。今回書くのは、料金ページで宣伝している機能が、こっそり本来の仕事の逆をやっていたのを見つけた話です。

解決しようとしていた問題

音声認識は単語にはとても強く、名前にはとても弱いです。Whisper は初めて出会うブランド名を聞くと、音のとおりに書きます。「Trump」は「trompe」になり、「Suárez」は「Suares」になり、「ChatGPT」は「chatgépété」になります。フランス語のサッカー動画では、1本の文字起こしの中にこれが98件ありました。

名前が崩れた字幕は雑に見えますし、字幕はクリップの中でいちばん目に入る部分です。そこで修正パスを追加しました。文字起こしのあと、テキストを小さな言語モデルに渡し、指示は1つだけ。音のとおりに書かれた固有名詞を見つけて、スペルを直すこと。コストは動画1本あたり1セントほどです。これで98件は直りました。

実際に世に出たもの

先週、あるユーザーが大規模言語モデルについてのフランス語動画をクリップしました。話者は JEV というモデルの話を繰り返していました。Whisper はそれを聞いて「Jev」と書きました。十分近く、誰も気にしないレベルです。

出てきたクリップのタイトルは 「Jamba は過大評価されている理由」 と 「Jamba: 革命的でありながら過大評価」 でした。字幕も Jamba。説明文も Jamba。

Jamba は AI21 が作る実在の大規模言語モデルです。ただ、動画に出てくるモデルではありません。

パイプラインが保存していたものを見に行きました。アーカイブされた文字起こしには「Jev」が2回あり、「Jamba」は0回でした。それ以降のすべての段階では「Jamba」だけで、「Jev」は一度も出てきません。スコア付けされた候補、クリップのメタデータ、クリッププール、合計24箇所。文字起こしは正しかったのです。それを守るために足したものが、それを壊していました。

なぜモデルはそうしたのか

親切なアシスタントがやることを、そのままやったのです。動画のテーマは言語モデル。「Jev」はモデルが知らないモデル名。「Jamba」は知っているモデル名で、目を細めれば両者はそう遠くない。文脈のなかでは、一方を他方に置き換えるのは、でっち上げではなく修正に見えます。

この種のタスクについて、誰も警告してくれない失敗モードがこれです。スペルチェッカーは知らない単語をそのまま残します。言語モデルは知らない単語に出会うと、知っているいちばん近い単語に手を伸ばします。そしてドメイン知識が豊富であればあるほど、その手の伸ばし方は自信たっぷりで、かつ間違ったものになります。私の修正器は、よくある名前に強いからこそ、珍しい名前に弱かったのです。

痛かった部分

これは既に考えていました。プロンプトには、大文字でこう書いてありました。

スペルと大文字小文字の修正のみを行うこと。名前を別の名前に置き換えることは絶対に禁止。もっともらしいが間違った名前を作り出すことは、珍しい名前をそのまま残すことより悪い。[…] 文脈からより有名な名前を推測してはいけない。

3文、曖昧さなし、まさに起きたことを防ぐために書いたもの。モデルはそれを読んで、それでも製品名を書き換えました。

プロンプトの書き方が悪かったとは思いません。そして、もっと良い書き方をしても助けにならなかっただろう、と今は思っています。モデルがやりたがることをやらないよう頼むのは、要望であって制約ではありません。ほとんどの場合は守られます。それは一度も守られないより悪いことです。なぜなら、確認するのをやめてしまうからです。

代わりにやったこと

ルールをプロンプトからコードへ移しました。モデルは今も修正案を出します。そのうえで、各案がスペル修正なのか改名なのかを関数が判定し、改名は黙って捨てます。

判定は意図的に雑です。両方の文字列から大文字小文字とアクセントを取り除き、元の文字列が置き換え後にどれだけ残っているかを測ります。0.6 を超えれば、同じ名前の別の綴り。下回れば、別の名前です。

テストセットの修正はすべて生き残ります。正当な修正の一部は生き残りません。5行目がその実例です。フランス語話者の言う「Nguyen」は「nouillène」と聞き取られ、アクセントを落とすと2つの文字列はほとんど共通部分を持たず、ガードはこの修正を捨てます。ローマ字表記の日本語の名前や、別の言語で一文字ずつ読み上げられた略語でも同じことが起きます。

それでもこちら側を選びました。奇妙な名前がそのまま残っていれば、それは目に見えますし、読者は何のことかを推測できます。間違った名前は目に見えず、誰も推測できません。破棄は両方の文字列とともにログに残します。破棄が起きたということは、モデルが何かを改名しようとしたということで、それは見ておく価値があります。

学んだこと

モデルが無視できるルールは、ルールではない。 制約が重要なら、それはモデルが読む段落ではなく、モデルの後で走るコードに置くべきです。プロンプトは意図を表現します。意図を強制はしません。

修正の有無だけでなく、向きを見る。 このパスにはメトリクスがありました。動画1本あたりの修正件数です。98 は健全な数字に見えました。しかし、修正がテキストを真実に近づけたのか遠ざけたのかを測るものは何もありませんでした。合計だけを数えているなら、悪い修正は良い修正と区別できません。

入力を保存し出力を配信するパイプラインは、二重に嘘をつける。 アーカイブされた文字起こしは「Jev」と言い、配信されたクリップはすべて「Jamba」と言っていました。アーカイブだけを読んでいたら、パイプラインは問題ないと結論していたでしょう。重要なチェックは、外に出ていったものに対するチェックです。

自信は失敗の一部である。 知らない名前をそのまま残す修正器は、目に見える無害な違和感を生みます。置き換える修正器は、きれいで流暢で間違ったテキストを生み、誰も疑いません。私も含めて。動画を作った本人が自分の字幕を読むまでは。

ガードは同日に出しました。マイナーな話題の動画をクリップして、Katto が珍しい名前を聞いたままの形で残していたら、それは今は意図的なものです。

<<>>

関連記事

動画をバズるクリップに変える準備はできましたか?

Katto は長尺動画を自動でクリップ化・字幕付け・リフレームし、ショート動画に変換します。

Katto を無料で試す →
LLMに名前の誤字を直させたら、製品名そのものを書き換えられた | Katto