File size: 4,625 Bytes
13577bb e304530 ebe552f 13577bb ebe552f e304530 ebe552f e304530 ebe552f e304530 ebe552f e304530 ebe552f e304530 7ceca8f e304530 13577bb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# from transformers import pipeline
# import gradio as gr
# # Input language translators (to English)
# input_translators = {
# "Hindi": pipeline("translation_hi_to_en", model="Helsinki-NLP/opus-mt-hi-en"),
# "French": pipeline("translation_fr_to_en", model="Helsinki-NLP/opus-mt-fr-en"),
# "German": pipeline("translation_de_to_en", model="Helsinki-NLP/opus-mt-de-en"),
# "English": None # No translation needed
# }
# # Summarization model
# summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
# # Output translators (English → target)
# output_translators = {
# "None": None,
# "Hindi": pipeline("translation_en_to_hi", model="Helsinki-NLP/opus-mt-en-hi"),
# "French": pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr"),
# "German": pipeline("translation_en_to_de", model="Helsinki-NLP/opus-mt-en-de"),
# }
# def summarize_multilang(text, input_lang, output_lang):
# # Step 1: Translate to English (if needed)
# if input_lang != "English":
# translator = input_translators[input_lang]
# text = translator(text)[0]['translation_text']
# # Step 2: Summarize
# summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text']
# # Step 3: Translate summary (if needed)
# if output_lang != "None":
# summary = output_translators[output_lang](summary)[0]['translation_text']
# return summary
# # Gradio interface
# gr.Interface(
# fn=summarize_multilang,
# inputs=[
# gr.Textbox(lines=10, label="Input Text"),
# gr.Dropdown(choices=["English", "Hindi", "French", "German"], label="Input Language"),
# gr.Dropdown(choices=["None", "Hindi", "French", "German"], label="Translate Summary To")
# ],
# outputs=gr.Textbox(label="Final Summary"),
# title="SummarAI",
# description="Supports input in Hindi, French, German, or English. Summarizes and optionally translates the summary."
# ).launch()
from transformers import pipeline
import gradio as gr
# Input language translators (to English)
input_translators = {
"Hindi": pipeline("translation_hi_to_en", model="Helsinki-NLP/opus-mt-hi-en"),
"French": pipeline("translation_fr_to_en", model="Helsinki-NLP/opus-mt-fr-en"),
"German": pipeline("translation_de_to_en", model="Helsinki-NLP/opus-mt-de-en"),
"English": None
}
# Summarization model
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
# Output translators (English → target)
output_translators = {
"Hindi": pipeline("translation_en_to_hi", model="Helsinki-NLP/opus-mt-en-hi"),
"French": pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr"),
"German": pipeline("translation_en_to_de", model="Helsinki-NLP/opus-mt-en-de"),
}
def summarize_multilang(text, input_lang, toggle_translation, output_lang):
# Step 1: Translate input to English (if needed)
if input_lang != "English":
translator = input_translators[input_lang]
text = translator(text)[0]['translation_text']
# Step 2: Summarize in English
summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text']
# Step 3: Optionally translate the summary
if toggle_translation and output_lang in output_translators:
summary = output_translators[output_lang](summary)[0]['translation_text']
return summary
# Gradio Interface with Toggle
with gr.Blocks() as demo:
gr.Markdown("# SummarAI ")
gr.Markdown("Summarize your content in multiple languages. Optionally translate the summary!")
with gr.Row():
input_text = gr.Textbox(lines=10, label="Input Text", placeholder="Paste or type your content here...")
with gr.Row():
input_lang = gr.Dropdown(choices=["English", "Hindi", "French", "German"], label="Input Language", value="English")
toggle_translation = gr.Checkbox(label="Translate Summary?", value=False)
output_lang = gr.Dropdown(choices=["Hindi", "French", "German"], label="Translate Summary To", visible=False)
output_summary = gr.Textbox(label="Final Summary")
# Toggle visibility logic
def update_output_lang_visibility(toggle):
return gr.update(visible=toggle)
toggle_translation.change(update_output_lang_visibility, inputs=toggle_translation, outputs=output_lang)
submit_btn = gr.Button("Summarize")
submit_btn.click(
fn=summarize_multilang,
inputs=[input_text, input_lang, toggle_translation, output_lang],
outputs=output_summary
)
demo.launch()
|