これはScalaで書かれたわずかに洗練された単語ベースのアルゴリズムで、任意の長さの単語シーケンスの確率を考慮に入れています。(これは元の分離されたプレスアルゴリズムではありません。)
アルゴリズムは次のとおりです。各ステップで、ランダムな位置から始まるテキストのローリング半分を選択し、その半分(これは0ワードかもしれません)で発生する出力ワードの最長テールシーケンスを検索し、次のワードを出力します。
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("")(_ + " " + _))
以下は、markovチェーンに関するウィキペディアの記事から生成されたサンプル出力です。
今日、定常分布は一意ではありませんI確率kの右矢印位置を満たします遷移確率分布は、ユニットのシステムのパラメータでのみマッピングを表すことができます。nが一意である場合、定常分布または不変測度のi Qの定常分布を満たします。
ちなみに、"[a-zA-Z .,!?]".r
as wordregex
を使用して、これを使用して文字ベースの分離されたプレスも生成できる場合:
この比urまたは期間は、ミスター・ピマトランシーの休息クラスが開き、nnnがシステム状態に必要であるとエラーが発生し、すべてのタスクをリンポする場合に、StochのPater ext状態のバックグロバビリティがかなりの数になります。
Jargonファイルのような大きなテキストファイルでは、非常に興味深いものになります。今、手紙ベースはすでにかなり良いです:
他の方向アルゴリズムでは、エラーが発生することがありますが、珍しいことです。それは「プロムであり、LISP Macプレインターネットアクセスワークステーションを中心に構築された数十年のメタロケーションハックを省略したものです。これは死んでいるかもしれません。ネット上で、特にネットワークから遭遇します。通常、「顧客とチャドで紙に戻ります。いくつかのユニークな特性がありました。
ワードベースは非常に面白いものになります。
これはその後報告されています。1つのリソースリークnが予想される唯一のもの。そもそも調整できないため、一貫性のない半神話的な言語構成体。あなたが遊び心のあるコンピュータを入力し、終了した場合は、実際のコンピュータを入手してください!imp。トーキングと言う皮肉な誘い。小さなケーブルは実際のプログラミングのせいだ。10年後のパスカルですが、製品の大部分はまったく同じ最新のサブシェルではありません。このエントリーがみんなの母親であるかどうかに若干の論争があります。