Styleformer
A Neural Language Style Transfer framework to transfer natural language text smoothly between fine-grained language styles like formal/casual, active/passive, and many more. Created by Prithiviraj Damodaran. Open to pull requests and other forms of collaboration.
Install / Use
/learn @PrithivirajDamodaran/StyleformerREADME
Styleformer
A Neural Language Style Transfer framework to transfer natural language text smoothly between fine-grained language styles like formal/casual, active/passive, and many more.For instance, understand What makes text formal or casual/informal.
Table of contents
- Usecases for Styleformer
- Installation
- Quick Start
- Knobs
- Models
- Dataset
- Benchmark
- Streamlit Demo
- References
- Citation
Usecases for Styleformer
Area 1: Data Augmentation
- Augment training datasets with various fine-grained language styles.
Area 2: Post-processing
- Apply style transfers to machine generated text.
- e.g.
- Refine a Summarised text to active voice + formal tone.
- Refine a Translated text to more casual tone to reach younger audience.
Area 3: Controlled paraphrasing
- Formal <=> Casual and Active <=> style transfers adds a notion of control over how we paraphrase when compared to free-form paraphrase where there is control or guarantee over the paraphrases.
Area 4: Assisted writing
- Integrate this to any human writing interfaces like email clients, messaging tools or social media post authoring tools. Your creativity is your limit to te uses.
- e.g.
- Polish an email with business tone for professional uses.
Installation
pip install git+https://github.com/PrithivirajDamodaran/Styleformer.git
Quick Start
~~python [IMPORTANT] If you are using in notebook, use the below line to login: from huggingface_hub import notebook_login notebook_login() else use: huggingface-cli login~~
Casual to Formal (Available now !)
from styleformer import Styleformer
import torch
import warnings
warnings.filterwarnings("ignore")
'''
#uncomment for re-producability
def set_seed(seed):
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(seed)
set_seed(1234)
'''
# style = [0=Casual to Formal, 1=Formal to Casual, 2=Active to Passive, 3=Passive to Active etc..]
sf = Styleformer(style = 0)
source_sentences = [
"I am quitting my job",
"Jimmy is on crack and can't trust him",
"What do guys do to show that they like a gal?",
"i loooooooooooooooooooooooove going to the movies.",
"That movie was fucking awesome",
"My mom is doing fine",
"That was funny LOL" ,
"It's piece of cake, we can do it",
"btw - ur avatar looks familiar",
"who gives a crap?",
"Howdy Lucy! been ages since we last met.",
"Dude, this car's dope!",
"She's my bestie from college",
"I kinda have a feeling that he has a crush on you.",
"OMG! It's finger-lickin' good.",
]
for source_sentence in source_sentences:
target_sentence = sf.transfer(source_sentence)
print("-" *100)
print("[Casual] ", source_sentence)
print("-" *100)
if target_sentence is not None:
print("[Formal] ",target_sentence)
print()
else:
print("No good quality transfers available !")
[Casual] I am quitting my job
[Formal] I will be stepping down from my job.
----------------------------------------------------------------------------------------------------
[Casual] Jimmy is on crack and can't trust him
[Formal] Jimmy is a crack addict I cannot trust him
----------------------------------------------------------------------------------------------------
[Casual] What do guys do to show that they like a gal?
[Formal] What do guys do to demonstrate their affinity for women?
----------------------------------------------------------------------------------------------------
[Casual] i loooooooooooooooooooooooove going to the movies.
[Formal] I really like to go to the movies.
----------------------------------------------------------------------------------------------------
[Casual] That movie was fucking awesome
[Formal] That movie was wonderful.
----------------------------------------------------------------------------------------------------
[Casual] My mom is doing fine
[Formal] My mother is doing well.
----------------------------------------------------------------------------------------------------
[Casual] That was funny LOL
[Formal] That was hilarious
----------------------------------------------------------------------------------------------------
[Casual] It's piece of cake, we can do it
[Formal] The whole process is simple and is possible.
----------------------------------------------------------------------------------------------------
[Casual] btw - ur avatar looks familiar
[Formal] Also, your avatar looks familiar.
----------------------------------------------------------------------------------------------------
[Casual] who gives a crap?
[Formal] Who cares?
----------------------------------------------------------------------------------------------------
[Casual] Howdy Lucy! been ages since we last met.
[Formal] Hello, Lucy It has been a long time since we last met.
----------------------------------------------------------------------------------------------------
[Casual] Dude, this car's dope!
[Formal] I find this car very appealing.
----------------------------------------------------------------------------------------------------
[Casual] She's my bestie from college
[Formal] She is my best friend from college.
----------------------------------------------------------------------------------------------------
[Casual] I kinda have a feeling that he has a crush on you.
[Formal] I have a feeling that he is attracted to you.
----------------------------------------------------------------------------------------------------
[Casual] OMG! It's finger-lickin' good.
[Formal] It is so good, it is delicious.
----------------------------------------------------------------------------------------------------
Formal to Casual (Available now !)
from styleformer import Styleformer
import warnings
warnings.filterwarnings("ignore")
# style = [0=Casual to Formal, 1=Formal to Casual, 2=Active to Passive, 3=Passive to Active etc..]
sf = Styleformer(style = 1)
import torch
def set_seed(seed):
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(seed)
set_seed(1212)
source_sentences = [
"I would love to meet attractive men in town",
"Please leave the room now",
"It is a delicious icecream",
"I am not paying this kind of money for that nonsense",
"He is on cocaine and he cannot be trusted with this",
"He is a very nice man and has a charming personality",
"Let us go out for dinner",
"We went to Barcelona for the weekend. We have a lot of things to tell you.",
]
for source_sentence in source_sentences:
# inference_on = [-1=Regular model On CPU, 0-998= Regular model On GPU, 999=Quantized model On CPU]
target_sentence = sf.transfer(source_sentence, inference_on=-1, quality_filter=0.95, max_candidates=5)
print("[Formal] ", source_sentence)
if target_sentence is not None:
print("[Casual] ",target_sentence)
else:
print("No good quality transfers available !")
print("-" *100)
[Formal] I would love to meet attractive men in town
[Casual] i want to meet hot guys in town
----------------------------------------------------------------------------------------------------
[Formal] Please leave the room now
[Casual] leave the room now.
----------------------------------------------------------------------------------------------------
[Formal] It is a delicious icecream
[Casual] It is a yummy icecream
----------------------------------------------------------------------------------------------------
[Formal] I am not paying this kind of money for that nonsense
[Casual] But I'm not paying this kind of money for that crap
----------------------------------------------------------------------------------------------------
[Formal] He is on cocaine and he cannot be trusted with this
[Casual] he is on coke and he can't be trusted with this
----------------------------------------------------------------------------------------------------
[Formal] He is a very nice man and has a charming personality
[Casual] he is a really nice guy with a cute personality.
----------------------------------------------------------------------------------------------------
[Formal] Let us go out for dinner
[Casual] let's hang out for dinner.
----------------------------------------------------------------------------------------------------
[Formal] We went to Barcelona for the weekend. We have a lot of things to tell you.
[Casual] hehe..we went to barcelona for the weekend..we got a lot of things to tell ya..
----------------------------------------------------------------------------------------------------
Active to Passive (Available now !)
# style = [0=Casual to Formal, 1=Formal to Casual, 2=Active to Passive, 3=Passive to Active etc..]
sf = Styleformer(style = 2)
Passive to Active (Available now !)
# style = [0=Casual to Formal, 1=Formal to Casual, 2=Active to Passive, 3=Passive to Active etc..]
sf = Styleformer(style = 3)
Knobs
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
