Skip to content

StyleLLM文风大模型:基于大语言模型的文本风格迁移项目。Text style transfer base on Large Language Model. #文字修饰 # 润色 #风格模仿

License

Notifications You must be signed in to change notification settings

stylellm/stylellm_models

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StyleLLM 文风大模型

模型介绍

stylellm 是一个基于大语言模型(llm)的文本风格迁移(text style transfer)项目。项目利用大语言模型来学习指定文学作品的写作风格(惯用词汇、句式结构、修辞手法、人物对话等),形成了一系列特定风格的模型。

利用stylellm模型可将学习到的风格移植至其他通用文本上,即:输入一段原始文本,模型可对其改写,输出带有该风格特色的文本,达到文字修饰、润色或风格模仿的效果。

项目内容

模型列表

stylellm-中国四大名著系列 包括基于Yi-6b微调的四个模型,分别采用《三国演义》、《西游记》、《水浒传》、《红楼梦》四本中国古典长篇小说训练而成:

风格 模型 使用方法
三国演义风格 🤗 stylellm/SanGuoYanYi-6b inference.py
西游记风格 🤗 stylellm/XiYouJi-6b inference.py
水浒传风格 🤗 stylellm/ShuiHuZhuan-6b inference.py
红楼梦风格 🤗 stylellm/HongLouMeng-6b inference.py

量化模型列表(AWQ,4bits)

风格 模型
三国演义风格 🤗 stylellm/SanGuoYanYi-6b-AWQ
西游记风格 🤗 stylellm/XiYouJi-6b-AWQ
水浒传风格 🤗 stylellm/ShuiHuZhuan-6b-AWQ
红楼梦风格 🤗 stylellm/HongLouMeng-6b-AWQ

注意:
使用AWQ量化模型前需安装AutoAWQ:pip install autoawq
量化后的模型占用显存4.2GB,适用于较小的显卡使用,但风格表达能力有所下降,追求完整效果的场景请使用量化前版本

风格转化效果

以《白雪公主》原文作为输入,以下是不同风格模型的改写结果。

