Spaces:
Sleeping
Sleeping
import torch | |
from transformers import (PegasusForConditionalGeneration, PegasusTokenizer, pipeline) | |
import gradio as gr | |
# Memuat model dan tokenizer untuk PEGASUS dari Hugging Face Model Hub | |
model = PegasusForConditionalGeneration.from_pretrained("fatihfauzan26/PEGASUS_liputan6") | |
tokenizer = PegasusTokenizer.from_pretrained("google/pegasus-cnn_dailymail") | |
# Inisialisasi pipeline untuk tugas ringkasan menggunakan model dan tokenizer yang dimuat | |
summarizer = pipeline("summarization", model=model, tokenizer=tokenizer) | |
# Fungsi untuk meringkas artikel | |
def summarize_article(article): | |
# Mengubah artikel menjadi token yang bisa diproses oleh model (konversi teks ke representasi numerik) | |
input_ids = tokenizer.encode(article, return_tensors='pt') | |
# Menghasilkan ringkasan dari artikel dengan berbagai pengaturan model untuk kualitas output | |
summary_ids = model.generate(input_ids, | |
min_length=30, # Panjang minimal ringkasan | |
max_length=128, # Panjang maksimal ringkasan | |
num_beams=8, # Beam search untuk meningkatkan hasil ringkasan | |
repetition_penalty=2.0, # Penalti untuk pengulangan kata | |
length_penalty=0.8, # Penalti terkait panjang hasil | |
early_stopping=True, # Menghentikan proses jika hasil cukup bagus | |
no_repeat_ngram_size=2, # Menghindari pengulangan frasa yang sama | |
use_cache=True, # Menggunakan cache untuk efisiensi | |
do_sample=True, # Mengambil sampel untuk variasi | |
temperature=1.2, # Mengontrol randomness dari hasil | |
top_k=50, # Mempertimbangkan 50 kemungkinan token teratas | |
top_p=0.95) # Mengambil token yang memiliki probabilitas kumulatif 95% | |
# Mengubah token output menjadi teks ringkasan (decode dari token ke teks) | |
summary_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True) | |
# Mengembalikan teks ringkasan | |
return summary_text | |
# Membuat antarmuka Gradio | |
iface = gr.Interface( | |
fn=summarize_article, # Fungsi yang dijalankan saat pengguna memberikan input | |
inputs=gr.Textbox(lines=10, label="Enter the article you want to summarize"), # Input berupa kotak teks | |
outputs=gr.Textbox(label="Summary"), # Output berupa kotak teks untuk menampilkan ringkasan | |
title="Summarization App using PEGASUS", # Judul aplikasi | |
description="Paste an article and click 'Submit' to get a summarized version using PEGASUS model." # Deskripsi aplikasi | |
) | |
# Meluncurkan aplikasi Gradio sehingga bisa diakses di browser | |
iface.launch() | |