Example #1
0
 public function testQuery()
 {
     $sentences = ['my blue car', 'red and blue flowers', 'his blue car'];
     $chain = new MarkovChain();
     foreach ($sentences as $sentence) {
         $tokens = explode(" ", $sentence);
         $chain->train($tokens);
     }
     $this->assertEquals(['car' => 0.66666666666667, 'flowers' => 0.33333333333333], $chain->query("blue"));
 }
if (isset($argv[3])) {
    if (is_numeric($argv[3])) {
        $degree = intval($argv[3]);
    } else {
        $start = $argv[3];
    }
    if (isset($argv[4])) {
        if (is_numeric($argv[4]) && !isset($degree)) {
            $degree = intval($argv[4]);
        } else {
            $start = $argv[4];
        }
    }
}
if (!isset($degree)) {
    $degree = 1;
}
if (!isset($start)) {
    $start = HMM_START_TOKEN;
}
if (!is_readable($train)) {
    die("Training file <{$train}> is not readable.");
}
$string = file_get_contents($train);
$mm = new MarkovChain();
$mm->train($string, $degree);
$generated = $mm->generate($length, $start);
while ($generated[0] == HMM_START_TOKEN) {
    array_shift($generated);
}
echo "\n" . implode("", $generated);