| | |
| |
|
| | from transformers import pipeline, MBart50Tokenizer, MBartForConditionalGeneration |
| | from langdetect import detect |
| | import gradio as gr |
| |
|
| | |
| | summarizer = pipeline("summarization", model="facebook/bart-large-cnn") |
| |
|
| | |
| | model_name = "facebook/mbart-large-50-many-to-many-mmt" |
| | tokenizer = MBart50Tokenizer.from_pretrained(model_name) |
| | translator = MBartForConditionalGeneration.from_pretrained(model_name) |
| |
|
| | |
| | lang_map = { |
| | "en": "en_XX", |
| | "hi": "hi_IN", |
| | "fr": "fr_XX", |
| | "de": "de_DE", |
| | "es": "es_XX", |
| | "it": "it_IT", |
| | "ta": "ta_IN", |
| | "bn": "bn_IN", |
| | } |
| |
|
| | def translate_text(text, src_lang, tgt_lang): |
| | tokenizer.src_lang = src_lang |
| | encoded = tokenizer(text, return_tensors="pt") |
| | generated_tokens = translator.generate(**encoded, forced_bos_token_id=tokenizer.lang_code_to_id[tgt_lang]) |
| | return tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0] |
| |
|
| | def summarize_multilingual(text): |
| | if not text or len(text.strip()) == 0: |
| | return "⚠️ Please enter some text to summarize." |
| |
|
| | |
| | try: |
| | lang = detect(text) |
| | except: |
| | lang = "en" |
| |
|
| | if lang not in lang_map: |
| | lang = "en" |
| |
|
| | src_lang = lang_map[lang] |
| | tgt_lang = "en_XX" |
| |
|
| | |
| | if src_lang != "en_XX": |
| | text = translate_text(text, src_lang, tgt_lang) |
| |
|
| | |
| | summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text'] |
| |
|
| | |
| | if src_lang != "en_XX": |
| | summary = translate_text(summary, "en_XX", src_lang) |
| |
|
| | return f"🌐 Detected language: {lang}\n\n🧠 Summary:\n{summary}" |
| |
|
| | |
| | demo = gr.Interface( |
| | fn=summarize_multilingual, |
| | inputs=gr.Textbox(lines=12, placeholder="Paste text in English, Hindi, French, etc..."), |
| | outputs=gr.Textbox(label="🌍 Multilingual Summary"), |
| | title="🌍 Multilingual Text Summarizer using Hugging Face 🤗", |
| | description="Supports English, Hindi, French, German, Spanish, Tamil, Bengali, and more.", |
| | examples=[ |
| | ["Artificial Intelligence is transforming industries across the world with automation and intelligent data insights."], |
| | ["कृत्रिम बुद्धिमत्ता स्वचालन और डेटा अंतर्दृष्टि के माध्यम से उद्योगों को बदल रही है।"], |
| | ["L'intelligence artificielle transforme les industries grâce à l'automatisation et à l'analyse des données."] |
| | ] |
| | ) |
| |
|
| | if __name__ == "__main__": |
| | demo.launch() |
| |
|