CoolFace
Modelpublic

supermy/c2m-mt5

sourceHugging Faceupdated 4y agoView on Hugging Face
3likes13downloads
Model Card

文言文 to 现代文

Model description

How to use

使用 pipeline 调用模型:

python
>>> from transformers import pipeline
>>> model_checkpoint = "supermy/c2m-mt5"
>>> translator = pipeline("translation", 
		model=model_checkpoint,
		num_return_sequences=1,
		max_length=52, 
		truncation=True,)

>>> translator("往者不可谏,来者犹可追。")
[{'translation_text': '过 去 的 事 情 不能 劝 谏 , 未来 的 事 情 还 可以 追 回 来 。 如 果 过 去 的 事 情 不能 劝 谏 , 那 么 , 未来 的 事 情 还 可以 追 回 来 。 如 果 过 去 的 事 情'}]

>>> translator("福兮祸所伏,祸兮福所倚。",do_sample=True)
[{'translation_text': '幸 福 是 祸 患 所 隐 藏 的 , 灾 祸 是 福 祸 所 依 托 的 。 这 些 都 是 幸 福 所 依 托 的 。 这 些 都 是 幸 福 所 带 来 的 。 幸 福 啊 , 也 是 幸 福'}]

>>> translator("成事不说,遂事不谏,既往不咎。", num_return_sequences=1,do_sample=True)
[{'translation_text': '事 情 不 高 兴 , 事 情 不 劝 谏 , 过 去 的 事 就 不 会 责 怪 。 事 情 没 有 多 久 了 , 事 情 没 有 多 久 , 事 情 没 有 多 久 了 , 事 情 没 有 多'}]

>>> translator("逝者如斯夫!不舍昼夜。",num_return_sequences=1,max_length=30)
[{'translation_text': '逝 去 的 人 就 像 这 样 啊 , 不分 昼夜 地 去 追 赶 它 们 。 这 样 的 人 就 不 会 忘 记'}]

Here is how to use this model to get the features of a given text in PyTorch:

python
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("supermy/c2m-mt5")
model = AutoModelForSeq2SeqLM.from_pretrained("supermy/c2m-mt5")
text = "用你喜欢的任何文本替换我。"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)

Training data

非常全的文言文(古文)-现代文平行语料,基本涵盖了大部分经典古籍著作。

原始爬取的数据是篇章级对齐,经过脚本分句(按照句号分号感叹号问号划分)以及人工校对,形成共计约96万句对。目录bitext下是文言文-现代文对齐的平行数据。此外,目录source下是文言文单语数据,target下是现代文单语数据,这两个目录下的文件内容按行对齐。

以下为数据统计信息。其中,短篇章中包括了《论语》、《孟子》、《左传》等篇幅较短的古籍,已和《资治通鉴》合并。

书名句数
短篇章和资治通鉴348727
元史21182
北史25823
北书10947
南史13838
南齐书13137
史记17701
后汉书17753
周书14930
太平广记59358
宋书23794
宋史77853
徐霞客游记22750
新五代史10147
新唐书12359
旧五代史11377
旧唐书29185
明史85179
晋书21133
梁书14318
水经注全11630
汉书37622
辽史9278
金史13758
陈书7096
隋书8204
魏书28178
总计967257

《短篇章和资治通鉴》中各书籍统计如下(此部分数据量不完全准确):

书名句数
资治通鉴7.95w
左传1.09w
大学章句集注86
反经4211
公孙龙子73
管子6266
鬼谷子385
韩非子4325
淮南子2669
黄帝内经6162
皇帝四经243
将苑100
金刚经193
孔子家语138
老子398
了凡四训31
礼记4917
列子1735
六韬693
六祖坛经949
论语988
吕氏春秋2473
孟子1654
梦溪笔谈1280
墨子2921
千字文82
清史稿1604
三字经234
山海经919
伤寒论712
商君书916
尚书1048
世说新语3044
司马法132
搜神记1963
搜神后记540
素书61
孙膑兵法230
孙子兵法338
天工开物807
尉缭子226
文昌孝经194
文心雕龙1388
吴子136
孝经102
笑林广记1496
荀子3131
颜氏家训510
仪礼2495
易传711
逸周书1505
战国策3318
贞观政要1291
中庸206
周礼2026
周易460
庄子1698
百战奇略800
论衡1.19w
智囊2165
罗织经188
朱子家训31
抱朴子217
地藏经547
国语3841
容斋随笔2921
幼学琼林1372
三略268
围炉夜话387
冰鉴120

