- Автор темы
- #1
Скрипт генерации текста по цепям маркова:
PHP:
<?
error_reporting(0);
$num_key=1000;
$fname="text.txt";
$input_text=implode("",file($fname));
$input_text=str_replace("/r/n","",$input_text);
$input_text=eregi_replace("([^[:blank:]])(\\- )","",$input_text);
$input_text=split("[[:blank:]]+",strtolower($input_text));
$a=mt_rand(0,count($input_text)-4);
$pr=trim($input_text[$a])." ".trim($input_text[$a+1]);
for ($a=0;$a<count($input_text)-4;$a++)$hash[trim($input_text[$a])." ".trim($input_text[$a+1])][]=trim($input_text[$a+2]);
while ($num_key>0){
$count=count($hash[$pr]);
$suff=mt_rand(0,$count-1);
$suffix=$hash["$pr"]["$suff"];
@$bred.= $suffix." ";
$temp=explode(" ",$pr);
$pr=array_pop($temp)." ".($suffix);
$num_key--;
}
echo $bred;
?>
PHP:
< ?PHP
$fp = fopen("C:/text.txt", "r");
$text = "";
while($string = fgets($fp)) {
$string = trim($string);
$text.=$string." ";
}
echo($text);
// echo "<БР>< ХР>“; // тут теги bр и hр, я заменил на русские, т.к. иначе они выполняются.
$maxgen = 1000;
$nonword = “\n”;
$w1 = $nonword;
$w2 = $nonword;
$words = explode(” “, $text);
foreach( $words as $word) {
$table[$w1][$w2][”suff”][] = $word;
$w1 = $w2;
$w2 = $word;
}
$table[$w1][$w2][”suff”][] = $nonword;
$w1 = $nonword;
$w2 = $nonword;
for($i = 0; $i < $maxgen; $i++) {
$suf = $table[$w1][$w2]["suff"];
$t = array_rand($suf);
if($suf[$t] == $nonword)
exit;
echo $suf[$t]." ";
$w1 = $w2;
$w2 = $suf[$t];
}
?>