原文 - 《白雪公主》 改写-三国演义风格 改写-西游记风格 改写-水浒传风格 改写-红楼梦风格
严冬时节,鹅毛一样的大雪片在天空中到处飞舞着,有一个王后坐在王宫里的一扇窗子边,正在为她的女儿做针线活儿,寒风卷着雪片飘进了窗子,乌木窗台上飘落了不少雪花。 时值隆冬,大雪压境,王后坐于王宫之窗下,正与女作绣,寒风入室,吹落乌木窗台之雪。 正是那:朔风吹凛凛,瑞雪霭纷纷;王后坐窗前,正教女作绣,只见那:寒风送雪入窗棂,乌木台头堆积雪。 此时正是隆冬之际,鹅毛般大雪乱飘,有一王后坐于王宫内一扇窗户前,正缝其女衣,寒风卷雪入得窗来,把那乌木窗台都压坏了。 且说那严冬天气,鹅毛大雪,纷纷扬扬,只见那王后坐于王宫之窗下,正教他女儿作针黹,忽见寒风卷雪,吹入窗内,乌木窗台之上,积了半日之雪。
她抬头向窗外望去,一不留神,针刺进了她的手指,红红的鲜血从针口流了出来,有三点血滴落在飘进窗子的雪花上。 其女仰视窗外,不料针落指中,遂出血于雪,有三点之痕。 只见那女子举目望外观看时,不期把个指头儿扎了一针,又见出血,却似三两点血珠儿落于雪内。 那娘子仰面看时,只道是雪片落将下来,不提防把针儿捻在手里,一时失手,正中指尖,便见出血来,有三两点,都滴入窗里去。 只见那丫头往外瞧时,一时针扎手了,便出血了,有三四个血点儿,落在了雪里。
她若有所思地凝视着点缀在白雪上的鲜红血滴,又看了看乌木窗台,说道:"但愿我小女儿的皮肤长得白里透红,看起来就像这洁白的雪和鲜红的血一样,那么艳丽,那么骄嫩,头发长得就像这窗子的乌木一般又黑又亮!" 其女乃凝眸望那点缀于白雪之下的鲜红血滴,复观乌木窗棂曰:“吾愿吾小女肌肤如雪,容貌似此洁白之雪与鲜红之血,娇嫩之发,正如此窗棂之乌木也。” 只见那般血迹,却也殷红;又见那般白雪,却也莹洁。她又望了望那乌木窗棂道:“但愿吾女肌肤如雪,颜色似朱,发髻如漆,方才好哩!” 只见那女子把眼来望那白雪上点点鲜血,又看那乌木窗子道:"只愿俺的小女儿皮肉也似这般白净,便如这雪相似;须发也似这般漆黑光鲜,便似这乌木般好!" 一面看那白雪中点点血痕,一面又瞧那乌木窗棂,因叹道:“只望我小女肌肤丰泽,如这雪白,血红,发也似的乌木一般。”
她的小女儿渐渐长大了,小姑娘长得水灵灵的,真是人见人爱,美丽动人。她的皮肤真的就像雪一样的白嫩,又透着血一样的红润,头发像乌木一样的黑亮。所以王后给她取了个名字,叫白雪公主。 其女渐长,乃名曰:“白雪”,其色如雪,真美之极。肤若冰雪,发似乌木,故王后以白雪为号。 光阴似箭,不觉数载,那小女儿渐长成人,生得娉婷娇艳,真个是:肤如凝脂,貌若桃李,发似漆黑,故此王后名曰白雪公主。 那小女儿渐长成,生得十分美貌,真个有倾国之色,娇艳无伦。肌肤如玉,面似桃花,发若漆黑。因此王后便取名唤做"白雪公主"。 那丫头渐长,生得袅娜纤巧,乖觉伶俐,肌肤丰泽,容貌娇美,且是雪肌花颜,唇若施脂,腰如束柳。故此,王后便命名曰:“白雪”。
但白雪公主还没有长大,她的王后妈妈就死去了。不久,国王爸爸又娶了一个妻子。这个王后长得非常漂亮,但她很骄傲自负,嫉妒心极强,只要听说有人比她漂亮,她都不能忍受。 却说白雪公主年方幼小,其母王后乃亡矣。不数日,父王复纳新妇,此妇美而骄妒,闻人言有胜己者,不能容也。 那白雪公主尚幼年,其母王后已亡矣。不多时,国王复纳一妻,此女貌美而骄矜,妒忌之心甚重,闻得人言有胜于己者,即不能容也。 此时白雪公主尚幼小,其母王后便亡故了;不数日间,父王复纳新妇为妻。此女美貌绝伦,性傲气高,妒忌之心甚重,闻有胜己者,便不能容。 且说那白雪公主尚未长成,其母王后已亡故了。不几日,国王复纳一妻,此妃生得甚美,惟性傲慢,妒忌之心颇重,凡见人胜过己者,便不能容。
她有一块魔镜,她经常走到镜子面前自我欣赏,并问道:"告诉我,镜子,告诉我实话!这儿所有的女人谁最漂亮?告诉我她是谁?"镜子回答道:"是你,王后!你就是这儿最漂亮的女人。"听到这样的话,她就会满意地笑起来。 王后乃有魔镜,常自照其面曰:“汝言我,镜中实也!此间诸女何者最美?吾告汝其人。”镜答曰:“汝也,王后也!汝乃此处之绝色。”闻之,遂喜。 她又有个魔镜,常来照见,便问:“镜子呀,你且说个明白!这众女子中那一个最美?快教我认得他哩!”那镜子即答曰:“娘娘乃天下第一美人也。”闻言,她就欢喜而笑。 那娘子有面魔镜,常自照影,便问:"你且说与我,镜中甚人最美貌?是何女子?"镜答曰:"娘子乃此间第一美人也。"听得这话,便欢喜。 她又有一个宝镜,每日临镜自照,或问于镜曰:“我何人哉?”那镜便答道:“你乃天下第一美人儿!”如此一回,她就喜之不尽了。
但白雪公主慢慢地长大,并出落得越来越标致漂亮了。到了七岁时,她长得比明媚的春光还要艳丽夺目,比王后更美丽动人。直到有一天,王后像往常一样地去问那面魔镜时,镜子作出了这样的回答:"王后,你是美丽漂亮的,但是白雪公主要比你更加漂亮!"她听到了这话,心里充满了愤怒和妒忌,脸也变得苍白起来。 然则白雪公主渐渐长成,其美乃胜于昔日,至七岁之时,其容貌又胜王后。一日,王后如常问镜曰:“吾乃绝世之色,今白雪公主乃胜我矣!”闻言大怒,面亦变青。 光阴似箭,不觉又过了七年,白雪公主渐渐长成,却生得如花似玉,比那妩媚之春,胜似娇娘;及至王后来照那面魔镜,只见那镜中答道:“王后啊,你虽美貌,怎比得上白雪公主?”她闻言大怒,顿觉愁容惨淡,颜色憔悴。 且说白雪公主渐渐长成,生得十分美貌,至七岁之时,胜似春光,赛过王后。一日,王后照旧去问那面魔镜,镜中答道:"王后,你虽是极妙绝伦,却怎比得上白雪公主?"听得此言,心中忿怒,面如纸色。 且说白雪公主渐渐长成,生得不俗,至七岁上,便胜似春光,又胜过王后。一日,王后来照魔镜,镜中答道:“王后啊!你虽美貌,岂及白雪公主?”闻此言,心内大怒,容颜亦变。
她叫来了一名仆人对他说:"给我把白雪公主抓到大森林里去,我再也不希望看到她了。"仆人把白雪公主带走了。在森林里他正要动手杀死她时,她哭泣着哀求他不要杀害她。 其女唤一婢曰:“速将白雪公主擒至大林中,吾不复见之。”婢遂引白雪公主而去。行至林内,欲杀之,公主泣告勿杀。 遂唤一婢,教:“快与我拿白雪公主于大林中,再不许见也!”那婢即引白雪公主而去。及至林中,欲杀之,只见她哭告曰:“乞勿伤我性命。” 那娘子唤得一个使女,分付道:"且将白雪公主捉到大林子里去,休教见我。"便将白雪公主掣出林外,欲杀之,哭告勿行。 只见那丫头便唤了一个使女来说道:“你且将白雪公主捉来,我那里还见得?”那使女领命去了,至大林中欲杀之,哭诉不饶。
面对楚楚动人的可怜小公主的哀求,仆人的同情之心油然而生,他说道:"你是一个人见人爱的孩子,我不会杀害你。"这样,他把她单独留在了森林里。 其仆怜楚楚之幼女,曰:“汝乃可爱之人,吾不杀汝。”遂将孤置于林中。 那小公主又哭得凄惨,那仆人心下甚怜,遂言曰:“汝乃好身儿,我岂杀汝?”遂将她独自留在林中。 那可怜的小公主楚楚动人,哭得仆人心软,便道:"汝乃天姿国色,吾岂忍杀?且将汝独自林中寄放。" 那小丫头儿哭得可怜,又见仆人怜惜,便说道:“你是好人儿,我岂肯害你?”遂将她一人留在林中。
当仆人决定不再杀害白雪公主,而把她留在那儿时,尽管他知道在那荒无人际的大森林里,她十有八九会被野兽撕成碎片,但想到他不必亲手杀害她,他就觉得压在心上的一块沉重的大石头落了下来。 其仆见不杀白雪公主,留于彼处,虽知大林之中,必被虎狼食尽,然念吾不用亲刃之,心下遂宽了一块重石。 只见那厮家奴不肯杀白雪公主,却将她留此荒林之中,虽知必遭禽兽之嚼,然不须亲下手也,遂宽心矣。 仆人自思:若要杀白雪公主,便在此处;又恐此间大林子里,被禽兽啖食了,不如且留她在那里,我亦无须亲自下手。遂放了她去。 及至仆人主意已定,不欲加害于白雪公主,遂留之不去,虽知大林深处,必遭禽兽吞噬,然想自己无须亲自动手,便如卸了千钧重担一般。
🔍查看全文 🔍查看全文 🔍查看全文 🔍查看全文

