🚀 古典中国語から現代中国語への翻訳モデル
このモデルは、古典中国語(古文)を現代中国語に翻訳することができます。このモデルに興味を持つ方は、少なくとも現代中国語を話せると思われます。以下、ドキュメントを日本語で続けます。
🚀 クイックスタート
このモデルは、古典中国語(古文)を現代中国語に翻訳する翻訳器です。既にアプリケーションとして実装されており、【随无涯】はhuggingface spaces + streamlitを用いた古文閲読アプリ(海量の書籍を含む)で、閲読中に翻訳することができます。
入力として文言文を与えると、句読点の有無に関わらず、現代中国語の表現を予測します。他にも関連するモデルがあり、現代中国語から文言文への翻訳モデルもあります。
この文言文から現代中国語への翻訳器については、私のGitHub文言詩詞プロジェクトページで議論したり、⭐️を付けたりすることができます。
訓練データは90万以上の句対で、データセットのリンク📚から入手できます。訓練時には、source系列(古文系列)に対して50%の確率で句読点をすべて削除します。
✨ 主な機能
- 古典中国語(古文)を現代中国語に翻訳する。
- 句読点の有無に関わらず、入力された文言文を翻訳する。
- 関連する他の翻訳モデルも提供する。
📦 インストール
このモデルを使用するには、以下のコードを実行して必要なライブラリをインストールします。
from transformers import (
EncoderDecoderModel,
AutoTokenizer
)
PRETRAINED = "raynardj/wenyanwen-ancient-translate-to-modern"
tokenizer = AutoTokenizer.from_pretrained(PRETRAINED)
model = EncoderDecoderModel.from_pretrained(PRETRAINED)
💻 使用例
基本的な使用法
from transformers import (
EncoderDecoderModel,
AutoTokenizer
)
PRETRAINED = "raynardj/wenyanwen-ancient-translate-to-modern"
tokenizer = AutoTokenizer.from_pretrained(PRETRAINED)
model = EncoderDecoderModel.from_pretrained(PRETRAINED)
def inference(text):
tk_kwargs = dict(
truncation=True,
max_length=128,
padding="max_length",
return_tensors='pt')
inputs = tokenizer([text,],**tk_kwargs)
with torch.no_grad():
return tokenizer.batch_decode(
model.generate(
inputs.input_ids,
attention_mask=inputs.attention_mask,
num_beams=3,
max_length=256,
bos_token_id=101,
eos_token_id=tokenizer.sep_token_id,
pad_token_id=tokenizer.pad_token_id,
), skip_special_tokens=True)
高度な使用法
print(inference('非我族类其心必异'))
print(inference('肉食者鄙未能远谋'))
print(inference('江山如此多娇引无数英雄竞折腰惜秦皇汉武略输文采唐宗宋祖稍逊风骚'))
print(inference("清风徐来水波不兴"))
print(inference("无他唯手熟尔"))
print(inference("此诚危急存亡之秋也"))
📚 ドキュメント
推奨の推論パラメータ
generate
関数のeos_token_id
を102に設定することで、完全な文を翻訳することができます。そうしないと、翻訳後に残りの文が残る場合があります(エントロピー計算時にpadラベル=-100を使用しているため)。現在、huggingfaceページのcomputeボタンではこの問題があり、上記のコードを使用することを推奨します。
generate
のnum_beams
パラメータを3以上に設定することで、より良い翻訳結果を得ることができます。
generate
のmax_length
パラメータを256に設定することで、結果が文を切り捨てることを防ぐことができます。
その他の文言詩詞のリソース
⚠️ 重要注意
generate
関数のeos_token_id
を102に設定することで、完全な文を翻訳することができます。そうしないと、翻訳後に残りの文が残る場合があります。
💡 使用ヒント
generate
のnum_beams
パラメータを3以上に設定し、max_length
パラメータを256に設定することで、より良い翻訳結果を得ることができます。