gpt2-kanakanji

GPT-2 ベースの日本語かな漢字変換モデルです。カタカナ読みと左コンテキストを入力として漢字かな混じり文を出力します。

ベースモデル

ku-nlp/gpt2-small-japanese-char (CC-BY-SA-4.0)

訓練データ

Miwa-Keita/zenz-v2.5-dataset

特殊トークン

モデルは 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)

AJIMEE-Bench (n=200) での評価結果です。

Greedy decoding

区分 n Acc@1 MinCER
全体 200 0.7050 0.0432
文脈あり 100 0.7000 0.0498
文脈なし 100 0.7100 0.0365

ライセンス

ベースモデルのライセンス CC-BY-SA 4.0 を継承します。

Downloads last month
354
Safetensors
Model size
90.5M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for yuuki14202028/gpt2-kanakanji

Finetuned
(3)
this model

Dataset used to train yuuki14202028/gpt2-kanakanji