При работе автоматических парсеров, возникает естественная необходимость подобрать к тексту его ключевые слова. Это необходимо для поисковой оптимизации статьи.
К примеру мы спарсили объявление с доски, в нем продается Apple Iphone 4s, подержанный. Небольшой текст описания с характеристиками и цена.
Из этого текста необходимо выделить ключевые слова. Заполнять их при автоматическом парсинге будет накладно. Поэтому нужно использовать скрипты для выборки ключевых слов.
Для начала, нужно составить список всех слов употребляемых в тексте, с сортировкой по частоте их употребления. Откинув короткие слова (меньше 5-ти знаков) и различные вспомогательные части речи, типа местоимений и наречий.
Когда-то давно, для разработки сайтов я использовал Danneo CMS. Так вот, в ней была великолепная функция выделения ключевых слов в тексте. Только ради этого, скачал новую версию Danneo, она кстати обновилась до версии 0.5.5
Вот эта функиця
function seokeywords($contents,$symbol=5,$words=35){
$contents = @preg_replace(array("'<[\/\!]*?[^<>]*?>'si","'([\r\n])[\s]+'si","'&[a-z0-9]{1,6};'si","'( +)'si"),
array("","\\1 "," "," "),strip_tags($contents));
$rearray = array("~","!","@","#","$","%","^","&","*","(",")","_","+",
"`",'"',"№",";",":","?","-","=","|","\"","\\","/",
"[","]","{","}","'",",",".","<",">","\r\n","\n","\t","«","»");
$adjectivearray = array("ые","ое","ие","ий","ая","ый","ой","ми","ых","ее","ую","их","ым",
"как","для","что","или","это","этих",
"всех","вас","они","оно","еще","когда",
"где","эта","лишь","уже","вам","нет",
"если","надо","все","так","его","чем",
"при","даже","мне","есть","только","очень",
"сейчас","точно","обычно"
);
$contents = @str_replace($rearray," ",$contents);
$keywordcache = @explode(" ",$contents);
$rearray = array();
foreach($keywordcache as $word){
if(strlen($word)>=$symbol && !is_numeric($word)){
$adjective = substr($word,-2);
if(!in_array($adjective,$adjectivearray) && !in_array($word,$adjectivearray)){
$rearray[$word] = (array_key_exists($word,$rearray)) ? ($rearray[$word] + 1) : 1;
}
}
}
@arsort($rearray);
$keywordcache = @array_slice($rearray,0,$words);
$keywords = "";
foreach($keywordcache as $word=>$count){
$keywords.= ",".$word;
}
return substr($keywords,1);
}
из выше набранного текста функция выдает вот такой набор
array,rearray,contents,keywordcache,слова,keywords,слов,adjectivearray,symbol,replace,words,этого,вот,
Danneo,тексте,функция,нужно,ключевых,foreach,текста,ключевые,substr,необходимо,adjective,выдает,
была,великолепная,выделения,скачал,ради,Только,ней,набранного,набор,давно
не плохо ни правда ли?!
Дальше, можно поступить следующим образом: просеять все эти слова по базе заведомо подготовленных ключевиков. И оставить только нужные. У меня такая база создавалась несколько лет вручную. Это база тегов, которыми подкрепляется каждая статья.
Так по ключевым словам можно легко восстановить информацию о статье. Т.е. поисковик будет иметь конкретное представление о том, что содержим Ваша страница. Подобно тому, как service812.ru восстанавливает данные с Вашего винчестера, по крупицам и фрагментам.


Комментарии