🚀 文言文(古文)到現代文的翻譯器
本項目的模型能夠將文言文(古文)翻譯成現代文,為對文言文感興趣的用戶提供了便利。同時,該模型還被應用於一個名為【隨無涯】的古文閱讀應用中,用戶可以在閱讀時進行翻譯。
🚀 快速開始
這個模型已有做成應用, 【隨無涯】是一個huggingface spaces + streamlit 的古文閱讀應用(含海量書籍), 可以在閱讀時翻譯。輸入文言文, 可以是斷句 或者 未斷句的文言文, 模型會預測現代文的表述。
其他相關模型:
歡迎前往我的github文言詩詞項目頁面探討、加⭐️ 。
訓練語料是九十多萬句句對, 數據集鏈接📚。訓練時source序列(古文序列), 按照50%的概率整句去除所有標點符號。
✨ 主要特性
- 支持斷句或未斷句的文言文輸入,輸出對應的現代文表述。
- 可應用於【隨無涯】古文閱讀應用,方便用戶在閱讀時進行翻譯。
📦 安裝指南
暫未提及安裝相關內容,可參考項目源代碼進行安裝。
💻 使用示例
基礎用法
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)
高級用法
使用時需要注意以下幾點:
- 你必須將
generate
函數的eos_token_id
設置為102就可以翻譯出完整的語句, 不然翻譯完了會有殘留的語句(因為做熵的時候用pad標籤=-100導致)。目前huggingface 頁面上compute按鈕會有這個問題, 推薦使用上述代碼來得到翻譯結果。
- 請設置
generate
的參數num_beams>=3
, 以達到較好的翻譯效果。
- 請設置
generate
的參數max_length
256, 不然結果會吃掉句子。
以下是一些實際的翻譯示例:
>>> inference('非我族類其心必異')
['不 是 我 們 的 族 類 , 他 們 的 心 思 必 然 不 同 。']
>>> inference('肉食者鄙未能遠謀')
['吃 肉 的 人 鄙 陋 , 不 能 長 遠 謀 劃 。']
>>> inference('江山如此多嬌引無數英雄競折腰惜秦皇漢武略輸文采唐宗宋祖稍遜風騷')
['江 山 如 此 多 , 招 引 無 數 的 英 雄 , 競 相 折 腰 , 可 惜 秦 皇 、 漢 武 , 略 微 有 文 採 , 唐 宗 、 宋 祖 稍 稍 遜 出 風 雅 。']
>>> inference("清風徐來水波不興")
['清 風 慢 慢 吹 來 , 水 波 不 興 。']
>>> inference("無他唯手熟爾")
['沒 有 別 的 事 , 只 是 手 熟 罷 了 。']
>>> inference("此誠危急存亡之秋也")
['這 實 在 是 危 急 存 亡 的 時 候 。']
📚 詳細文檔
目前項目已有做成應用, 【隨無涯】是一個huggingface spaces + streamlit 的古文閱讀應用(含海量書籍), 可以在閱讀時翻譯。
🔧 技術細節
訓練語料是九十多萬句句對, 數據集鏈接📚。訓練時source序列(古文序列), 按照50%的概率整句去除所有標點符號。
📄 許可證
暫未提及許可證相關信息。
其他文言詩詞的資源
⚠️ 重要提示
使用時必須將generate
函數的eos_token_id
設置為102,否則翻譯完會有殘留語句。目前huggingface頁面上compute按鈕存在此問題,推薦使用示例代碼獲取翻譯結果。
💡 使用建議
請設置generate
的參數num_beams>=3
,以達到較好的翻譯效果;設置generate
的參數max_length
為256,避免結果吃掉句子。