- Terinspirasi dari program Mark V. Shaney pada era 1980-an, dibuat generator teks Markov sederhana bernama Mark V. Shaney Junior yang diimplementasikan hanya dengan sekitar 30 baris kode Python
- Model ini memprediksi kata berikutnya secara probabilistik berdasarkan tiga kata (trigram), dengan menggunakan sekitar 200 tulisan blog (kurang lebih 200 ribu kata) sebagai data pelatihan
- Kalimat yang dihasilkan muncul dalam bentuk kalimat tak bermakna (gibberish) yang mencampurkan kata-kata dari topik blog seperti Lisp, Emacs, matematika, dan pemrograman
- Jika order model dinaikkan, kalimat menjadi lebih konsisten, tetapi pada 5 ke atas model mulai mengutip teks asli apa adanya sehingga kreativitas menghilang
- Bahkan di era model bahasa besar (LLM), kejernihan struktur model Markov yang sederhana seperti ini tetap diajukan sebagai titik awal yang baik untuk memahami prinsip pembangkitan bahasa
Gambaran program Mark V. Shaney Junior
- Mark V. Shaney Junior adalah generator teks yang meniru pengguna virtual Mark V. Shaney yang aktif di Usenet pada era 1980-an
- Versi aslinya adalah program yang secara otomatis menghasilkan postingan dengan menggunakan model Markov
- Implementasi kali ini merupakan versi minimalis yang menyederhanakan ide tersebut dan dibuka di GitHub
- Seluruh kodenya terdiri dari sekitar 30 baris Python, dengan penekanan pada kesederhanaan dibanding efisiensi
- Bahkan orang yang baru pertama kali mengenal model Markov bisa memahaminya dalam waktu kurang dari 20 menit
Pemrograman eksperimental sebagai hobi
- Penulis gemar melakukan pemrograman untuk menjelajahi ide, bukan untuk menyelesaikan masalah tertentu
- Ia beberapa kali bereksperimen dengan rantai Markov yang memiliki beragam ruang keadaan
- Kode-kode eksperimen seperti ini kemudian dirapikan dan dibagikan di GitHub atau Codeberg
- Mark V. Shaney Junior juga merupakan salah satu eksperimen semacam itu, lalu dipoles dan dirilis ke publik
Pembangkitan teks menggunakan data blog
- Setelah menguji model dengan A Christmas Carol karya Charles Dickens,
penulis menggunakan tulisan blog selama 24 tahun (sekitar 200 tulisan, kurang lebih 200 ribu kata) sebagai data masukan- Komentar (sekitar 40 ribu kata) dikecualikan
- Kalimat yang dihasilkan tampil sebagai kalimat tak logis yang mencampurkan perintah pemrograman, istilah matematika, dan perintah editor
- Contoh: kalimat yang menggabungkan perintah Emacs, kode Lisp, dan istilah matematika secara acak
- Beberapa kalimat mengambil kata dari tulisan blog tertentu lalu membentuk kombinasi tanpa makna
- Contoh: “Lisp source file” dan “self-esteem” diambil dari tulisan yang berbeda lalu digabungkan
Sifat Markov dan struktur algoritme
- Konfigurasi dasarnya berbasis trigram (3 kata),
menggunakan struktur map yang menyimpan dua kata sebelumnya sebagai key dan kata ketiga sebagai value - Proses pembangkitan teks
- Memilih pasangan kata secara acak → memilih salah satu kata berikutnya yang mungkin dengan probabilitas seragam
- Membentuk pasangan baru dari kata yang baru dipilih dan kata sebelumnya, lalu mengulang
- Berhenti ketika tidak ada lagi kata lanjutan atau saat mencapai batas 100 kata
- Jika trigram yang sama muncul beberapa kali, kata lanjutan tersebut disimpan berulang dalam daftar, sehingga
pemilihan probabilistik dilakukan sebanding dengan frekuensi kemunculannya - Proses ini merupakan transisi probabilistik yang hanya bergantung pada keadaan saat ini,
yang secara matematis dapat dinyatakan sebagai P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ)- Sifat memoryless inilah yang menjadi inti dari properti Markov
Eksperimen tambahan dan penyesuaian order model
- Order default adalah 2 dan dapat diubah melalui argumen command line
- Jika order dinaikkan ke 3~4, kalimat menjadi lebih konsisten dan lebih alami
- Contoh: menghasilkan kalimat yang relatif logis dengan campuran perintah IRC dan konsep matematika
- Namun, jika order dinaikkan ke 5, model mulai menyalin teks asli apa adanya, sehingga
ketakbermaknaan kreatif (gibberish) menghilang - Teks juga dapat dihasilkan dengan memberi prompt awal
- Misalnya, jika diberi awal kalimat “Finally we”, model menghasilkan kalimat panjang yang mencampurkan Emacs, MATLAB, GNU bash, dan istilah lain
Makna dari model sederhana
- Pada 2025, model bahasa besar (LLM) memang sudah menjadi arus utama,
dan model Markov tidak mampu menangkap struktur global maupun ketergantungan jangka panjang - Meski demikian, berkat desain yang sederhana dan implementasi yang jelas,
model ini tetap bernilai sebagai model pengantar untuk mempelajari prinsip pembangkitan bahasa - Penulis menyebut model ini sebagai “Hello, world” untuk language model
1 komentar
Komentar Hacker News
Markov Model adalah versi statistik dari mesin status yang menghasilkan token berikutnya secara probabilistik hanya berdasarkan keadaan saat ini
Hubungan antara status dan token harus didefinisikan dengan jelas agar diskusi yang bermakna bisa dilakukan
Misalnya, jika status adalah fungsi dari k observasi terakhir, ini disebut Markov Chain orde-k
RNN bisa dilihat sebagai bentuk perluasan yang mendefinisikan status sebagai fungsi dari status-status sebelumnya dan token-token terbaru
Probabilitas transisi status bisa bersifat deterministik atau probabilistik, dan panjang konteks juga bisa didefinisikan secara variabel
Namun tidak semua Markov Model dapat dipelajari
Saya ingat pernah membeli program seperti ini seharga 3 dolar dari Egghead Software pada tahun 1992
Saya memasukkan tulisan seperti buku harian saya selama 5 tahun dan tertawa melihat hasilnya
Sebagai contoh lama, lihat Babble 1.0.20 dan posting forum terkait Software Spotlight: Babble
Setelah membaca tulisan itu, saya juga mencoba bereksperimen dengan model Markov
Saya mulai di tingkat karakter, tetapi bahkan setelah diubah menjadi model orde-2, perbedaannya tidak terlalu besar
Saat naik ke orde-3 (trigram), hasilnya menjadi sedikit lebih alami
Setelah itu saya menerapkan model Markov orde-1 pada teks yang ditokenisasi dengan BPE(Byte Pair Encoding), dan hasilnya sedikit lebih konsisten
Tetapi ketika dinaikkan ke orde-2, model itu menyalin teks asli apa adanya — karena BPE menghilangkan token berulang sehingga transisinya menjadi deterministik
Ketika jumlah token dibatasi (misalnya 894 → 800), hasilnya kembali menjadi non-deterministik, dan teksnya terasa sedikit lebih alami
Jika ordonya terlalu tinggi (misalnya orde-5), teksnya terasa kering dan seperti hanya menjejalkan fakta
Pada akhirnya, model Markov itu sederhana tetapi cukup menyenangkan untuk dijadikan alat eksperimen
Menghapus rantai yang hanya punya satu token lanjutan mungkin akan membantu, tetapi ada risiko struktur tata bahasanya ikut hilang
Saya sedang mencari cara yang lebih baik untuk menghindari rantai tunggal yang panjang
Jika hanya ada satu jalur yang mungkin, misalnya diturunkan menjadi 4 kata
Atau mungkin ini hanya kita yang sendirian, dan pikiran kita berusaha menemukan keteraturan di dalam kekacauan
Dulu saya juga pernah melakukan eksperimen serupa
Saya memasukkan sekitar 500 ribu kata tulisan fantasi dan SF yang saya tulis selama 20 tahun ke dalam model Markov dan menyesuaikannya dengan slider 2~5-gram
Itu seperti alat ‘sumur mimpi’ yang saya buka setiap kali butuh inspirasi
Rasanya seperti kelanjutan dari kebiasaan masa kecil saya membuka halaman kamus secara acak untuk mencari ide menulis
Bereksperimen dengan korpus seperti ini sepertinya bisa jadi proyek yang cukup menarik
Ada juga video presentasi
Apakah mungkin melatih seluruh tulisan pribadi untuk membuat model saya sendiri?
Model dan alat apa yang sebaiknya dipakai, dan apakah bisa menulis dengan gaya bahasa saya tanpa system prompt
Lebih jauh lagi, saya juga penasaran apakah model itu bisa merespons panggilan telepon atau pesan Discord secara alami
Ada fanfic Harry Potter yang dibuat dengan Markov Chain
Judulnya Harry Potter and the Portrait of What Looked Like a Large Pile of Ash
Bisa dilihat di tautan botnik.org
Bahkan dari kalimat pertamanya saja, itu terasa seperti teks kosong
Menurut saya, itu bahkan tidak punya emosi atau makna dibanding buku terburuk yang ditulis manusia
Upaya seperti “I Fed 24 Years of My Blog Posts to a Markov Model” adalah sesuatu yang sudah berulang kali dilakukan oleh berbagai LLM
Penulis seperti Barbara Cartwright, yang menulis lebih dari 700 novel roman serupa, tampaknya bisa direproduksi dengan model Markov
Istri saya pun kadang membeli lagi novel yang ternyata sudah pernah dia baca
Saya ingat pernah melihat bot Markov chain di IRC pada pertengahan 2000-an
Sampai GPT muncul, belum ada yang lebih baik dari itu
Ini sebenarnya lebih dekat ke model trigram daripada Markov model
Jika diperluas ke 4-gram atau lebih, kalimat yang dihasilkan akan terasa jauh lebih alami
Dulu pernah ada riset model n-gram raksasa bernama “infini-gram”, dan saya dengar performanya pada beberapa domain mendekati LLM
Saya berterima kasih karena Anda membagikan pengalaman dan pemikiran selama 24 tahun ini
Di zaman sekarang yang dipenuhi konsumsi dan stimulasi seperti ini, berbagi dengan tulus seperti ini adalah hal yang istimewa