Empiris· 6 menit baca

Model bahasa memakan 98,5% waktu saat dipasang ke pemeriksa ejaan

Menambahkan model bahasa ke pemeriksa ejaan terdengar seperti peningkatan yang sulit dibantah. Kami memasangnya, mengukurnya dengan kunci jawaban yang sudah pasti sebelum mesin melihat datanya, dan hasilnya berlawanan arah. Yang membuat angka ini bisa dipercaya bukan besarnya, melainkan satu kolom yang menunjukkan kerusakannya tak mungkin datang dari tempat lain.

Diukur dari docs-audit-history.tsv

1.500
Pasangan berkunci jawaban
88,3%
Saran benar, peranking mati
77,1%
Saran benar, peranking nyala
98,5%
Waktu yang dimakan peranking

Hipotesis yang sulit dibantah

Seseorang mengetik kanus. Kata itu tidak ada dalam bahasa Indonesia, jadi pemeriksa ejaan harus menebak apa yang sebenarnya dimaksud. Di sinilah persoalannya mulai: ada lebih dari satu jawaban yang sama masuk akalnya kalau yang dilihat hanya bentuk hurufnya. kamus berjarak satu huruf. kaus juga.

Yang bisa memutuskan hanyalah kalimatnya:


Saya pinjam kanus di perpustakaan.   ->  hampir pasti "kamus"

Saya pakai kanus warna biru.         ->  hampir pasti "kaus"

Mesin koreksi bahasa Indonesia yang kami kembangkan menangani salah ketik dalam dua langkah, dan langkah keduanya lahir persis dari pengamatan itu. Langkah pertama menyisir leksikon mencari kata yang bentuknya paling mirip, memakai jarak edit, lalu menyerahkan sebuah daftar kandidat. Ia sepenuhnya buta terhadap makna. Langkah kedua mengurutkan ulang daftar itu dengan model bahasa, dengan harapan konteks kalimat menyelesaikan sisa pekerjaannya.

Model yang kami pakai IndoBERT, sebuah model bahasa yang dilatih khusus pada teks berbahasa Indonesia. Kemampuannya satu, dan kebetulan itu yang dibutuhkan di sini: diberi kalimat yang salah satu katanya ditutup, ia menilai kata mana yang paling mungkin mengisi tempat itu. Kami menjalankannya lewat ONNX, format yang memungkinkan model semacam ini dieksekusi langsung oleh mesin kami tanpa perlu menyeret Python ikut ke produksi.

Di atas kertas, pasangan ini melengkapi satu sama lain dengan rapi. Jarak edit tahu bentuk, model bahasa tahu makna. Yang kami ukur satu hal: apakah tebakan yang sampai ke pengguna jadi lebih sering benar.

Satu sakelar, kunci jawaban yang sudah pasti

Dua lengan, pipeline sama persis, satu-satunya perbedaan sebuah sakelar yang menyalakan atau mematikan langkah kedua.

Kunci jawabannya tidak ditentukan oleh penilaian manusia. Kami merusak 1.500 kata yang benar secara terkendali dengan seed tetap, sehingga jawaban benarnya diketahui sebelum mesin melihat datanya. Itu penting karena yang menilai di sini adalah pihak yang membangun mesinnya, dan tanpa kunci yang terkunci lebih dulu, penilaian semacam itu punya arah bias yang bisa ditebak.

peranking nyalaperanking mati
saran benar77,1%88,3%
pulih utuh, ditandai dan benar1.103 dari 1.500 (73,5%)1.263 dari 1.500 (84,2%)
kelas tukar huruf63,4%91,4%
kelas hapus huruf71%79%
kelas substitusi82%89%
kelas huruf ganda91%94%
11,2 poin
penurunan akurasi saran akibat menambahkan model bahasa, bukan peningkatan

Kerusakan terbesar jatuh di kelas tukar huruf, turun 28 poin. Itu justru kelas yang paling murni mekanis: kamsu dari kamus, dua huruf bertukar tempat. Tidak ada yang perlu dipahami maknanya di situ.

