Kurage
Kurage WikiKurageナレッジベース
Kurage.AIに聞く →
ホーム › Wiki › 概念 › 日本語化率100%でも残る日本語検索の穴
概念

日本語化率100%でも残る日本語検索の穴

UIを100%日本語化しても検索・名寄せ・表記ゆれは別層の問題として残り、最悪は無言で0件になる現象

定義

OSSのUI文言(メッセージカタログ)を100%日本語に訳しても、検索・並び替え・名寄せといったデータ層の日本語対応は別問題として残る現象。翻訳率は「画面に日本語が出るか」しか保証せず、「日本語で探せるか」は保証しない。極端な場合は、翻訳率100%のまま検索結果が1件も返らない。

kurage-articles-index のOSS日本語化シリーズと、kurage-products に並ぶ自社製品群の双方で、複数のプロダクトにまたがって繰り返し実測された。

なぜ起きるか — 三つの層の分離

層 対象 翻訳で解決するか
表示層 ボタン・メニュー・エラーメッセージ する(=翻訳率)
検索層 全文索引、トークナイザ、照合順序 しない
データ層 和暦、全角半角、旧字体、Shift_JIS、OCR しない

翻訳率100%は最上段の達成にすぎない。検索層はDB側の設定(全文索引のアナライザ、n-gram、pg_bigm/textsearch_ja の有無、LIKE 検索のみか)に依存し、UIの言語設定とは独立している。

しかも原因はDBの設定だけではない。全文索引エンジン自体が空白区切り言語を前提としていることがある。Xapian のように語を空白で切る索引は、日本語の一文をまるごと一語として登録しうる。この場合、訳がどれだけ揃っていても語彙の一致が起こらず、検索は静かに0件を返す。

典型的な症状

実測された事例(索引より)

検索そのものが成立しない

翻訳100%でも穴が残る

検索の穴を前提に設計された製品

kurage-app-store の製品群は、この穴が解けないまま納品されることを避ける設計を繰り返し採用している。

対策の型

  1. 翻訳率と検索品質を別々に測る — 「訳した」「検索できた」を一つの達成度にまとめない。
  2. 日本語の実データで検索テストを先に書く — ひらがな・カタカナ・漢字・全角半角を混ぜたクエリセットを用意し、「訳した直後に0件を返さないこと」を合格条件にする。
  3. 索引側を直す — アナライザ/n-gram/正規化を設定する。Xapian等では一文一語になっている索引そのものを解体する。UIの翻訳では届かない。
  4. 引けないときに引けないと言う — 一致しなかったことを「該当なし」ではなく「判定できませんでした」と返す。無言の0件を作らない。→ unknown-vs-outside-distinction
  5. 完全一致の外側を別経路で塞ぐ — 埋め込みによる類似検索を併用する(事前計算の表でもよい)。ただし結果には根拠を添える。→ evidence-traceability
  6. 判定をAIに委ねない — 語の一致のような決定的な処理にし、使った語を画面に出す。→ deterministic-core
  7. 測った結果を上流に返す — 訳のPRと検索の修正提案を分けて出す。→ oss-upstream-contribution

関連

含意

OSS評価において「日本語対応」を翻訳率だけで判定すると、導入後に検索が使えず業務が回らない事故が起きる。しかもこの穴はエラーを出さないため、PoCの段階でも「動いている」と誤認されやすい。評価項目は少なくとも 表示・検索・データ の3層に分ける必要がある。この概念は saas-subscription-replacement の判断基準(乗り換えて実務に耐えるか)にも直接効く。

「日本語化率100%でも残る日本語検索の穴」についてもっと知りたいですか?
Kurage.AI に質問する