Простой генератор текстов, Гугл + Марков

August 11, 2007
<?
/*********************************

Text Generator v 0.00002
Сделал nevitas.
ICQ 212928653.
Сначала парсит и скачивает первую десятку гугла,
потом на ее основе генерит
нужное кол-во страниц цепями Маркова.

Пример использования - example.php.

Удачной генерации.
*********************************

/
Error_Reporting(E_ALL & ~E_NOTICE);
class textGenerator
{

/*********************************

Эта функция отвечает за закачку заданного списка
URL с веба. Можете ее править по своим нуждам
(делать через неблокирующие сокеты, если cURL на сервере нет, например)
*********************************

/
function download($urllist)
{
$mh = curl_multi_init();

foreach ($urllist as $i => $url)
{
$conn[$i]=curl_init($url);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn[$i],CURLOPT_FOLLOWLOCATION,1);
curl_setopt($conn[$i],CURLOPT_MAXREDIRS,2);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($conn[$i],CURLOPT_HEADER,0);
curl_multi_add_handle ($mh,$conn[$i]);
}

do
{
$n = curl_multi_exec($mh,$active);
}
while ($active);

foreach ($urllist as $i => $url)
{
$con = curl_multi_getcontent($conn[$i]);
$res[$i]= $con;
// file_put_contents("debug/$i.html",$con);
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
   return $res;
}

/*********************************

Эта функция парсит URL с первой страницы гугла по данном запросу.
И качает их функцией download.
*********************************

/
function parse_texts($q)
{
$q = urlencode($q);
$q = ‘http://www.google.com/search?q=‘.$q;
$goo = file_get_contents($q);
$regexp = ‘/<a href=\"?([^\s\"]+)\"? class=l>/’;
preg_match_all($regexp,$goo,$res);
$urllist = array();
for ($i = 0; $i<count($res[1]); $i++)
{
$urllist[] = $res[1][$i];
}

$ar = $this->download($urllist);
// var_dump($urllist);
return $this->clear_up_texts($ar);
}

/*********************************

Эта функция чистит массив с текстами от тегов для оформления текста.
Чтобы из него выжать как можно больше именно текста, подходящего для источника
генерации.
*********************************

/

function clear_up_texts($texts)
{
$tags = array(’A', ‘ABBR’, ‘ACRONYM’, ‘ADDRESS’, ‘AREA’, ‘B’, ‘BDO’, ‘BIG’, ‘BLOCKQUOTE’, ‘BR’, ‘CITE’, ‘CODE’, ‘DEL’, ‘DFN’, ‘EM’, ‘EMBED’, ‘H1′, ‘H2′, ‘H3′, ‘H4′, ‘H5′, ‘H6′, ‘HR’, ‘I’, ‘IMG’, ‘INS’, ‘LI’, ‘MAP’, ‘MARQUEE’, ‘OL’, ‘P’, ‘PRE’, ‘Q’, ‘SAMP’, ‘SMALL’, ‘SPAN’, ‘STRONG’, ‘FONT’, ‘SUB’, ‘SUP’, ‘UL’, ‘VAR’, ‘TT’);

$res = array();
foreach ($texts as $con)
{
$con = html_entity_decode($con);
foreach ($tags as $tag)
{
$regexp = "/<\/?".$tag."[^>]*>/i";
$con = preg_replace($regexp,"",$con);
}
$regexp = "/<head.+<\/head>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/<script[^<]+<\/script>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/<style[^<]+<\/style>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/\s+/";
$con = preg_replace($regexp," ",$con);
$con = strtolower($con);
$res[] = $con;
}
return $res;
}

/*********************************

Эта функция собственно генерить тексты из массива исходных текстов.
*********************************

/

function generate($data, $words_co,$pages_co)
{
$result = array();
$content = "";

foreach ($data as $con)
{
$regexp = "/<[^>]+>/";
$res = preg_split($regexp,$con);
$m = 0;
foreach ($res as $kusok)
{
if (strlen($kusok)>$m)
{
$m = strlen($kusok);
$ms1 = $kusok;
}
}
$m = 0;
foreach ($res as $kusok)
{
if ((strlen($kusok)>$m)&&($kusok!=$ms1))
{
$m = strlen($kusok);
$ms2 = $kusok;
}
}
$itog = strtolower("$ms1 $ms2");
$content.="$itog ";
}
$regexp = "/[^a-z0-9]+/";
$content = preg_replace($regexp," ",$content);
$regexp = "/\s+/";
$temp = preg_split($regexp,$content);
$words = array();
for ($i = 0; $i<count($temp)-1; $i++)
{
if (!$words[$temp[$i]]) $words[$temp[$i]] = array();
$words[$temp[$i]][] = $temp[$i+1];
}

for ($i = 0; $i<$pages_co; $i++)
{
$r = rand(0,count($temp));
$w = $temp[$r];
$con = "";
for ($j = 0; $j<$words_co; $j++)
{
$r = rand(0,count($words[$w])-1);
$word = $words[$w][$r];
$w = $word;
$capit = false;
$r = rand(0,1000);
if (($r>100)&&($r<180)) $capit = true;
if ($capit)
{
$con.=".";
$word[0] = strtoupper($word[0]);
}
$con.=" $word";
}
$result[] = $con;
}
return $result;
}

}

?>

 
 
 
 И пример использования:
 /*********************************
Text Generator v 0.00002
Сделал nevitas.
ICQ 212928653.

Файл - пример использования.
Использование: вызываете из своего скрипта функцию
$gen->generate(запрос_в_гугл,количество_слов_на_страницу,количество_страниц_необходимых);
Например:
$gen->generate("windows articles",300,5);
И эта функция возвращается массив с текстами нужной длины.
   Предварительно надо создать, естественно, объект $gen:
   $gen = new textGenerator();

Т.о. пример вернет массив из 5-ти элементов по 300 слов в каждом элементе.
*********************************

/

include(’textgenerator.class.php’);
$gen = new textGenerator();
$data = $gen->parse_texts("windows article");
$texts = $gen->generate($data,500,5);

foreach ($texts as $text)
{
echo $text;
echo "<br><hr><br>";
}

 
 
 http://www.umaxforum.com/topic/3/23092/

Про блоггер

С неуникальностью можно бороться путем более быстрого перехвата сообщений из форумов. Поисковые боты тупые и медлительные, а мы можем просто подписаться на тему (на форуме например) и ждать сообщений, и как только оно появится тут же перекидывать его на блог, мы будем явно быстрее поисковиков. Тем более что блоггер вообще воспринимает постинг через мыло, т.е. можно сделать моментальный редирект нового сообщения в блог.
Эта вещь обгонит любой поисковик и у нас будет автозаполнение блога практически в реальном времени уникальным контентом. При желании можно сделать ручное модерирование сообщений или настроить фильтры.
Насчет менталитета не понял. Можно подбирать хоршие и горячие тематики, при чем на ходу заменять некоторые фразы рейтинговыми кэйвордами. С форумами еще плюс, что можно отбирать темы с наибольшим коичеством просмотров, что обуславливает их рейтинг