Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //first attempt at a markov chain, never did get it working perfectly on probablities but it's something i'll come back to.
- $word_list = explode(" ",file_get_contents("test.txt"));
- $word_list = clean_word_list($word_list);
- $tree = create_wordtree($word_list);
- $seed = array_rand($tree);
- $words = 50;
- $sentence = create_markov_sentence($seed,$words,$tree);
- $sentence = ucfirst($seed)." ".$sentence;
- echo $sentence.'<br/>';
- echo "<pre>";
- print_r($tree);
- echo "</pre>";
- function clean_word_list($word_list){
- for($i=0;$i<count($word_list);$i++){
- $cur_word = preg_replace("/[^a-zA-Z 0-9 , . ']+/", "", $word_list[$i]);
- if(!empty($cur_word)){
- $word_list[$i] = $cur_word;
- }
- }
- return($word_list);
- }
- function create_wordtree($word_list){
- $tree = array();
- $word_size = count($word_list);
- for($i=0;$i<$word_size;){
- $root = $word_list[$i];
- $keys = array_keys($word_list,$root);
- foreach($keys as $key=>$num){
- $tree[$root][] = $word_list[$num+1];
- }
- $tree[$root] = array_unique($tree[$root]);
- $i++;
- }
- return $tree;
- }
- function create_markov_sentence($seed,$words,$tree){
- if($tree[$seed]){
- for($i = 0;$i<$words;$i++){
- $random_seed = array_rand($tree[$seed]);
- if($tree[$seed][$random_seed]){
- $results .= ' '.$tree[$seed][$random_seed];
- $seed = $tree[$seed][$random_seed];
- }
- else{
- $results .= "";
- }
- }
- return $results;
- }
- else{
- return false;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement