Apa itu tokenization dan byte-pair encoding (BPE)?
Tokenization adalah langkah yang memecah teks mentah menjadi unit bernama token dan memetakan masing-masing ke ID bilangan bulat yang bisa dipakai model. Byte-pair encoding (BPE) adalah cara paling umum untuk membangun daftar token: mulai dari karakter tunggal, lalu berulang kali menggabungkan pasangan berdampingan yang paling sering muncul sampai kosakata mencapai ukuran yang dipilih. Hasilnya adalah kosakata berisi subword, potongan yang ukurannya di antara satu huruf dan satu kata utuh.
Setiap model teks dimulai dengan tokenizer. GPT-2, GPT-4, Llama, dan RoBERTa memakai varian BPE, sedangkan BERT memakai WordPiece yang sangat mirip. Tokenizer menentukan panjang setiap input, yang menentukan biaya komputasi dan banyaknya teks yang muat dalam context window, dan juga menentukan kata mana yang bisa direpresentasikan model. Harga API untuk model bahasa pun dihitung dalam token, bukan kata.
Ide utama
- Tokenizer mengubah teks menjadi urutan ID bilangan bulat dari kosakata tetap.
- Kosakata karakter sangat kecil tetapi menghasilkan sequence panjang; sequence tingkat kata pendek tetapi kosakatanya tidak bisa mencakup kata langka.
- BPE membangun kosakata subword dengan berulang kali menggabungkan pasangan berdampingan yang paling sering muncul.
- Setiap merge menambah satu entri kosakata dan memendekkan korpus yang sudah di-encode.
- Teks baru di-encode dengan memutar ulang merge sesuai urutan training, jadi hasilnya deterministik.
- Setiap ID token menunjuk satu baris matriks embedding, dan model bekerja dengan vector itu.
Pertanyaan umum
Satu kata itu berapa token?
Tergantung tokenizer dan bahasanya. Untuk teks bahasa Inggris dengan tokenizer gaya GPT, patokan umumnya sekitar 4 karakter atau 0,75 kata per token, jadi 100 token kira-kira 75 kata. Kata umum biasanya satu token, sedangkan kata langka, nama, dan angka terpecah menjadi beberapa.
Apa bedanya BPE, WordPiece, dan SentencePiece?
BPE menggabungkan pasangan dengan jumlah mentah tertinggi. WordPiece, yang dipakai BERT, memilih merge yang paling menaikkan likelihood data training, sehingga lebih memilih pasangan yang sering muncul relatif terhadap bagian-bagiannya. SentencePiece adalah library, bukan algoritma: ia memperlakukan spasi sebagai simbol biasa dan bisa melatih BPE atau tokenizer unigram language model langsung pada teks mentah.
Kenapa model bahasa kesulitan menghitung huruf?
Model melihat ID token, bukan karakter. Kata seperti "strawberry" bisa datang sebagai dua atau tiga subword token, jadi huruf-hurufnya tidak pernah terlihat langsung. Untuk menjawab pertanyaan tingkat huruf, model harus sudah menghafal ejaan tiap token.
Apakah tokenizer memperlakukan semua bahasa secara setara?
Tidak. Tokenizer yang dilatih terutama dengan bahasa Inggris mempelajari merge panjang untuk kata bahasa Inggris dan lebih sedikit untuk bahasa lain, jadi kalimat yang sama dalam bahasa Thai, Hindi, atau Amharik bisa memakan beberapa kali lebih banyak token. Akibatnya, bahasa-bahasa itu lebih lambat dan lebih mahal diproses, dan ruang di context window jadi lebih sempit.
Penjelasan terkait
- Embedding · Mengubah kata dan kategori menjadi vector
- Language Modeling · Memprediksi token berikutnya, tujuan yang menggerakkan GPT, BERT, dan NLP modern
- Bag of Words · Mengubah teks menjadi angka: hitung kemunculan kata untuk membuat representasi dokumen paling sederhana di NLP
- Word2Vec & Word Embedding · Mempelajari representasi dense vector, dengan kata yang mirip saling berdekatan di dalam ruang
- Arsitektur Transformer · Panduan visual untuk paper "Attention Is All You Need"
Referensi
- Sennrich, Haddow & Birch (2016), "Neural Machine Translation of Rare Words with Subword Units", ACL
- Kudo & Richardson (2018), "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing"
- Kudo (2018), "Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates"
- Jurafsky & Martin, "Speech and Language Processing" (3rd ed. draft)
Terakhir diperbarui