Text Summarization Otomatis menggunakan Library Transformers Hugging Face
Text summarization adalah teknik dalam Natural Language Processing yang bertujuan menghasilkan versi pendek dari sebuah dokumen tanpa kehilangan informasi penting. Library Transformers dari Hugging Face menyediakan berbagai model pre-trained yang dapat kita gunakan untuk melakukan summarization dengan mudah.
Memahami Text Summarization dan Transformers
Text summarization terbagi menjadi dua pendekatan utama: extractive dan abstractive. Metode extractive memilih kalimat-kalimat penting secara langsung dari teks asli, sedangkan abstractive menghasilkan kalimat baru yang merepresentasikan inti dari dokumen. Pendekatan abstractive lebih fleksibel namun juga lebih kompleks dalam implementasinya.
Arsitektur Transformers telah revolutionized NLP sejak diperkenalkan pada tahun 2017. Dengan mekanisme self-attention, Transformers dapat memahami konteks global dari sebuah teks sehingga sangat efektif untuk tugas summarization. Model seperti BART, T5, dan Pegasus telah dilatih khusus untuk memahami hubungan antar kata dan kalimat dalam dokumen panjang.
Berbeda dengan model tradisional yang memproses teks secara sekuensial, Transformers memproses seluruh dokumen secara paralel. Hal ini memungkinkan model untuk menangkap dependensi jarak jauh antara kata-kata dengan lebih efisien. Dalam konteks summarization, kemampuan ini kritis karena informasi penting bisa tersebar di berbagai bagian dokumen.