如果您使用该语料库,请注明出处:https://github.com/NiuTrans/Classical-Modern

感谢为该语料库做出贡献的成员:丁佳鹏、杨文权、刘晓晴、曹润柘、罗应峰。

Training procedure

在英伟达16G显卡训练了 4 天整,共计68 次。

文言文数据集 训练数据. 模型 MT5


[INFO|trainer.py:1628] 2022-12-15 16:08:36,696 >> ***** Running training *****
[INFO|trainer.py:1629] 2022-12-15 16:08:36,696 >>   Num examples = 967255
[INFO|trainer.py:1630] 2022-12-15 16:08:36,697 >>   Num Epochs = 6
[INFO|trainer.py:1631] 2022-12-15 16:08:36,697 >>   Instantaneous batch size per device = 12
[INFO|trainer.py:1632] 2022-12-15 16:08:36,697 >>   Total train batch size (w. parallel, distributed & accumulation) = 12
[INFO|trainer.py:1633] 2022-12-15 16:08:36,697 >>   Gradient Accumulation steps = 1
[INFO|trainer.py:1634] 2022-12-15 16:08:36,697 >>   Total optimization steps = 483630
[INFO|trainer.py:1654] 2022-12-15 16:08:36,698 >>   Continuing training from checkpoint, will skip to saved global_step
[INFO|trainer.py:1655] 2022-12-15 16:08:36,698 >>   Continuing training from epoch 5
[INFO|trainer.py:1656] 2022-12-15 16:08:36,698 >>   Continuing training from global step 465000

{'loss': 5.2906, 'learning_rate': 1.8743667679837894e-06, 'epoch': 5.78}
{'loss': 5.3196, 'learning_rate': 1.8226743584971985e-06, 'epoch': 5.78}

{'loss': 5.3467, 'learning_rate': 6.513243595310464e-08, 'epoch': 5.99}
{'loss': 5.3363, 'learning_rate': 1.344002646651366e-08, 'epoch': 6.0}
{'train_runtime': 6277.5234, 'train_samples_per_second': 924.494, 'train_steps_per_second': 77.042, 'train_loss': 0.2044413571775476, 'epoch': 6.0}
***** train metrics *****
  epoch                    =        6.0
  train_loss               =     0.2044
  train_runtime            = 1:44:37.52
  train_samples            =     967255
  train_samples_per_second =    924.494
  train_steps_per_second   =     77.042
12/15/2022 17:53:23 - INFO - __main__ - *** Evaluate ***
[INFO|trainer.py:2920] 2022-12-15 17:53:23,729 >> ***** Running Evaluation *****
[INFO|trainer.py:2922] 2022-12-15 17:53:23,729 >>   Num examples = 200
[INFO|trainer.py:2925] 2022-12-15 17:53:23,729 >>   Batch size = 12
100%|██████████| 17/17 [00:07<00:00,  2.29it/s]
[INFO|modelcard.py:443] 2022-12-15 17:53:32,737 >> Dropping the following result as it does not have all the necessary fields:
{'task': {'name': 'Translation', 'type': 'translation'}, 'metrics': [{'name': 'Bleu', 'type': 'bleu', 'value': 0.7225}]}
***** eval metrics *****
  epoch                   =        6.0
  eval_bleu               =     0.7225
  eval_gen_len            =     12.285
  eval_loss               =     6.6782
  eval_runtime            = 0:00:07.77
  eval_samples            =        200
  eval_samples_per_second =     25.721
  eval_steps_per_second   =      2.186