File size: 2,876 Bytes
c56563a
 
 
 
3b911b9
c56563a
 
 
3b911b9
c56563a
 
3b911b9
67d6766
3b911b9
67d6766
3b911b9
 
c56563a
3b911b9
 
 
 
 
 
 
 
 
 
 
 
c56563a
3b911b9
c56563a
3b911b9
 
67d6766
 
3b911b9
 
 
 
 
 
 
 
c56563a
3b911b9
c56563a
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
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()