Berikut ini adalah algoritma berbasis kata yang sedikit lebih canggih yang ditulis dalam Scala , yang memperhitungkan kemungkinan urutan kata dengan panjang yang sewenang-wenang. (Itu bukan algoritma pers terdisosiasi asli .)
Algoritma adalah sebagai berikut. Di setiap langkah pilih setengah bergulir dari teks mulai dari posisi acak, cari urutan ekor terpanjang dari kata-kata output yang terjadi di setengah itu (ini mungkin 0 kata) dan hasilkan kata berikutnya.
import io._, collection.mutable.ArrayBuffer, util.Random
import java.io.FileInputStream
val lines = new BufferedSource(new FileInputStream("markov.txt")) getLines
val wordregex = "\\b[a-zA-Z]+\\b|[.,?!]".r
val words = lines flatMap (wordregex findAllIn _) toArray
val rollingwords = words ++ words.slice(0, words.length / 2)
val rnd = new Random()
val outwords = new ArrayBuffer[String]()
for (i <- 1 to 1000) {
val startposition = rnd nextInt (words.length * 2 / 3)
val half = rollingwords slice (startposition, startposition + words.length / 3)
var newword = ""; var n = 0; var index = 0
while (index >= 0 && n < half.length && n < outwords.length) {
index = half.indexOfSlice(outwords.takeRight(n))
if (index >= 0 && index < half.length - n) {
newword = half(index + n)
}
n = n + 1
}
outwords += newword
}
println(outwords.foldLeft("")(_ + " " + _))
Berikut adalah contoh keluaran yang dihasilkan dari artikel wikipedia di rantai markov:
distribusi stasioner hari ini tidak akan menjadi unik I probabilitas memenuhi posisi kanan k bukan distribusi probabilitas transisi dapat diwakili pemetaan hanya jika parameter pada unit sistem, Memungkinkan n untuk menjadi unik, dalam i dalam distribusi stasioner atau ukuran invarian jika memenuhi distribusi stasioner untuk Q.
By the way, jika Anda menggunakan "[a-zA-Z .,!?]".r
sebagai wordregex
Anda dapat menggunakan ini untuk menghasilkan surat berdasarkan press dipisahkan juga:
Ini adalah periode atau periode ketika backgrobability Pater ext state dengan stochare sejumlah detelemely jika ada kelas dimana Mi pimatransie, membuka bahwa kebutuhan yang dibutuhkan oleh suatu state system adalah errords, maka libatkan semua tugas.
Menjadi sangat menarik dengan file teks besar seperti file Jargon . Sekarang berbasis surat sudah cukup baik:
Algoritma arah lain dengan senang hati akan kesalahan, dan tidak biasa; ini adalah singkatan untuk "keluar menjadi prom, dan peretasan meta-location dengan puluhan tahun dibangun di sekitar workstation akses pra-Internet LISP Mac. Ini mungkin sudah mati. Sejumlah pesaing, kompiler populer berakhir berulang kali ke detik, dan telah lintah. diatur dengan ditemui di internet, terutama dari jaringan. Biasanya `pelanggan dan pada chad itu kembali ke atas kertas. Beberapa memiliki sifat unik.
Wordbased menjadi sangat menghibur:
Sejak ini telah dilaporkan. Satu-satunya hal yang diharapkan terjadi kebocoran sumber daya n. Bahasa semi - mistis mengkonstruksikan tidak konsisten karena tidak dapat menyesuaikan sejak awal. Jika Anda memasukkan komputer di playful dan berakhir Dapatkan komputer nyata! imp. Undangan sarkastik untuk mengatakan Berbicara. Kabel kecil disalahkan untuk pemrograman nyata. Pascal sepuluh tahun kemudian, tetapi sebagian besar produk kami tidak persis subkulit modern yang sama. Ada beberapa perselisihan tentang apakah entri ini ibu semua.