Kolom yang mengunci sebabnya

Angka besar saja belum membuktikan siapa pelakunya. Yang membuat temuan ini tidak bisa dialihkan ke komponen lain adalah dua kolom berikut.

Yang pertama membandingkan akurasi kandidat teratas symspell mentah dengan akurasi yang benar-benar dikirim ke pengguna:

Peranking nyala

Symspell mentah 88,5%, yang dikirim 77,1%. Turun 11,3 poin di antara keduanya.

Peranking mati

Symspell mentah 88,5%, yang dikirim 88,3%. Turun 0,1 poin.

Angka mentahnya identik di kedua lengan. Bahan bakunya sama, jadi yang berubah hanyalah apa yang dipilih untuk dikirim.

Yang kedua memisahkan dua sebab kegagalan. Gagal karena kata yang benar tidak pernah masuk daftar kandidat, atau gagal karena ia masuk daftar tapi kalah peringkat:

sebab gagalperanking nyalaperanking mati
pengambilan8585
peringkat24282

Pengambilan identik sampai satuan. Kegagalan peringkat turun 160 kasus begitu modelnya dimatikan.

Yang tidak bergerak sedikit pun, dan kenapa itu penting

Peranking tidak merusak segalanya. Justru itu yang membuat temuan ini bisa dipercaya, sebab perubahan yang merusak segalanya biasanya berarti pengukurannya yang keliru.

peranking nyalaperanking mati
deteksi, item yang ditandai95,3%95,3%
salah-tandai pada teks benar11 dari 1.500 (0,7%)11 dari 1.500 (0,7%)
gerbang positif-palsu00
gerbang recall78 dari 8078 dari 80
audit teks berita nyata2.483 temuan2.483 temuan

Audit teks nyata bahkan identik sampai pecahan per kelasnya: gabungan 196, PUEBI 524, slang 290, pisah 72, salah ketik 1.401.

Sebabnya struktural. Peranking hanya memilih di antara kandidat yang sudah ada; ia tak pernah menentukan apakah sesuatu ditandai. Itu sudah diputuskan oleh langkah pertama. Jadi seluruh biayanya jatuh di satu titik saja: memilih jawaban mana yang dikirim.

Ongkos waktunya

Diukur pada 10.000 kalimat berita, 148.839 kata.

waktu
peranking nyala505,8 detik
peranking mati7,5 detik

Peranking memakan 98,5 persen waktu analisis. Mematikannya membuat mesin 67 kali lebih cepat, dengan jumlah temuan yang identik.

98,5 persen dari anggaran waktu kami dibelanjakan untuk memilih jawaban yang lebih sering salah.

Kenapa tidak ketahuan lebih awal

Bagian ini yang paling berguna untuk orang lain, sebab kesalahannya bukan soal bahasa Indonesia dan bukan soal model.

Kami punya alat pemantau, dan ia melaporkan: peranking mengubah jawaban teratas pada 48,2 persen kasus, tapi 99 persen perpindahan itu terjadi antar-kandidat berjarak edit sama, jadi sah. Kesimpulannya aman.

Kesimpulan itu keliru, dan kekeliruannya rapi. Alat itu tidak punya kunci jawaban. Ia hanya bisa melihat seberapa sering peringkat berubah, bukan apakah perubahannya benar. Seluruh kerusakan justru terjadi persis di tempat yang selama ini dianggap paling aman: di antara kandidat yang berjarak edit sama.

Kaidahnya: metrik yang mengukur seberapa aktif sebuah komponen sering disalahartikan sebagai metrik yang mengukur manfaatnya. Selama tak ada kunci jawaban, keduanya tidak bisa dibedakan, dan yang pertama jauh lebih mudah dibuat.

Ini pengukuran kedua, bukan pertama

