Twitter BOT開発日記 Part4

マルコフ連鎖アルゴリズムの構築、2語の接頭語と1語の接尾語からなる3階層マルコフ連鎖が一般的とされてます。しかし、どうもこれだとTwitterにおけるマルコフBOTには適していないのです。3語の接頭語と1語の接尾語という組み合わせだと、元の文章とほぼ変わらないものが出来上がるし…はて、どうしたものか、と悩みながらこんなの書きました。

<?php
// $markov{接頭語前}{接頭語後}[no]={接尾語前} の形式
for ($i = 4 ; $i < count($words) ; $i++) {
	if ($i < count($words)) {
		$markov{$words[$i-3]}{$words[$i-2]}{$words[$i-1]}[] = $words[$i];
	}
}
// $markov2{接頭語後}{接尾語前}[no]={接尾語後} の形式
for ($i = 6 ; $i < count($words) ; $i++) {
	if ($i < count($words)) {
		$markov2{$words[$i-3]}{$words[$i-2]}{$words[$i-1]}[] = $words[$i];
	}
}

(追記)

書き直しました。3階層マルコフ連鎖テーブル改良版です。