Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline # Hanya perlu pipeline untuk model IndoBART | |
| import torch | |
| # ---------- LOAD MODEL ---------- | |
| # Menggunakan pipeline untuk model IndoBART v2 | |
| try: | |
| # Memuat model IndoBART v2 | |
| summarizer_pipeline = pipeline("summarization", model="gaduhhartawan/indobart-base-v2") | |
| print("Model IndoBART v2 (gaduhhartawan/indobart-base-v2) berhasil dimuat.") | |
| except Exception as e: | |
| summarizer_pipeline = None | |
| print(f"Error saat memuat model IndoBART v2: {str(e)}") # Cetak error ke konsol jika gagal dimuat | |
| # ---------- SUMMARIZATION FUNCTION ---------- | |
| def summarize_text_simple(text_input, min_length_val=30, max_length_val=150): | |
| # Cek apakah model berhasil dimuat | |
| if summarizer_pipeline is None: | |
| return "❌ Error: Model ringkasan gagal dimuat. Coba lagi nanti." | |
| if not text_input.strip(): | |
| return "⚠️ Mohon masukkan teks yang ingin diringkas!" | |
| # Pastikan panjang minimum dan maksimum masuk akal | |
| if min_length_val >= max_length_val: | |
| return "⚠️ Panjang minimum harus lebih kecil dari panjang maksimum!" | |
| if min_length_val <= 0 or max_length_val <= 0: | |
| return "⚠️ Panjang tidak boleh nol atau negatif!" | |
| try: | |
| # Lakukan ringkasan menggunakan pipeline IndoBART | |
| summary = summarizer_pipeline( | |
| text_input, | |
| min_length=int(min_length_val), | |
| max_length=int(max_length_val), | |
| truncation=True # Penting: Potong input jika terlalu panjang untuk model | |
| # IndoBART biasanya tidak memerlukan 'num_beams' atau 'early_stopping' eksplisit di pipeline | |
| # karena pipeline sudah mengelola pengaturan default yang baik. | |
| ) | |
| # Hasil ringkasan ada di 'summary_text' | |
| summarized_text = summary[0]['summary_text'] | |
| result_message = f""" | |
| <h3>Teks Ringkasan Anda:</h3> | |
| <p>{summarized_text}</p> | |
| """ | |
| return result_message | |
| except Exception as e: | |
| return f"❌ Terjadi kesalahan saat meringkas: {str(e)}" | |
| # ---------- GRADIO INTERFACE ---------- | |
| with gr.Blocks(title="Aplikasi Ringkasan Teks IndoBART") as demo: | |
| gr.Markdown("# 📝 Aplikasi Ringkasan Teks (IndoBART)") | |
| gr.Markdown("Masukkan teks panjang berbahasa Indonesia di bawah ini untuk mendapatkan versi ringkasnya menggunakan model IndoBART v2.") | |
| with gr.Row(): | |
| text_input = gr.Textbox( | |
| label="Teks Asli (Bahasa Indonesia)", | |
| placeholder="Masukkan teks panjang berbahasa Indonesia yang ingin Anda ringkas di sini...", | |
| lines=10 | |
| ) | |
| with gr.Row(): | |
| min_length_slider = gr.Slider( | |
| minimum=10, | |
| maximum=100, | |
| value=30, | |
| step=1, | |
| label="Panjang Ringkasan Minimum" | |
| ) | |
| max_length_slider = gr.Slider( | |
| minimum=50, | |
| maximum=200, # Batasi maksimum yang lebih masuk akal untuk ringkasan | |
| value=80, | |
| step=1, | |
| label="Panjang Ringkasan Maksimum" | |
| ) | |
| summarize_btn = gr.Button("✨ Ringkas Sekarang") | |
| summary_output = gr.HTML(label="Hasil Ringkasan") | |
| # Menghubungkan tombol ke fungsi ringkasan | |
| summarize_btn.click( | |
| fn=summarize_text_simple, | |
| inputs=[text_input, min_length_slider, max_length_slider], | |
| outputs=summary_output | |
| ) | |
| gr.Markdown(""" | |
| --- | |
| <div style='text-align: center; margin-top: 20px;'> | |
| <p>Didukung oleh Hugging Face Transformers (Model: gaduhhartawan/indobart-base-v2) dan Gradio.</p> | |
| </div> | |
| """) | |
| # Jalankan antarmuka | |
| if __name__ == "__main__": | |
| demo.launch() |