import gradio as gr import os import warnings import random import torch import gradio as gr # Import Gradio for the UI from parrot import Parrot # Suppress warnings warnings.filterwarnings("ignore") os.environ['TRANSFORMERS_NO_ADVISORY_WARNINGS'] = '1' # Suppress warnings from Transformers # Set random state for reproducibility def random_state(seed): torch.manual_seed(seed) if torch.cuda.is_available(): torch.cuda.manual_seed_all(seed) random_state(1234) # Initialize Parrot model parrot = Parrot(model_tag="prithivida/parrot_paraphraser_on_T5") # Function to paraphrase a single sentence def paraphrase_sentence(sentence): paraphrases = parrot.augment(input_phrase=sentence, max_return_phrases=10, max_length=100, adequacy_threshold=0.75, fluency_threshold=0.75) if paraphrases: # Randomly select one paraphrase from the generated ones return random.choice(paraphrases)[0] # Select a random paraphrase return sentence # Return the original sentence if no paraphrase is available # Function to split text by periods (full stops) def split_text_by_fullstop(text): sentences = [sentence.strip() for sentence in text.split('.') if sentence] # Split and remove empty strings return sentences # Main function to process and paraphrase text by splitting at periods def process_text_by_fullstop(text): sentences = split_text_by_fullstop(text) # Split text into sentences by full stops paraphrased_sentences = [paraphrase_sentence(sentence + '.') for sentence in sentences] # Paraphrase each sentence return ' '.join(paraphrased_sentences) # Join paraphrased sentences back into a single text # Gradio interface function def generate_content(input_text): paraphrased_text = process_text_by_fullstop(input_text) return paraphrased_text css = """ body { font-family: 'Roboto', sans-serif; background-color: #ffffff; color: #000000; } .container { max-width: 800px; margin: 0 auto; display: flex; justify-content: space-between; align-items: flex-start; } .title-container { display: flex; align-items: center; justify-content: center; margin-bottom: 30px; padding: 20px; } .title-text { font-size: 48px; font-weight: 700; background: linear-gradient(45deg, #FFD700, #FF4500); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); text-align: center; } /* .gradio-container label { margin-left: -10px; }*/ input[type="text"] { background-color: #f0f0f0; border: 1px solid #cccccc; color: #000000; min-width: 100%; border-radius: 5px; padding: 10px; font-size: 16px; width: 100%; text-align: left; } button { width: 100%; background-color: #1f2937; color: #ffffff; border: none; padding: 10px; font-size: 16px; border-radius: 5px; cursor: pointer; transition: background-color 0.3s; } button:hover { background-color: #161921; } .output-container { display: flex; align-items: center; justify-content: flex-end; } .copy-button { margin-left: 10px; background-color: #4CAF50; /* Green button for copy */ } .output-textbox { text-align: left; min-height: 150px; width=100%; background-color: #d0d0d0; /* Slightly Darker Gray for Bot Messages */ padding: 10px; border-radius: 10px; color: #000; } """ # JavaScript to copy output to clipboard copy_script = """ """ # Gradio Interface with gr.Blocks(css=css) as demo: # Title container with logo gr.HTML("""

Konect U

""") with gr.Row(elem_id="container"): # Left side (Input) with gr.Column(scale=1): input_text = gr.Textbox(placeholder="Enter your text here...", label="", lines=5, elem_id="input_text") submit_button = gr.Button("Generate") # Right side (Output) with gr.Column(scale=1): output_text = gr.HTML(f'
Generated content will appear here...
') copy_button = gr.HTML(f'{copy_script}') # Connecting input to output submit_button.click(generate_content, inputs=input_text, outputs=output_text) # Launch the app demo.launch()