Gambar: Ilustrasi arsitektur neural network untuk text processing dengan attention mechanism — Sumber: [Unsplash](https://unsplash.com/photos/ai-text-editing-interface-with-cursor-and-search-bar-kyzhkZW6UDo)
Instalasi dan Setup Environment Transformers
Sebelum memulai, kita perlu menyiapkan environment Python dengan library yang diperlukan. Library utama yang dibutuhkan adalah transformers, torch, dan accelerate untuk akselerasi inference.
!pip install transformers torch accelerateVerifikasi instalasi dengan mengimpor library:
import transformers
import torch
print(f"Transformers version: {transformers.__version__}")
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")Output:
Transformers version: 5.8.0
PyTorch version: 2.11.0
CUDA available: FalseHardware considerations penting untuk diperhatikan. GPU sangat disarankan untuk inference yang cepat, namun CPU juga dapat digunakan untuk development dan testing. Model summarization seperti BART-large atau T5-large memerlukan memori yang cukup besar, sehingga GPU dengan minimal 6GB VRAM direkomendasikan untuk penggunaan production.
Jika tidak memiliki GPU, kita dapat menggunakan model yang lebih kecil seperti t5-small atau facebook/bart-large-cnn yang tetap memberikan hasil berkualitas baik dengan resource yang lebih rendah.
Menggunakan Pipeline API untuk Summarization
Hugging Face menyediakan pipeline() API yang menyederhanakan proses summarization secara signifikan. Pipeline menangani tokenisasi, inference, dan decoding secara otomatis sehingga kita dapat fokus pada logika aplikasi.
Langkah pertama adalah memuat pre-trained model yang sudah dilatih khusus untuk summarization. Model yang populer dan terbukti efektif adalah facebook/bart-large-cnn, google/pegasus-xsum, dan t5-small untuk penggunaan dengan resource terbatas.
!pip install transformers torch
from transformers import pipeline
# Memuat model summarization
summarizer = pipeline(
"summarization",
model="facebook/bart-large-cnn",
tokenizer="facebook/bart-large-cnn"
)
# Teks artikel panjang untuk di-summarize
article = """
Indonesia has made significant progress in digital transformation over the past decade.
The government's initiatives to develop digital infrastructure have reached remote areas,
providing internet access to millions of citizens. E-government services have streamlined
bureaucratic processes, reducing the time needed for various administrative tasks from
days to mere hours. The digital economy has grown substantially, with e-commerce platforms
recording triple-digit growth annually. However, challenges remain in bridging the digital
divide between urban and rural areas, ensuring cybersecurity, and developing a workforce
skilled in digital technologies. Education systems are being modernized to incorporate
digital literacy from an early age, and various programs are underway to train teachers
and students in computational thinking and programming.
"""
# Melakukan summarization
summary = summarizer(
article,
max_length=130,
min_length=30,
do_sample=False
)
print("Original text length:", len(article.split()))
print("Summary:", summary[0]['summary_text'])Output:
Original text length: 103
Summary: the government initiatives to develop digital infrastructure have reached remote areas. the government has made significant progress in digital transformation. the government has streamlined bureaucratic processes.Parameter max_length dan min_length mengontrol panjang output. Parameter do_sample=False menggunakan strategi greedy decoding yang deterministic dan biasanya menghasilkan hasil yang lebih konsisten untuk tugas summarization.
Pipeline secara otomatis menangani preprocessing teks termasuk tokenisasi dan penambahan special tokens. Kita juga dapat menyesuaikan parameter seperti truncation=True untuk menangani teks yang melebihi panjang maksimum model.
Memahami Output dan Parameter Kunci
Output dari pipeline summarization berupa list yang berisi dictionary dengan kunci summary_text dan score. Score merepresentasikan confidence model terhadap hasil summarization, meskipun tidak selalu akurat sebagai indikator kualitas.
Strategi decoding mempengaruhi hasil secara signifikan. Greedy search memilih token dengan probability tertinggi pada setiap langkah. Beam search mempertahankan beberapa hipotesis dan memilih yang memiliki probability tertinggi secara keseluruhan. Sampling menambahkan randomisasi yang dapat menghasilkan variasi masing-masing berbeda.
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_name = "facebook/bart-large-cnn"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
# Contoh teks panjang
text = """
The field of machine learning has evolved rapidly over the past decade, with deep learning
leading to breakthroughs in computer vision, natural language processing, and reinforcement
learning. Neural networks with millions of parameters can now be trained on large datasets
to achieve superhuman performance on specific tasks. However, this progress comes with
challenges. The computational resources required for training large models have grown
exponentially, raising concerns about environmental impact. Additionally, the lack of
interpretability of deep learning models makes it difficult to understand their decision-
making processes. Research into efficient architectures, transfer learning, and model
compression aims to address these issues while maintaining performance.
"""
# Tokenisasi input
inputs = tokenizer(text, return_tensors="pt", max_length=1024, truncation=True)
# Greedy decoding
outputs_greedy = model.generate(
inputs["input_ids"],
max_length=150,
min_length=40,
num_beams=1,
do_sample=False
)
print("Greedy:", tokenizer.decode(outputs_greedy[0], skip_special_tokens=True))
# Beam search decoding
outputs_beam = model.generate(
inputs["input_ids"],
max_length=150,
min_length=40,
num_beams=4,
early_stopping=True
)
print("Beam Search:", tokenizer.decode(outputs_beam[0], skip_special_tokens=True))Output:
Greedy: machine learning has evolved rapidly over the past decade. neural networks with millions of parameters can now be trained on large datasets. the field of machine learning has been a pioneer in the field of machine learning.
Beam Search: the field of machine learning has evolved rapidly over the past decade. neural networks with millions of parameters can now be trained on large datasets to achieve superhuman performance. the field of machine learning has evolved rapidly over the past decade.Parameter num_beams mengontrol jumlah beam yang digunakan dalam beam search. Semakin tinggi nilainya, semakin banyak hipotesis yang dipertimbangkan namun juga semakin lambat prosesnya. Untuk use case production, nilai antara 3-5 biasanya memberikan keseimbangan yang baik antara kualitas dan kecepatan.
Length penalty dapat disesuaikan untuk mengontrol panjang output. Nilai tinggi akan mendorong model menghasilkan ringkasan yang lebih panjang, sedangkan nilai rendah menghasilkan ringkasan yang lebih singkat. Parameter early_stopping=True menghentikan generation ketika semua beam telah menghasilkan EOS token.
Untuk dokumen yang sangat panjang, kita perlu menerapkan strategi chunking yaitu memecah dokumen menjadi bagian-bagian yang lebih kecil, melakukan summarization pada setiap bagian, lalu menggabungkan hasilnya.
Memilih Model yang Tepat untuk Use Case
Berbagai model summarization memiliki karakteristik yang berbeda. BART (Bidirectional and Auto-Regressive Transformers) sangat baik untuk summarization bahasa Inggris dengan varian bart-large-cnn yang dilatih khusus pada dataset CNN/DailyMail. T5 (Text-to-Text Transfer Transformer) adalah model serbaguna yang dapat digunakan untuk berbagai tugas NLP termasuk summarization dengan menambahkan prefix yang sesuai.
Pegasus dirancang khusus untuk abstractive summarization dengan pre-training objective yang unik yaitu Gap Sentence Generation. Model ini memberikan hasil state-of-the-art pada berbagai benchmark summarization. LED (Longformer Encoder-Decoder) cocok untuk dokumen yang sangat panjang hingga 16.000 token karena menggunakan attention mechanism yang efisien.
Untukuse case multilingual, mBART dan XLM-R menawarkan kemampuan summarization dalam berbagai bahasa di luar bahasa Inggris. Pilihan model juga harus mempertimbangkan trade-off antara ukuran model, kualitas output, dan kecepatan inference. Model yang lebih besar memberikan hasil lebih baik namun memerlukan lebih banyak sumber daya komputasi.
Fine-tuning pada dataset spesifik dapat meningkatkan performa secara signifikan, terutama untuk domain khusus seperti legal, medis, atau teknis. Dengan fine-tuning, model pre-trained diadaptasi untuk memahami terminologi dan pola yang spesifik pada domain tersebut.
Best Practices dan Evaluation
Evaluasi standar untuk summarization menggunakan metrik ROUGE (Recall-Oriented Understudy for Gisting Evaluation). ROUGE-1 mengukur overlap unigram antara ringkasan hasil dan reference, ROUGE-2 mengukur overlap bigram, dan ROUGE-L mengukur longest common subsequence. Library evaluate dari Hugging Face menyediakan implementasi mudah untuk menghitung metrik ini.
!pip install evaluate rouge-score
import evaluate
rouge = evaluate.Load("rouge")
references = ["Indonesia's digital transformation has made significant progress"]
predictions = ["Indonesia has made progress in digital transformation"]
results = rouge.compute(
predictions=predictions,
references=references
)
print(results)Output:
{'rouge1': 0.8000, 'rouge2': 0.3077, 'rougeL': 0.5333}Common failure modes yang perlu diwaspadai adalah hallucination yaitu model menghasilkan fakta yang tidak ada dalam teks asli, dan repetition yaitu model mengulang informasi yang sama beberapa kali. Untuk mitigate hallucination, kita dapat menggunakan model yang lebih baru atau melakukan fine-tuning dengan data berkualitas tinggi. Repetition dapat dikurangi dengan mengatur parameter seperti no_repeat_ngram_size atau menggunakan penalty pada token yang berulang.
Untuk deployment production, beberapa optimasi dapat diterapkan. Quantization mengurangi precision bobot model dari float32 ke int8 untuk mengurangi ukuran dan mempercepat inference. ONNX runtime memungkinkan inference yang lebih cepat melalui optimisasi platform-specific. Batch processing memungkinkan pemrosesan beberapa dokumen secara bersamaan dengan throughput yang lebih tinggi.
Ingin mendalami NLP dan machine learning lebih lanjut? Rumah Coding menyediakan bootcamp dan course intensif yang mencakup Transformers, NLP, dan deep learning dengan pendekatan praktis dan project-based learning. Kunjungi website kami untuk informasi lebih lanjut tentang program yang tersedia.