2 poin oleh GN⁺ 2025-12-15 | 1 komentar | Bagikan ke WhatsApp
  • 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
Iklan

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
    Iklan
  • 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

 
GN⁺ 2025-12-15
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 penasaran apa yang dimaksud dengan “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

    • Saya juga pernah mencoba hal serupa, dan hasilnya setengah omong kosong yang lucu, setengah lagi salinan mentah dari teks asli
      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
    • Untuk menghindari hasil yang ‘kering’, kuncinya adalah menyesuaikan batas 5 kata secara fleksibel
      Jika hanya ada satu jalur yang mungkin, misalnya diturunkan menjadi 4 kata
    • Melihat hasil seperti ini memberi kesan seram, seolah ada sesuatu yang sedang mencoba berkomunikasi
      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

    • Saya penasaran apakah Anda pernah ikut NaNoGenMo
      Bereksperimen dengan korpus seperti ini sepertinya bisa jadi proyek yang cukup menarik
    • Saya juga pernah melatih model Markov pada 20 ribu tweet saya pada tahun 2015 dan membuat bot Twitter
      Ada juga video presentasi
    • Saya juga punya 30 tahun draf novel yang belum selesai, dan rasanya menarik kalau dijalankan dengan cara seperti ini
    • Saya ingat Terry Davis juga pernah mencoba hal serupa
    • Saya penasaran bagaimana cara melakukan hal seperti ini dengan LLM
      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

    • Saya tidak tahu kenapa orang ingin membaca hal seperti itu
      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

    • Tetapi saya tidak yakin apakah hasilnya benar-benar bisa dibedakan
      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

    • Mungkin yang dimaksud adalah MegaHAL atau Cobe yang muncul sedikit belakangan
    • Saya juga pernah membuatnya sendiri dengan bitlbee pada era 2000-an, masa yang benar-benar menyenangkan
  • 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