Spaces:
Running
Running
| import gradio as gr | |
| from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
| import torch | |
| import random | |
| import re | |
| # Set manual seed for reproducibility | |
| torch.manual_seed(42) | |
| # Check for GPU availability | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| # Load the model and tokenizer | |
| tokenizer = AutoTokenizer.from_pretrained("humarin/chatgpt_paraphraser_on_T5_base") | |
| model = AutoModelForSeq2SeqLM.from_pretrained( | |
| "humarin/chatgpt_paraphraser_on_T5_base" | |
| ).to(device) | |
| # Function to paraphrase text | |
| def humanize_text(text, temperature=0.7, max_length=512): | |
| input_ids = tokenizer( | |
| f"paraphrase: {text}", | |
| return_tensors="pt", | |
| padding=True, | |
| max_length=max_length, | |
| truncation=True, | |
| ).input_ids.to(device) | |
| # outputs = model.generate( | |
| # input_ids, | |
| # max_length=max_length, | |
| # temperature=temperature, | |
| # num_beams=1, | |
| # num_beam_groups=1, | |
| # num_return_sequences=1, | |
| # repetition_penalty=2.0, | |
| # diversity_penalty=0.5, | |
| # no_repeat_ngram_size=2, | |
| # ) | |
| outputs = model.generate( | |
| input_ids, | |
| max_length=max_length, | |
| do_sample=False, | |
| repetition_penalty=2.0, | |
| no_repeat_ngram_size=2, | |
| ) | |
| paraphrased_texts = tokenizer.batch_decode(outputs, skip_special_tokens=True) | |
| return random.choice(paraphrased_texts) | |
| # Function to split input into sentences | |
| def split_into_sentences(text): | |
| return re.split(r"(?<=[.!?])\s+", text) | |
| # Function to process multi-line text | |
| def process_text(input_text): | |
| lines = input_text.split("\n") | |
| processed_lines = [] | |
| for line in lines: | |
| if len(line) < 1: | |
| processed_lines.append(line) | |
| else: | |
| sentences = split_into_sentences(line) | |
| processed_sentences = [ | |
| humanize_text(sentence, max_length=len(sentence)) | |
| for sentence in sentences | |
| ] | |
| processed_lines.append(" ".join(processed_sentences)) | |
| return "\n".join(processed_lines) | |
| # Gradio Interface | |
| iface = gr.Interface( | |
| fn=process_text, | |
| inputs=gr.Textbox(lines=5, placeholder="Enter text to humanize...", max_length=2000), | |
| outputs="text", | |
| title="AI Text Humanizer", | |
| description="Enter text, and the AI will rewrite it in a more human-like way.", | |
| ) | |
| # Launch the Gradio app | |
| if __name__ == "__main__": | |
| iface.launch() | |