Spaces:
Sleeping
Sleeping
import os | |
import warnings | |
import random | |
import torch | |
import gradio as gr | |
from parrot import Parrot | |
from concurrent.futures import ThreadPoolExecutor, as_completed | |
warnings.filterwarnings("ignore") | |
os.environ['TRANSFORMERS_NO_ADVISORY_WARNINGS'] = '1' | |
def random_state(seed): | |
torch.manual_seed(seed) | |
if torch.cuda.is_available(): | |
torch.cuda.manual_seed_all(seed) | |
random_state(1234) | |
parrot = Parrot(model_tag="prithivida/parrot_paraphraser_on_T5") | |
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) | |
return random.choice(paraphrases)[0] if paraphrases else sentence | |
def split_text_by_fullstop(text): | |
return [sentence.strip() for sentence in text.split('.') if sentence] | |
def process_text_by_fullstop(text): | |
sentences = split_text_by_fullstop(text) | |
with ThreadPoolExecutor() as executor: | |
future_to_sentence = {executor.submit(paraphrase_sentence, sentence + '.'): sentence for sentence in sentences} | |
paraphrased_sentences = [] | |
for future in as_completed(future_to_sentence): | |
paraphrased_sentences.append(future.result()) | |
return ' '.join(paraphrased_sentences) | |
def gradio_interface(input_text): | |
paraphrased_text = process_text_by_fullstop(input_text) | |
return paraphrased_text | |
interface = gr.Interface(fn=gradio_interface, | |
inputs="text", | |
outputs="text", | |
title="Text Paraphraser", | |
description="Enter text to get paraphrased output.") | |
interface.launch() | |
'''import warnings | |
import random | |
import torch | |
import os | |
import gradio as gr | |
from parrot import Parrot | |
# Suppress warnings | |
warnings.filterwarnings("ignore") | |
os.environ['TRANSFORMERS_NO_ADVISORY_WARNINGS'] = '1' | |
# Set random state for reproducibility | |
def random_state(seed): | |
torch.manual_seed(seed) | |
if torch.cuda.is_available(): | |
torch.cuda.manual_seed_all(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: | |
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 | |
# Function to copy output text to the clipboard | |
def copy_to_clipboard(output_text): | |
# JavaScript code to copy the output text to the clipboard | |
return f""" | |
<script> | |
var text = `{output_text}`; | |
navigator.clipboard.writeText(text).then(function() {{ | |
alert('Copied to clipboard!'); | |
}}, function(err) {{ | |
alert('Failed to copy text'); | |
}}); | |
</script> | |
""" | |
# Gradio interface function | |
def generate_content(input_text): | |
paraphrased_text = process_text_by_fullstop(input_text) | |
return paraphrased_text | |
# Gradio Interface with new layout | |
with gr.Blocks() as demo: | |
# Adding a logo and title | |
gr.HTML(""" | |
<div style="display: flex; align-items: center; justify-content: center; margin-bottom: 30px;"> | |
<img src="https://raw.githubusercontent.com/juicjaane/blueai/main/logo_2.jpg" style="width: 80px;margin: 0 auto;"> | |
</div> | |
""") | |
with gr.Row(): | |
# Input column with Submit and Clear buttons below the text area | |
with gr.Column(): | |
input_text = gr.Textbox(placeholder="Enter sop to get paraphrased output...", label="User", lines=5) | |
with gr.Row(): | |
submit_button = gr.Button("Submit") | |
clear_button = gr.Button("Clear") | |
# Output column with Copy button below the output text area | |
with gr.Column(): | |
output_text = gr.Textbox(label="output", lines=5) | |
copy_button = gr.Button("Copy") | |
# Define button actions | |
submit_button.click(generate_content, inputs=input_text, outputs=output_text) | |
clear_button.click(lambda: "", None, input_text) # Clear input | |
clear_button.click(lambda: "", None, output_text) # Clear output | |
copy_button.click(copy_to_clipboard, inputs=output_text, outputs=None) # Copy the output to clipboard | |
# Launch the app | |
demo.launch()''' | |