quote_generator1 / quote_generation.py
Aditya12kumar's picture
Create quote_generation.py
8b8d155 verified
from transformers import pipeline, AutoTokenizer, AutoModelWithLMHead
from transformers.pipelines import TextGenerationPipeline
class QuoteGenerator:
def __init__(self):
self.quote_generator: TextGenerationPipeline
self.tokenizer = AutoTokenizer.from_pretrained("nandinib1999/quote-generator")
self.model = AutoModelWithLMHead.from_pretrained("nandinib1999/quote-generator")
self.default_prompts = ['life is not fair', 'she is a warrior', 'friendship is like', 'you cannot find light']
def load_generator(self) -> None:
self.quote_generator = pipeline('text-generation', model = self.model, tokenizer = self.tokenizer)
def clean_text(self, quote):
quote = quote.strip()
# Remove any special characters
quote = re.sub('[~`^*&%$@#|]', ' ', quote)
# Remove extra spaces
quote = re.sub("\s\s+", " ", quote)
# Remove space before punctuation
quote = re.sub('\s[.,;!?]', '\1', quote)
# Sentence case
quote = quote.capitalize()
return quote
def generate_quote(self, prompt_start: str, min_length=3, max_length=30, top_p=0.9):
if len(prompt_start.strip()) == 0:
rand_index = random.randint(0, len(self.default_prompts)-1)
prompt_start = self.default_prompts[rand_index]
quote_gen = self.quote_generator(prompt_start.strip(), min_length = min_length, max_length = max_length, temperature = 1.0, top_k = 5, top_p = top_p)
quote = quote_gen[0]['generated_text']
quote_clean = self.clean_text(quote)
return quote_clean