风格化聊天效果

利用StyleLLM模型对ChatGPT等通用大模型的输出进行风格改写,可改变对话风格单一、AI味过重的状况。(详细介绍见 StyleLLM-Chat

"水浒传-鲁智深"对话风格效果:

demo1 demo2

在Colab中快速对话:

打开Colab

使用方法

from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("stylellm/SanGuoYanYi-6b")
model = AutoModelForCausalLM.from_pretrained("stylellm/SanGuoYanYi-6b").eval()

messages = [{"role": "user", "content": "严冬时节,鹅毛一样的大雪片在天空中到处飞舞着,有一个王后坐在王宫里的一扇窗子边,正在为她的女儿做针线活儿,寒风卷着雪片飘进了窗子,乌木窗台上飘落了不少雪花。"}]
input_ids = tokenizer.apply_chat_template(conversation=messages, tokenize=True, add_generation_prompt=True, return_tensors='pt')
output_ids = model.generate(input_ids, do_sample=False, repetition_penalty=1.2)
response = tokenizer.decode(output_ids[0][input_ids.shape[1]:], skip_special_tokens=True)
print("Output:", response)
# Output: 时值隆冬,大雪压境,王后坐于王宫之窗下,正与女作绣,寒风入室,吹落乌木窗台之雪。

致谢

本项目在模型训练中借助了下列开源项目,在此对相关项目人员表示诚挚感谢:

About

StyleLLM文风大模型:基于大语言模型的文本风格迁移项目。Text style transfer base on Large Language Model. #文字修饰 # 润色 #风格模仿

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published