Advertisement
Guest User

Untitled

a guest
Oct 8th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. <?php
  2.  
  3. //first attempt at a markov chain, never did get it working perfectly on probablities but it's something i'll come back to.
  4.  
  5.  
  6. $word_list = explode(" ",file_get_contents("test.txt"));
  7. $word_list = clean_word_list($word_list);
  8. $tree = create_wordtree($word_list);
  9. $seed = array_rand($tree);
  10. $words = 50;
  11. $sentence = create_markov_sentence($seed,$words,$tree);
  12. $sentence = ucfirst($seed)." ".$sentence;
  13. echo $sentence.'<br/>';
  14. echo "<pre>";
  15. print_r($tree);
  16. echo "</pre>";
  17.  
  18. function clean_word_list($word_list){
  19. for($i=0;$i<count($word_list);$i++){
  20. $cur_word = preg_replace("/[^a-zA-Z 0-9 , . ']+/", "", $word_list[$i]);
  21. if(!empty($cur_word)){
  22. $word_list[$i] = $cur_word;
  23. }
  24. }
  25. return($word_list);
  26. }
  27.  
  28. function create_wordtree($word_list){
  29. $tree = array();
  30. $word_size = count($word_list);
  31. for($i=0;$i<$word_size;){
  32. $root = $word_list[$i];
  33. $keys = array_keys($word_list,$root);
  34. foreach($keys as $key=>$num){
  35. $tree[$root][] = $word_list[$num+1];
  36. }
  37. $tree[$root] = array_unique($tree[$root]);
  38. $i++;
  39. }
  40. return $tree;
  41. }
  42.  
  43. function create_markov_sentence($seed,$words,$tree){
  44. if($tree[$seed]){
  45. for($i = 0;$i<$words;$i++){
  46. $random_seed = array_rand($tree[$seed]);
  47. if($tree[$seed][$random_seed]){
  48. $results .= ' '.$tree[$seed][$random_seed];
  49. $seed = $tree[$seed][$random_seed];
  50. }
  51. else{
  52. $results .= "";
  53. }
  54. }
  55. return $results;
  56. }
  57. else{
  58. return false;
  59. }
  60. }
  61.  
  62. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement