Dua tahun pada rentang 2017 sampai 2018 mengubah cara teks diwakilkan menjadi angka, dari satu vektor tetap per kata menuju vektor yang berbeda untuk setiap kejadian kata. Topik ini menjelaskan apa yang berubah pada masa itu, perbedaan vektor statis dan vektor kontekstual, cara spaCy menampung arsitektur transformer, serta arah materi selanjutnya menuju kurikulum deep-learning. Setelah membacanya, alasan keberadaan embedding kontekstual dapat dijelaskan dengan bukti dari demo yang berjalan langsung.
Perubahan pada 2017-2018#
Makalah Attention Is All You Need pada tahun 2017 memperkenalkan arsitektur transformer, yaitu arsitektur jaringan saraf yang menghitung hubungan antartoken melalui mekanisme attention tanpa memerlukan perulangan berbasis RNN. Penggantian perulangan dengan attention membawa dua konsekuensi besar, yaitu pelatihan dapat diparalelkan di atas perangkat keras modern dan hubungan antarkata yang berjarak jauh tetap terbaca langsung. Kedua sifat itu menjadikan model dapat dilatih pada korpus yang jauh lebih besar daripada era sebelumnya.
Tahun 2018 menghadirkan generasi model yang memanfaatkan arsitektur tersebut. ELMo menghasilkan representasi kata kontekstual dari jaringan LSTM dua arah, sehingga satu kata yang berbeda konteksnya memperoleh representasi yang berbeda pula. BERT melanjutkan dengan pelatihan transformer dua arah pada korpus masif, lalu penyetelan yang ringan untuk tugas tertentu, dan pendekatan ini menjadi standar bagi banyak tugas NLP sejak itu. Perubahan kecil pada konsepnya, yaitu representasi per kejadian alih-alih representasi per kata, berdampak besar pada praktiknya.
Pergeseran ini tidak menafikan model neural kecil. Model en_core_web_sm juga neural, sebagaimana tok2vec dan tagger di dalamnya, tetapi ukuran data pelatihan dan jumlah parameternya jauh lebih kecil dibandingkan transformer praterlatih. Batas antara keduanya penting dipahami, karena kualitas representasi mengikuti ukuran model dan korpusnya, bukan sekadar keberadaan jaringan sarafnya.
Vektor statis versus vektor kontekstual#
Vektor statis menetapkan satu vektor untuk satu kata, tanpa memandang kalimat tempat kata itu berada, sedangkan vektor kontekstual menghasilkan vektor untuk setiap kejadian kata sesuai kalimatnya. Perbedaan ini menentukan nasib kata polisem. Pada tabel vektor statis seperti word2vec dan GloVe di modul embedding kata, kedua kejadian kata book dalam kalimat berbeda mengambil baris yang persis sama, sehingga makna kata kerja dan makna kata benda tercampur dalam satu vektor.
Demo berikut menguji perilaku tersebut pada model en_core_web_sm dengan kata book di dua kalimat, kemudian membandingkan keputusan POS dan vektornya.
import spacy
nlp = spacy.load("en_core_web_sm")
print("tabel vektor statis :", nlp.vocab.vectors.shape)
doc_verb = nlp("I will book a table for dinner.")
doc_noun = nlp("She read a book about astronomy.")
k_verb = [t for t in doc_verb if t.text == "book"][0]
k_noun = [t for t in doc_noun if t.text == "book"][0]
print("POS book kalimat 1 :", k_verb.pos_)
print("POS book kalimat 2 :", k_noun.pos_)
print("vektor sama persis :", k_verb.vector.tolist() == k_noun.vector.tolist())
doc_sama = nlp("I will book a table for dinner.")
k_sama = [t for t in doc_sama if t.text == "book"][0]
print("kalimat sama :", k_verb.vector.tolist() == k_sama.vector.tolist())
doc_tunggal = nlp("book")
print("kata tunggal :", doc_tunggal.vector.tolist() == k_verb.vector.tolist())tabel vektor statis : (0, 0)
POS book kalimat 1 : VERB
POS book kalimat 2 : NOUN
vektor sama persis : False
kalimat sama : True
kata tunggal : FalseKeluaran tersebut memuat satu temuan yang sering disalahpahami. Model en_core_web_sm tidak membawa tabel vektor statis sama sekali, sebagaimana ditunjukkan bentuk (0, 0), sehingga atribut token.vector bukan vektor semantik praterlatih sekelas word2vec, melainkan tensor kontekstual kecil yang dihasilkan komponen tok2vec. Konsekuensinya terlihat pada baris-baris berikutnya, yaitu keputusan POS untuk book berbeda antara VERB dan NOUN sesuai konteksnya, dan vektor kedua kejadian itu pun berbeda karena representasinya bergantung konteks. Kalimat yang sama menghasilkan vektor yang sama, karena inferensi, yaitu langkah menjalankan model yang sudah dilatih, bersifat deterministik. Adapun kata book yang berdiri sendiri memperoleh vektor lain lagi. Perilaku per kejadian inilah inti era kontekstual, dan transformer praterlatih membawanya ke skala yang jauh lebih besar.
Penampungan di spaCy: spacy-transformer#
spaCy menampung arsitektur transformer melalui paket spacy-transformer, yaitu jembatan menuju model praterlatih dari pustaka transformers. Pipeline seperti en_core_web_trf memuat komponen transformer di posisi paling depan, dan tensor kontekstualnya dibagikan kepada komponen turunan seperti tagger, parser, dan ner, sehingga seluruh prediksi membaca representasi yang sama. Data mentah transformer tetap dapat diakses melalui doc._.trf_data apabila representasi mentahnya dibutuhkan.
# tidak-dijalankan: paket spacy-transformer beserta model en_core_web_trf tidak terpasang di sandbox
import spacy
nlp = spacy.load("en_core_web_trf")
doc = nlp("I will book a table for dinner.")
print(nlp.pipe_names)
print(doc._.trf_data.last_hidden_state.shape)Keunggulan representasi transformer itu dibayar dengan kebutuhan sumber daya. Model trf berukuran ratusan MB dan jauh lebih lambat dibandingkan model sm, sehingga pemilihannya menuntut alasan akurasi yang terukur, bukan sekadar mengikuti kebaruan. Penyiapannya pun berada di luar lingkup sandbox topik ini, karena paket spacy-transformer dipasang melalui pip dan model seperti en_core_web_trf diunduh secara terpisah. Setelah terpasang, pipeline trf dimuat dengan cara yang sama seperti pipeline sm, yaitu melalui spacy.load, dan kode di sekitarnya tidak berubah.
Arah ke kurikulum deep-learning#
Materi transformer berskala besar berada di luar lingkup jalur ini. Arsitektur attention secara rinci, strategi pelatihan awal (pretraining), teknik penyetelan, dan perangkat untuk melatih model sendiri dibahas pada kurikulum deep-learning, yang menyediakan fondasi jaringan saraf untuk seluruhnya. Makalah aslinya pun tetap layak dibaca, karena definisi attention di dalamnya menjadi kosakata bersama bagi seluruh literatur era ini. Bab transformer pada rujukan Speech and Language Processing edisi ketiga menjadi penghubung yang ringan sebelum masuk ke materi pelatihan.
Jalur NLP klasik berakhir dengan pemetaan yang jelas, yaitu teknik mana yang tetap dijalankan dan materi mana yang diserahkan. Tokenisasi, regex, klasifikasi teks, embedding statis, dan pipeline production tetap menjadi pekerjaan harian yang murah, cepat, dan dapat diperiksa, sedangkan pemodelan representasi kontekstual berskala besar menjadi wilayah kurikulum deep-learning dan selanjutnya llm-apps. Pemetaan tersebut membuat keputusan teknologi dapat diambil per tugas, bukan mengikuti mode.
Kesalahan umum#
- Menganggap
token.vectorpada model sm sebagai embedding semantik praterlatih sekelas word2vec. Nilai itu berasal dari tensor tok2vec internal, sehingga perbandingan kemiripan semantik antardokumen berdasarkan atribut ini menyesatkan. Gunakan model dengan tabel vektor nyata atau pipeline transformer untuk kebutuhan semantik. - Memuat pipeline trf tanpa menyiapkan paketnya. Pemanggilan
spacy.load("en_core_web_trf")memunculkan error apabila paket spacy-transformer belum terinstal atau modelnya belum diunduh. Instal paket dan modelnya terlebih dahulu, lalu periksa ukuran memorinya sebelum dipasang di production. - Menyamakan transformer dengan seluruh model neural. BiLSTM juga neural, tetapi bukan transformer, dan pembedanya adalah attention yang menghubungkan antartoken secara langsung sehingga pelatihan dapat diparalelkan. Menyebut semua model neural sebagai transformer membuat pembacaan literatur menjadi rancu.
Ringkasan#
- Makalah tahun 2017 memperkenalkan transformer berbasis attention, dan tahun 2018 menghadirkan representasi kontekstual melalui ELMo serta BERT.
- Vektor statis memberi satu vektor per kata sehingga makna kata polisem tercampur, sedangkan representasi kontekstual memberi vektor per kejadian kata.
- Demo menunjukkan en_core_web_sm tanpa tabel vektor statis, dengan POS book yang berbeda per konteks dan
token.vectoryang berasal dari tensor tok2vec. - spaCy menampung transformer melalui paket spacy-transformer dengan pipeline trf, dan materi berskala besarnya dilanjutkan di kurikulum deep-learning.
Referensi#
- Attention Is All You Need — Vaswani dkk., arXiv 2017 — Makalah yang memperkenalkan arsitektur transformer dengan mekanisme attention.
- Speech and Language Processing, draf edisi ke-3 — Jurafsky & Martin, Stanford — Bab tentang transformer membahas attention, BERT, dan representasi kontekstual secara bertahap.
- spaCy Usage Documentation — Explosion — Bagian pipelines dan models menjelaskan cara pipeline transformer terpasang di dalam spaCy.