形態素解析をしてそれを辞書に登録し、辞書を元に作文を行います。
3) array_shift($tmp); set_word($dic, $tmp); if ($w == "。 "){ $tmp = ["@"]; continue; } } return $dic; } // 辞書に単語を登録 function set_word(&$dic, $tmp){ $w1 = $tmp[0]; $w2 = $tmp[1]; $w3 = $tmp[2]; if (empty($dic[$w1])) $dic[$w1] = []; if (empty($dic[$w1][$w2])) $dic[$w1][$w2] = []; if (empty($dic[$w1][$w2][$w3])) $dic[$w1][$w2][$w3] = 0; $dic[$w1][$w2][$w3]++; } // 辞書から作文する function make_sentence($dic, $count){ $ret = []; for ($i = 0; $i < $count; $i++){ $top = $dic["@"]; if (!$top) break; $w1 = choice_word($top); $w2 = choice_word($top[$w1]); $ret[] = $w1; $ret[] = $w2; for (;;) { $w3 = choice_word($dic[$w1][$w2]); $ret[] = $w3; if ($w3 == "。")break; $w1 = $w2; $w2 = $w3; } } return implode("", $ret); } function choice_word($o){ if (!is_array($o)) return "。 "; $ks = array_keys($o); return $ks[mt_rand(0, count($ks)-1)]; }