🚀 文言文(古文)到现代文的翻译器
本项目的模型能够将文言文(古文)翻译成现代文,为对文言文感兴趣的用户提供了便利。同时,该模型还被应用于一个名为【随无涯】的古文阅读应用中,用户可以在阅读时进行翻译。
🚀 快速开始
这个模型已有做成应用, 【随无涯】是一个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,避免结果吃掉句子。