yuuki14202028/gpt2-kanakanji
3502
gpt2-kanakanji
GPT-2 ベースの日本語かな漢字変換モデルです。カタカナ読みと左コンテキストを入力として漢字かな混じり文を出力します。
ベースモデル
ku-nlp/gpt2-small-japanese-char (CC-BY-SA-4.0)
訓練データ
特殊トークン
モデルは Private Use Area の Unicode トークンを使用します。
プロンプト形式: {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
ライセンス
ベースモデルのライセンス CC-BY-SA 4.0 を継承します。
