prepared[$prefix][] = $sentens[$j][$i+1]; } } $keys = array_keys($this->prepared); foreach ($keys as $key) { $this->prepared[$key] = array_unique($this->prepared[$key]); } } function GenerateText($size) { $result_count = 0; for ($j=0; $result_count < $size; ++$j) { $prev = array_rand($this->prepared); $num = mt_rand(5, 12); for ($i=0; $i<$num; ++$i) { $sents[$j][$i] = $prev; ++$result_count; $p = $this->prepared[$prev][mt_rand(0, count($this->prepared[$prev]) - 1)]; if ($p == '') $p = array_rand($this->prepared); $prev = $p; if ($prev == '') break 2; } } foreach ($sents as $sent) { $count_word=count($sent); if ($count_word<=2) continue; if (strlen($sent[$count_word-1]) < 4) unset($sent[$count_word-1]); $sent[$count_word-2] = rtrim($sent[$count_word-2], ",:;"); $sent[$count_word-1] = rtrim($sent[$count_word-1], ",:;"); $output .= ucfirst(implode(' ', $sent)).'. '; } $output = str_replace(' .', '.', $output); return $output; } } //Example //$source = file_get_contents("text.txt"); //$markov = new MarkovChains($source); //$result = $markov->GenerateText(500); //echo $result; ?>