--- language: - zh tags: - SongNet - pytorch - zh - Text2Text-Generation license: "apache-2.0" widget: - text: "严蕊如梦令道是梨花不是。道是杏花不是。白白与红红,别是东风情味。曾记。曾记。人在武陵微醉。" --- # SongNet for Chinese songci(songnet-base-chinese-songci) Model SongNet中文宋词仿写模型 `songnet-base-chinese-songci` evaluate couplet test data: The overall performance of SongNet on songci **test**: |input_text|predict| |:--- |:--- | |道是梨花不是。道是杏花不是。白白与红红,别是东风情味。曾记。曾记。人在武陵微醉。|风撼梧桐影乱。雨洒梧桐影乱。又是一番红,人与暮霞俱远。凄断。凄断。人与暮霞俱远。| 在宋词测试集上生成结果满足字数相同、词性对齐、词面对齐、形似要求,针对性的SongNet网络结构,在语义对仗工整和平仄合律上的效果明显优于T5和GPT2等模型。 SongNet的网络结构: ![arch](songnet-network.png) ## Usage 本项目开源在文本生成项目:[textgen](https://github.com/shibing624/textgen),可支持SongNet模型,通过如下命令调用: Install package: ```shell pip install -U textgen ``` ```python from textgen.language_modeling import SongNetModel model = SongNetModel(model_type='songnet', model_name='songnet-base-chinese-songci') sentences = [ "严蕊如梦令道是梨花不是。道是杏花不是。白白与红红,别是东风情味。曾记。曾记。人在武陵微醉。", "张抡春光好烟澹澹,雨。水溶溶。帖水落花飞不起,小桥东。翩翩怨蝶愁蜂。绕芳丛。恋馀红。不恨无情桥下水,恨东风。" ] print("inputs:", sentences) print("outputs:", model.generate(sentences)) sentences = [ "秦湛卜算子_____,____到。_______,____俏。_____,____报。_______,____笑。", "秦湛卜算子_雨___,____到。______冰,____俏。____春,__春_报。__山花___,____笑。" ] print("inputs:", sentences) print("outputs:", model.fill_mask(sentences)) ``` output: ```shell inputs: ['严蕊如梦令道是梨花不是。道是杏花不是。白白与红红,别是东风情味。曾记。曾记。人在武陵微醉。', '张抡春光好烟澹澹,雨。水溶溶。帖水落花飞不起,小桥东。翩翩怨蝶愁蜂。绕芳丛。恋馀红。不恨无情桥下水,恨东风。'] outputs: ['风撼梧桐影乱。雨洒梧桐影乱。又是一番红,人与暮霞俱远。凄断。凄断。人与暮霞俱远。', '光阴速,还。转飞残。日向旧时檐下见,两三竿。多少社寒垂涎。玉人间。恶循环。不见旧时檐下见,两三竿。'] inputs: ['秦湛卜算子_____,____到。_______,____俏。_____,____报。_______,____笑。', '秦湛卜算子_雨___,____到。______冰,____俏。____春,__春_报。__山花___,____笑。'] outputs: ['新月破寒影,正柳暗清到。千缕万绪浓於雨,多少匆匆俏。梦魂又不得,那堪断得报。听著窗前柳弄歌,寂寞梨花笑。', '风雨送春归,草软莺簧到。门对宝篆淡淡冰,翠点吴绫俏。小立东风春,不怕春归报。多少山花妒落红,背面一饷笑。'] ``` 模型文件组成: ``` songnet-base-chinese-songci ├── pytorch_model.bin └── vocab.txt ``` ### 训练数据集 #### 中文宋词数据集 - 数据:[songci](https://github.com/lipiji/SongNet/blob/master/data/ci.txt) - 相关内容 - [Huggingface](https://huggingface.co/) - [SongNet paper](https://aclanthology.org/2020.acl-main.68/) - [textgen](https://github.com/shibing624/textgen) 数据格式: ```text head -n 2 ci.txt 赵必水调歌头百岁人能几,七十世间稀。何况先生八十,蔗境美如饴。好与七松处士,更与梅花君子,永结岁寒知。菊节先五日,满酌紫霞卮。美成词,山谷字,老坡诗。三径田园如昨,久矣赋归辞。不是商山四皓,便是香山九老,红颊白须眉。九十尚入相,绿竹颂猗猗。 李曾伯水调歌头千一载英杰,百二国山河。提封几半宇宙,万里仗天戈。十乘晋军旗鼓,三岁秦关扃锁,地利属人和。位次功第一,未数侯何。建青油,持柴荷,听黄麻。乾坤整顿都了,玉殿侍羲娥。且醉东湖花柳,却泛西湖舟楫,留不住岷峨。谁为语儒馆,浓墨被诗歌。 ``` 如果需要训练SongNet模型,请参考[https://github.com/shibing624/textgen/blob/main/examples/language_generation/training_zh_songnet_demo.py](https://github.com/shibing624/textgen/blob/main/examples/language_generation/training_zh_songnet_demo.py) ## Citation ```latex @software{textgen, author = {Xu Ming}, title = {textgen: Implementation of Text Generation models}, year = {2022}, url = {https://github.com/shibing624/textgen}, } ```