Rosetta-12Bとは?
YanoljaNEXT-Rosetta-12B は、旅行テック企業 Yanolja NEXT が開発した 多言語翻訳特化LLM です。通常の翻訳モデルと違って、JSONの構造を保持したまま翻訳できる のが最大の特徴。
ベースモデル:Google Gemma-3-12B をファインチューニング
対応言語:英語、日本語、韓国語、中国語、スペイン語、フランス語、ドイツ語、ポルトガル語、アラビア語、ロシア語、ヒンディー語(計11言語)
強み:
JSONのキーはそのまま、値だけ翻訳
Glossaryを指定して訳語を統一可能
EC商品カタログやレビューの多言語化に最適
実験の目的
今回は「商品カタログ(JSON形式)」をそのまま 英語・スペイン語・フランス語 に翻訳し、多言語対応ECサイトで使えるデータを作ることを目指します。
翻訳対象のJSON
catalog = [
{"product_name":"折りたたみ傘","description":"軽量で持ち運びやすく、雨の日に便利。","price":"1500円","category":"日用品"},
{"product_name":"真空断熱ボトル 500ml","description":"保冷・保温に優れ、スポーツや通勤に最適。","price":"2980円","category":"日用品"}
]
英語版
{
"product_name": "Folding Umbrella",
"description": "Lightweight and easy to carry; convenient on rainy days.",
"price": "JPY 1,500",
"category": "Household goods"
}
スペイン語版
{
"product_name": "Paraguas plegable",
"description": "Ligero y fácil de llevar; práctico en días de lluvia.",
"price": "JPY 1,500",
"category": "Artículos para el hogar"
}
フランス語版
{
"product_name": "Parapluie pliant",
"description": "Léger et facile à transporter ; pratique les jours de pluie.",
"price": "JPY 1,500",
"category": "Articles ménagers"
}
考察
✅ JSON構造が壊れない → そのままシステムに流せる
✅ Glossaryで用語統一ができる
✅ 複数言語に同時展開可能
⚠️ モデルサイズが大きいのでColab GPUが必須
⚠️ 長文や特殊な表現では自然さに差が出ることも
おすすめの用途
EC商品カタログの自動翻訳:データベースのJSONをそのまま多言語化
ホテル・観光レビューのローカライズ:ユーザー生成コンテンツの多言語対応
FAQ・サポートデータの準備:多言語チャットボット用の翻訳データ作成
社内システムやAPI出力の翻訳:JSON形式のまま言語変換してすぐ利用可能
手順
1 環境準備
!pip install -q transformers accelerate torch
2 モデル読み込み
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "yanolja/YanoljaNEXT-Rosetta-12B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.bfloat16
)
3 翻訳対象のJSON
catalog = [
{"product_name":"折りたたみ傘","description":"軽量で持ち運びやすく、雨の日に便利。","price":"1500円","category":"日用品"},
{"product_name":"真空断熱ボトル 500ml","description":"保冷・保温に優れ、スポーツや通勤に最適。","price":"2980円","category":"日用品"}
]
4 翻訳 → 抽出 → 保存
import json, re, textwrap
def build_prompt(src_obj, target_lang="English"):
return textwrap.dedent(f"""
Translate the following JSON values from Japanese into {target_lang}.
- Preserve JSON structure
- Translate only values (not keys)
- Keep numbers and currency intact
Input:
{json.dumps(src_obj, ensure_ascii=False, indent=2)}
Output:
""")
inputs = tokenizer(build_prompt(catalog, "English"), return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
match = re.search(r"\{[\s\S]*\}|\[[\s\S]*\]", result)
if match:
translated_json = json.loads(match.group(0))
with open("translated_catalog.en.json", "w", encoding="utf-8") as f:
json.dump(translated_json, f, ensure_ascii=False, indent=2)
まとめ
Rosetta-12B は 「JSON構造を壊さず翻訳」 できる珍しいモデル。
通常の翻訳LLMでは難しい「キーそのまま・値だけ翻訳」をきれいに実現できるので、
実務のバックエンド処理に直結する翻訳ワークフロー が作れます。
特に EC や観光業のように「大量の商品・レビューを多言語で扱う場面」で大きな威力を発揮。Glossaryを併用すれば用語統一もでき、運用に耐えるクオリティの多言語データ生成が可能です。
こんにちは、だいすけです。
ぼくはフリーランス・エンジニアで、 AR や 機械学習のアプリの実装をしています。
お仕事のご相談こちらまで。
rockyshikoku@gmail.com
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。