Rivan / app.py
Rivan1220's picture
Upload 2 files
59798be verified
Raw History Blame Contribute Delete
4.54 kB
'''from transformers import GPT2LMHeadModel, GPT2Tokenizer
import gradio as gr
import torch
# Load model and tokenizer
model = GPT2LMHeadModel.from_pretrained("gpt2")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token
# Function to convert or transform input text
def convert_text(input_text, task_type, max_length=80, temperature=0.9, top_p=0.9):
# Craft a prompt based on the selected conversion task
if task_type == "Paraphrase":
prompt = f"Paraphrase this: {input_text}\nRewritten:"
elif task_type == "Explain Simply":
prompt = f"Explain this in simple words: {input_text}\nExplanation:"
elif task_type == "Make it Formal":
prompt = f"Convert to formal tone: {input_text}\nFormal:"
elif task_type == "Make it Creative":
prompt = f"Rewrite this creatively: {input_text}\nCreative version:"
else:
prompt = input_text
# Tokenize and generate
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(
inputs.input_ids,
max_length=max_length,
temperature=temperature,
top_p=top_p,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
return result.replace(prompt, "").strip()
# Gradio interface
with gr.Blocks(title="πŸŒ€ GPT-2 Text Converter") as app:
gr.Markdown("## πŸ” GPT-2 Text Converter\nChoose a task to transform your input text.")
with gr.Row():
input_text = gr.Textbox(label="Input Text", placeholder="Type or paste your sentence...", lines=3)
task_type = gr.Dropdown(
choices=["Paraphrase", "Explain Simply", "Make it Formal", "Make it Creative"],
value="Paraphrase",
label="Conversion Type"
)
with gr.Row():
max_len = gr.Slider(30, 150, value=80, step=10, label="Max Output Length")
temperature = gr.Slider(0.1, 2.0, value=0.9, step=0.1, label="Creativity (Temperature)")
top_p = gr.Slider(0.5, 1.0, value=0.9, step=0.05, label="Top-p Sampling")
output_text = gr.Textbox(label="Converted Output", lines=6)
convert_button = gr.Button("πŸ”„ Convert Text")
convert_button.click(
convert_text,
inputs=[input_text, task_type, max_len, temperature, top_p],
outputs=output_text
)
app.launch()'''
from transformers import MarianMTModel, MarianTokenizer
import gradio as gr
# Language mapping: display name -> model name
lang_to_model = {
"Hindi": "Helsinki-NLP/opus-mt-en-hi",
"Bengali": "Helsinki-NLP/opus-mt-en-bn",
"Tamil": "Helsinki-NLP/opus-mt-en-ta",
"Telugu": "Helsinki-NLP/opus-mt-en-te",
"Gujarati": "Helsinki-NLP/opus-mt-en-gu",
"Marathi": "Helsinki-NLP/opus-mt-en-mr",
"Malayalam": "Helsinki-NLP/opus-mt-en-ml",
"Punjabi": "Helsinki-NLP/opus-mt-en-pa",
"Urdu": "Helsinki-NLP/opus-mt-en-ur"
}
# Default load
default_lang = "Hindi"
model_name = lang_to_model[default_lang]
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
# Translate function
def translate_text(text, target_lang):
global tokenizer, model
# Load model for selected language (if changed)
selected_model = lang_to_model[target_lang]
if tokenizer.name_or_path != selected_model:
tokenizer = MarianTokenizer.from_pretrained(selected_model)
model = MarianMTModel.from_pretrained(selected_model)
# Translate
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
translated = model.generate(**inputs, max_length=256)
return tokenizer.decode(translated[0], skip_special_tokens=True)
# Gradio interface
with gr.Blocks(title="🌐 Indian Language Translator") as app:
gr.Markdown("## 🌐 English to Indian Languages Translator")
gr.Markdown("Type something in English and convert it into your selected Indian language.")
input_text = gr.Textbox(label="Input (English)", lines=3, placeholder="Enter text in English")
target_lang = gr.Dropdown(choices=list(lang_to_model.keys()), value=default_lang, label="Select Language")
output_text = gr.Textbox(label="Translated Output", lines=3)
translate_btn = gr.Button("πŸ”„ Translate")
translate_btn.click(translate_text, inputs=[input_text, target_lang], outputs=output_text)
app.launch()