Memahami n-grams
Apa itu N-grams ?
Rahasia Kecil di Balik Mesin Pencari dan Autocomplete
Ketika kita mengetik “Cara mem…” di Google, dan seketika muncul saran
- “Cara membuat kue,”
- “Cara memperbaiki laptop,”
- “Cara memulai bisnis”
- dll
Atau, ketika kita salah mengetik “sepatu adids” di toko online, tapi hasil yang muncul tetap sepatu Adidas ?
Teknologi di balik “sihir” menebak kata dan memperbaiki typo ini sering kali bergantung pada konsep sederhana namun sangat powerful bernama N-grams.
Apa Itu N-gram ?
Kita misalkan sebuah kalimat bukan sebagai satu kesatuan panjang, melainkan sebuah kue bolu gulung yang perlu dipotong-potong.
N-gram adalah cara memotong teks (bisa berupa kalimat atau kata) menjadi potongan-potongan kecil yang berurutan.
Huruf $n$ di sini mewakili jumlah potongan yang kita ambil sekaligus.
Contoh :
“Saya suka kopi”
Jika kita memecahnya berdasarkan kata, beginilah hasilnya:
| Jenis N-gram | Nilai n | Hasil Potongan (Tokens) |
|---|---|---|
| Unigram | 1 | [Saya], [suka], [kopi] |
| Bigram | 2 | [Saya suka], [suka kopi] |
| Trigram | 3 | [Saya suka kopi] |
Kalau kita lihat polanya, maka kita seperti menggunakan teknik sliding window.
- Untuk Bigram, kita ambil dua kata pertama, geser satu langkah, lalu ambil dua kata berikutnya.
Peran N-gram dalam NLP (Otak Komputer) Dalam Natural Language Processing (NLP)
Dalam pemrosesan bahasa alami, komputer tidak benar-benar “mengerti” bahasa seperti manusia.
Mereka mengandalkan statistik.
Di sinilah N-gram, khususnya Word N-grams (potongan per kata), berperan penting.
Contoh :
1. Memahami Konteks Kata “bisa” memiliki dua arti: “dapat” atau “racun ular”.
Jika komputer hanya membaca satu kata (Unigram: “bisa”), ia bingung.
Tapi jika komputer membaca dua kata (Bigram: “bisa ular” atau “bisa lari”), ia langsung paham konteksnya.
2. Prediksi Kalimat (Seperti di WhatsApp)
Mengapa saat Kita mengetik “Terima”, keyboard Anda menyarankan “Kasih” ?
Karena dalam miliaran teks yang dipelajari komputer, Bigram [Terima Kasih] muncul jauh lebih sering daripada [Terima Makan].
N-gram membantu menghitung probabilitas kata apa yang akan muncul selanjutnya.
Peran N-gram dalam ElasticSearch (Mesin Pencari)
Jika NLP sering menggunakan N-gram berbasis kata, mesin pencari seperti ElasticSearch sering menggunakan N-gram berbasis karakter (huruf).
Mengapa ?
Ternyata untuk menangani pencarian yang tidak lengkap atau typo.
Misalkan kita punya produk bernama: “IPHONE”.
Jika kita menggunakan teknik Edge N-gram (potongan dari depan), ElasticSearch akan menyimpan data “IPHONE” dalam indeksnya sebagai:
- i
- ip
- iph
- ipho
- iphon
- iphone
Keuntungannya
Saat pengguna baru mengetik “ipho” di kolom pencarian, sistem langsung mencocokkannya dengan token ipho yang sudah tersimpan.
Inilah yang membuat fitur search-as-you-type (pencarian instan saat mengetik) menjadi sangat cepat.
Tanpa N-gram, sistem harus menunggu Anda selesai mengetik kata “iphone” secara utuh dan sempurna baru bisa mencari.
Kelemahannya
Karena kita memecah satu kata atau kalimat menjadi banyak potongan kecil, ukuran penyimpanan (storage) bisa membengkak.
Menyimpan kata “Universitas” hanya butuh satu entri.
Tapi menyimpan N-gram dari “Universitas” (Uni, niv, ive, ver, dst.) membutuhkan ruang memori yang jauh lebih besar.
Oleh karena itu, engineer harus bijak menentukan berapa nilai $n$ yang optimal (biasanya $n=3$ atau $n=4$ sudah cukup).
Kesimpulan
N-gram adalah jembatan yang membantu komputer memahami urutan dan pecahan bahasa.
Di NLP, ia membantu menebak konteks dan kata selanjutnya.
Di ElasticSearch, ia membantu menemukan hasil bahkan saat kita belum selesai mengetik.
Jadi, setiap kali mesin pencari berhasil menebak keinginan Anda, berterima kasihlah pada konsep matematika sederhana bernama N-grams.