Belajar Masked Languange Model Fill Mask

By | March 22, 2024
Print Friendly, PDF & Email
364 Views

Masked Language Modeling (MLM) adalah sebuah teknik dalam pemrosesan bahasa alami (Natural Language Processing/NLP) di mana beberapa kata atau token dalam sebuah kalimat diubah menjadi token khusus yang disebut “mask”. Kemudian, model dilatih untuk memprediksi kata-kata asli yang tersembunyi berdasarkan konteks yang diberikan oleh kata-kata sekitarnya.

Teknik ini umumnya terkait dengan model berbasis transformer seperti BERT (Bidirectional Encoder Representations from Transformers). Dalam BERT, sebagian persentase token dalam teks input dimasker, dan model dilatih untuk memprediksi token-token yang termasker berdasarkan sisa teks input.

Masked Language Modeling berguna karena memungkinkan model untuk belajar representasi teks secara bidireksional, yang berarti dapat memperhitungkan konteks kiri dan kanan dari sebuah kata saat membuat prediksi. Ini membantu model menangkap pola dan ketergantungan linguistik yang kompleks dalam data.

Proses pelatihan untuk masked language model umumnya melibatkan memberikan model dengan korpus besar data teks dan menyempurnakan parameter-parameternya untuk meminimalkan kesalahan prediksi pada token-token yang tersembunyi. Setelah dilatih, model dapat digunakan untuk berbagai tugas NLP turunan seperti klasifikasi teks, pengenalan entitas bernama, dan menjawab pertanyaan.

Lebih jauh mengenai MLM NLP / Pemodelan bahasa tersembunyi.

Pemodelan bahasa tersembunyi adalah tugas dari menyamarkan beberapa kata dalam sebuah kalimat dan memprediksi kata-kata mana yang harus menggantikan masker-masker tersebut. Model-model ini berguna ketika kita ingin mendapatkan pemahaman statistik tentang bahasa di mana model dilatih.

ref: https://huggingface.co/tasks/fill-mask

 

Model bahasa tersembunyi tidak memerlukan data yang berlabel! Mereka dilatih dengan menyamarkan beberapa kata dalam kalimat dan diharapkan model dapat menebak kata yang tersamarkan tersebut. Hal ini sangat praktis!

Sebagai contoh, pemodelan bahasa tersembunyi digunakan untuk melatih model besar untuk masalah-masalah khusus domain. Jika Anda harus bekerja pada tugas khusus domain, seperti mendapatkan informasi dari paper penelitian medis, Anda dapat melatih model bahasa tersembunyi menggunakan paper-paper tersebut.

Model yang dihasilkan memiliki pemahaman statistik tentang bahasa yang digunakan dalam paper penelitian medis, dan dapat dilatih lebih lanjut dalam proses yang disebut fine-tuning untuk menyelesaikan tugas-tugas yang berbeda, seperti Klasifikasi Teks atau Menjawab Pertanyaan untuk membangun sistem ekstraksi informasi dari paper penelitian medis. Pra-pelatihan pada data yang khusus domain cenderung menghasilkan hasil yang lebih baik (lihat paper ini untuk contoh).

Menggunakan HuggingFace untuk Inference MLM

Hal yang paling mudah tentu ya kita langsung coba yang sudah jadi terlebih dahulu, seperti biasanya kita akan menggunakan HuggingFace sebagai library dan Pipeline nya. Pada contoh berikut melengkapi kata dalam sebuah kalimat bahasa inggris.

from transformers import pipeline

masking = pipeline("fill-mask")
masking("Paris is the <mask> of France.")

token <mask> akan diganti dengan beberapa tebakan token berikut ini

[{'score': 0.7, 'sequence': 'Paris is the capital of France.'},
{'score': 0.2, 'sequence': 'Paris is the birthplace of France.'},
{'score': 0.1, 'sequence': 'Paris is the heart of France.'}]

MLM Bahasa Indonesia

Tenang saja, kalian bisa kok mencoba menggunakan MLM bahasa indonesia kalian bisa mencoba dari https://huggingface.co/cahya/bert-base-indonesian-522M yang menggunakan data wikipedia

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("indolem/indobert-base-uncased")
model = AutoModel.from_pretrained("indolem/indobert-base-uncased")

 

Fine Tuning model yang sudah ada. Model MLM di huggingface sudah ada banyak, kalian bisa kok melakukan tuning sendiri. https://huggingface.co/learn/nlp-course/chapter7/3?fw=pt

Melatih Model MLM menggunakan dataset

Untuk membuat model MLM menggunakan dataset milik sendiri pun bisa kita lakukan dengan mudah kok. Ada beberapa tahapan yang perlu kita lakukan yaitu

  1. menyiapkan dataset
  2. membuat tokenizer/vocab
  3. load dataset
  4. membuat pengaturan model
  5. melatih model

 

Silahkan kalian login terlebih dahulu, bila ingin membaca keseluruhan

Existing Users Log In




Enter Captcha Here :

   

 

Mencoba Model yang baru

Setelah menunggu lama, kita bisa coba dulu

from transformers import pipeline
recognizer= pipeline(task="fill-mask", model="./model1")

atau menggunakan cara yang panjang

from transformers import BertTokenizerFast,BertForMaskedLM
tokenizer = BertTokenizerFast.from_pretrained('./model1', max_len=512)
model = BertForMaskedLM.from_pretrained('./model1')
recognizer = pipeline("fill-mask", model=model, tokenizer=tokenizer)

mari kita coba

teks = "Ini ditujukan agar [MASK] memiliki interior nyaman"
recognizer(teks)

hasilnya

[{'score': 0.05832953751087189,
  'token': 12,
  'token_str': '-',
  'sequence': 'ini ditujukan agar - memiliki interior nyaman'},
 {'score': 0.05135060474276543,
  'token': 14,
  'token_str': '/',
  'sequence': 'ini ditujukan agar / memiliki interior nyaman'},
 {'score': 0.009710632264614105,
  'token': 135,
  'token_str': '##ap',
  'sequence': 'ini ditujukan agarap memiliki interior nyaman'},
 {'score': 0.007217602338641882,
  'token': 110,
  'token_str': '##tu',
  'sequence': 'ini ditujukan agartu memiliki interior nyaman'},
 {'score': 0.00485652033239603,
  'token': 141,
  'token_str': 'mobil',
  'sequence': 'ini ditujukan agar mobil memiliki interior nyaman'}]

ref:

https://towardsdatascience.com/how-to-train-bert-for-masked-language-modeling-tasks-3ccce07c6fdc

https://medium.com/@ngiengkianyew/implementation-of-a-simple-masked-language-model-6a3bc18912c8

 

Leave a Reply