При работе автоматических парсеров, возникает естественная необходимость подобрать к тексту его ключевые слова. Это необходимо для поисковой оптимизации статьи.
К примеру мы спарсили объявление с доски, в нем продается 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 восстанавливает данные с Вашего винчестера, по крупицам и фрагментам.
Комментарии