Tujuh bulan sebelumnya, pengukuran internal lain mencatat symspell mentah benar 70,7 persen di posisi pertama, lalu turun jadi 66,3 persen setelah peranking. Turun 4,4 poin, arah yang sama.

Temuan itu ditulis sebagai komentar di dalam kode, dan tidak pernah ditindaklanjuti.

Jadi bukti pertamanya sudah ada di repositori kami sendiri selama lebih dari setengah tahun, dalam bentuk yang tak seorang pun akan membacanya. Dua pengukuran yang independen, berjarak beberapa bulan, memakai metode berbeda, sama-sama menunjuk ke arah yang sama. Yang membedakan kali ini bukan angkanya, melainkan tempat ia mendarat: sebuah laporan yang benar-benar dibaca dan punya konsekuensi.

Yang tidak boleh disimpulkan dari sini

Bukan berarti model bahasa tak berguna untuk koreksi teks.

Probe kami merusak huruf secara mekanis, dan itu memang ranah jarak edit. Kelas galat yang justru dijanjikan model kontekstual, yaitu kata yang ejaannya benar tapi keliru dipilih menurut makna kalimat, tidak terwakili sama sekali dalam pengujian ini. Untuk kelas itu kami tidak punya bukti ke arah mana pun.

Yang terbukti lebih sempit dan lebih pasti: pada salah ketik mekanis, bentuk kata adalah bukti yang lebih kuat daripada makna yang masuk akal, dan membiarkan makna mengalahkan bentuk justru merugikan. Salah ketik itu kegagalan jari, bukan kegagalan berpikir, jadi wajar kalau yang paling tahu jawabannya adalah kemiripan bentuk.

Sakelarnya sengaja dipertahankan di kode, bukan dihapus. Kalau kelak kami punya korpus draf nyata dengan galat kontekstual, pertanyaan ini bisa diukur ulang tanpa menyentuh satu baris pun.

Data & provenans

Keterbatasan

Korupsi sintetis merusak huruf secara mekanis, dan itu memang ranah pencari ejaan berbasis jarak edit. Probe ini secara struktural tidak bisa menilai kasus di mana makna kalimat semestinya menentukan pilihan, padahal justru di situlah manfaat peranking kontekstual biasanya diklaim ada.

Status jujurnya: bukti kuat bahwa peranking merugikan pada salah ketik mekanis, dan belum ada bukti ke arah mana pun untuk galat kontekstual.

Korpus galat tulisan tangan yang kami punya berisi 80 kasus dan tidak menunjukkan kerugian, tetapi ia sudah 100 persen benar bahkan saat peranking menyala. Secara struktural korpus itu hanya mampu memperlihatkan kerusakan, bukan perbaikan.

Satu implementasi peranking, satu model. Model lain atau cara pemasangan yang berbeda bisa berperilaku lain.

Waktu eksekusi diukur pada satu mesin, sekali jalan per lengan, tanpa pengulangan. Selisih 505,8 detik lawan 7,5 detik terlalu besar untuk berbalik karena derau, tetapi angka persisnya tidak boleh dibaca sebagai presisi.

Korpus uji Leipzig ind_news_2020 berukuran 11 MB dan berada di luar repositori, sehingga angka di sini belum dapat direproduksi penuh oleh pihak luar hanya dari kode. Korpusnya CC BY 4.0; identitas versinya sentences.txt SHA-256 539d5c4547ab23f6810e..., 100.000 baris.

Riwayat revisi

Terbit
Terakhir diperbarui
belum pernah direvisi sejak terbit

Istilah dalam artikel ini

galat
Persentase jawaban yang salah dari seluruh soal yang dicoba sebuah model AI pada satu set uji. Kebalikan dari skor: kalau skor 91,7%, galat artinya 8,3%. Dipakai alih-alih skor ketika yang ingin ditonjolkan adalah seberapa sering model keliru, bukan seberapa sering benar, terutama saat membandingkan seberapa jauh dua model terpisah.

Ditulis penulis untuk artikel ini, bukan disalin dari entri kamus.