--- language: id tags: - pipeline:summarization - summarization - bert2gpt datasets: - indosum license: mit --- # 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](https://huggingface.co/cahya), finetuned using [indosum](https://huggingface.co/datasets/maryantocinn/indosum) dataset. ## How to Load Finetuned Model ```python 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 ```python 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. ```python # 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. ```