Miwa-Keita/zenz-v2.5-dataset
Viewer • Updated • 129M • 268 • 18
GPT-2 ベースの日本語かな漢字変換モデルです。カタカナ読みと左コンテキストを入力として漢字かな混じり文を出力します。
ku-nlp/gpt2-small-japanese-char (CC-BY-SA-4.0)
モデルは Private Use Area の Unicode トークンを使用します。
| トークン | Unicode | 用途 |
|---|---|---|
| INPUT_START | U+EE00 | カタカナ入力開始 |
| OUTPUT_START | U+EE01 | 漢字出力開始 |
| CONTEXT | U+EE02 | 左コンテキストマーカー |
プロンプト形式: {CONTEXT}<left_context>{INPUT_START}<input>{OUTPUT_START}
出力形式: <output> (EOS トークンで終端)
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
CONTEXT_TOKEN = "\uEE02"
INPUT_START_TOKEN = "\uEE00"
OUTPUT_START_TOKEN = "\uEE01"
tokenizer = AutoTokenizer.from_pretrained("yuuki14202028/gpt2-kanakanji")
model = AutoModelForCausalLM.from_pretrained("yuuki14202028/gpt2-kanakanji")
model.eval()
def convert(input_kana: str, left_context: str = "") -> str:
prompt = f"{CONTEXT_TOKEN}{left_context}{INPUT_START_TOKEN}{input_kana}{OUTPUT_START_TOKEN}"
input_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
input_ids,
max_new_tokens=64,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id,
do_sample=False,
)
generated = output_ids[0][input_ids.shape[1]:]
return tokenizer.decode(generated, skip_special_tokens=True)
print(convert("ニホンゴ"))
# → "日本語"
print(convert("ノイライガクルヨウニ", left_context="きっかけで、漫画の仕事"))
# → "の依頼が来るように"
AJIMEE-Bench (n=200) での評価結果です。
| 区分 | n | Acc@1 | MinCER |
|---|---|---|---|
| 全体 | 200 | 0.7050 | 0.0432 |
| 文脈あり | 100 | 0.7000 | 0.0498 |
| 文脈なし | 100 | 0.7100 | 0.0365 |
ベースモデルのライセンス CC-BY-SA 4.0 を継承します。
Base model
ku-nlp/gpt2-small-japanese-char