Indonesian BERT2GPT Summarization Model

Finetuned EncoderDecoder model using BERT-base and GPT2-small for Indonesian text summarization.

Finetuning Corpus

bert2gpt-indosum model is based on cahya/bert2gpt-indonesian-summarization cahya, finetuned using indosum dataset.

How to Load Finetuned Model

from transformers import BertTokenizer, EncoderDecoderModel, EncoderDecoderConfig
model_ckpt = 'ardavey/bert2gpt-indosum'
tokenizer = BertTokenizer.from_pretrained(model_ckpt)
tokenizer.bos_token = tokenizer.cls_token
tokenizer.eos_token = tokenizer.sep_token

config = EncoderDecoderConfig.from_pretrained(model_ckpt)
config.early_stopping = True

model = EncoderDecoderModel.from_pretrained(model_ckpt, config=config)

Code Example

from transformers import BertTokenizer, EncoderDecoderModel, EncoderDecoderConfig
model_ckpt = 'ardavey/bert2gpt-indosum'
tokenizer = BertTokenizer.from_pretrained(model_ckpt)
tokenizer.bos_token = tokenizer.cls_token
tokenizer.eos_token = tokenizer.sep_token

config = EncoderDecoderConfig.from_pretrained(model_ckpt)
config.early_stopping = True

model = EncoderDecoderModel.from_pretrained(model_ckpt, config=config)

# Source of the article below: https://soc.telkomuniversity.ac.id/optiguard-aplikasi-dan-alat-untuk-deteksi-dini-penyakit-kebutaan-ciptaan-mahasiswa-fakultas-informatika-tel-u
custom_text = """
Bandung, 5 Juli 2024 --- Kebutaan akan membawa dampak negatif bagi penderitanya. Pentingnya menjaga Kesehatan mata untuk mencegah kebutaan membuat sekelompok mahasiswa dari Fakultas Informatika Telkom University menciptakan inovasi untuk mengidentifikasi penyakit mata.
Inovasi ini diberi nama Optiguard yang dikembangkan melalui Program Kreativitas Mahasiswa Bidang Karsa Cipta (PKM-KC) dan berhasil mendapatkan pendanaan dari Kemendikbudristek. OptiGuard diciptakan sebagai upaya preventif mencegah kebutaan dengan mendeteksi dini penyakit mata, sehingga penyakit mata dapat ditangani sebelum semakin parah dan memperkecil peluang terjadinya kebutaan. Inovasi OptiGuard ini mengedepakan efisiensi, kecepatan, dan ketepatan dalam mendiagnosis penyakit mata.
OptiGuard merupakan hasil kolaborasi dari sekelompok mahasiswa program studi S1 Sains Data Telkom University yang memiliki peranannya masing-masing. Hendrik Mario Ignatius sebagai Koordinator dan Front End Developer, Izzulhaq Mahardika sebagai Adaptor designer dan Back End Developer, Nida Anggraeni sebagai Reseacher dan Public Relation, Nadia Nurhalija Zuaeni sebagai Content Creator dan Researcher, dan Tiara Sabrina sebagai AI Engineer dan UI/UX Designer. Pengembangan inovasi ini rutin dipantau dan didampingi oleh Dr. Gamma Kosala, S.Si.
"""

input_ids = tokenizer.encode(custom_text, return_tensors='pt', padding=True, truncation=True, max_length=512)
summary_ids = model.generate(input_ids,
            min_length=40,
            max_length=200,
            num_beams=10,
            repetition_penalty=2.0,
            length_penalty=1.0,
            no_repeat_ngram_size=3,
            use_cache=True,
            do_sample = False,
            top_k = 50,
            )

summary_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True)

Apply Post Preprocessing

You could apply post preprocessing if the model might not have a strong grasp of specific terms, especially for words like "OptiGuard," which may not be common in the pre-trained data.

# capitalize the first letter of the summary and after each period
def capitalize_sentences(text):
    sentences = text.split('. ')
    capitalized_sentences = [sentence[0].upper() + sentence[1:] if sentence else sentence for sentence in sentences]
    return '. '.join(capitalized_sentences)

# correct any wrong terms using the replacement_dict
replacement_dict = {
    "optiglain": "OptiGuard",
    "telkom university": "Telkom University",
}

for wrong_term, correct_term in replacement_dict.items():
    summary_text = summary_text.replace(wrong_term, correct_term)

summary_text = capitalize_sentences(summary_text)

Output:

Summary:
Kebutaan akan membawa dampak negatif bagi penderitanya. Pentingnya menjaga kesehatan mata untuk mencegah kebutaan membuat sekelompok mahasiswa dari fakultas informatika Telkom University menciptakan inovasi untuk mengidentifikasi penyakit mata. Inovasi ini diberi nama OptiGuard yang dikembangkan melalui program kreativitas mahasiswa bidang karsa cipta ( pkm - kc ) dan berhasil mendapatkan pendanaan dari kemendikbudristek.
Downloads last month
6
Safetensors
Model size
263M params
Tensor type
F32
ยท
Inference Examples
Unable to determine this model's library. Check the docs .

Space using ardavey/bert2gpt-indosum 1