PDA

Просмотр полной версии : Заполнение meta-тега keywords автоматом.


Azazel
02.10.2007, 18:48
Вот, цитата с одного форума. Кто заполняет - тем должно пригодится.
Кто считает, что заполнять не надо, проходит мимо и в этой теме не флудит. ;)

Создавая новый php движок для своего сайта bodybilding.info, я, как и всегда не захотел выполнять нудную работу сам и поэтому такое ответственное задание как подбор ключевых слов к каждой странице сайта доверил php скрипту, который написал меньше чем за полчаса. Кстати, о подборе ключевых слов я уже писал раньше, но там все было реализовано совсем не так как здесь.
Конечно, многие могут возразить, что поисковики не учитывают мета теги keywords и description, и незачем голову морочить проблемой подбора ключевых слов, но учитывают или нет, это известно только администрации поисковых машин. В частности, я недавно проводил эксперимент, в котором участвовало три пары сайтов, на каждой паре сайтов был один и тот же контент, но на одном из сайтов каждой пары были прописаны keywords и description. И что вы думаете, через месяц, все три сайта с keywords и description были выше в выдаче Яндекса, чем их клоны без этих мета тегов. (Примечание: сайты были оптимизированы под абсолютно не конкурентные запросы и не имели бэклинков).

Принцип работы php скрипта, основной задачей которого является “на лету” подбирать к тексту ключевые слова (keywords), заключается в разбиении всего текста на слова и занесение их в массив. Из исходного текста сначала удаляются все знаки препинания, затем слова заносятся в массив и каждому слову присваивается число его повторений в тексте. После заполнения массива слова сортируются по количеству повторений, и в качестве результатов берется верхушка массива – 15-25 самых часто употре***емых слов.

А вот и исходный код этого php скрипта для подбора ключевых слов:
<?php
class Counter
{
var $origin_arr;
var $modif_arr;
var $min_word_length = 3;

function explode_str_on_words($text)
{
$search = array ("'ё'",
"'<script[^>]*?>.*?</script>'si", // Вырезается javascript
"'<[\/\!]*?[^<>]*?>'si", // Вырезаются html-тэги
"'([\r\n])[\s]+'", // Вырезается пустое пространство
"'&(quot|#34);'i", // Замещаются html-элементы
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e");
$replace = array ("е",
" ",
" ",
"\\1 ",
"\" ",
" ",
" ",
" ",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text = preg_replace ($search, $replace, $text);
$del_symbols = array(",", ".", ";", ":", "\"", "#", "\$", "%", "^",
"!", "@", "`", "~", "*", "-", "=", "+", "\\",
"|", "/", ">", "<", "(", ")", "&", "?", "¹", "\t",
"\r", "\n", "{","}","[","]", "'", "“", "”", "•",
"как", "для", "что", "или", "это", "этих",
"всех", "вас", "они", "оно", "еще", "когда",
"где", "эта", "лишь", "уже", "вам", "нет",
"если", "надо", "все", "так", "его", "чем",
"при", "даже", "мне", "есть", "раз", "два",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
);
$text = str_replace($del_symbols, array(" "), $text);
$text = ereg_replace("( +)", " ", $text);
$this->origin_arr = explode(" ", trim($text));
return $this->origin_arr;
}

function count_words()
{
$tmp_arr = array();
foreach ($this->origin_arr as $val)
{
if (strlen($val)>=$this->min_word_length)
{
$val = strtolower($val);
if (array_key_exists($val, $tmp_arr))
{
$tmp_arr[$val]++;
}
else
{
$tmp_arr[$val] = 1;
}
}
}
arsort ($tmp_arr);
$this->modif_arr = $tmp_arr;
}

function get_keywords($text)
{
$this->explode_str_on_words($text);
$this->count_words();
$arr = array_slice($this->modif_arr, 0, 30);
$str = "";
foreach ($arr as $key=>$val)
{
$str .= $key . ", ";
}
return trim(substr($str, 0, strlen($str)-2));
}
}
?>
Пользоваться данным php классом очень просто, создаете экземпляр класса функцией new а потом вызываете внутреннюю функцию get_keywords(), класса Counter. Вот пример использования этого класса:
$word_counter = new Counter();
if (strlen($content)>50000)
{
$keywords = $word_counter->get_keywords(substr($content, 0, 50000));
}
else
{
$keywords = $word_counter->get_keywords($content);
}
В переменной $content должен содержатся основной текст страницы, для которой создаются ключевые слова. И еще, полученная строка содержит только ключевые слова, без мета тегов. Скачать данный php класс для подбора ключевых слов в zip архиве вы можете здесь: _ttp://wm-help.net/download/php-keywords.zip

XeRoMaN
03.10.2007, 00:30
Интересно, интересно... Надо будет попробовать на досуге, потом отпишусь, как все сделаю.

kop
03.10.2007, 11:52
Azazel, знали бы вы, насколько вовремя вы выложили эту статью! Я как раз искал что-нибудь подобное. Спасибо.:)

Media
03.10.2007, 11:56
прямо таки искуственный интелект для генератора доров )

Azazel
03.10.2007, 21:00
Azazel, знали бы вы, насколько вовремя вы выложили эту статью! Я как раз искал что-нибудь подобное. Спасибо.:)
Гы, для спасибо есть хорошая кнопка ;)

XeRoMaN
04.10.2007, 00:56
Гы, для спасибо есть хорошая кнопкаРади такого грех не нажать ;)

По сабжу: скрипт и вправду работает, вот только повтор ключевиков в файле выхода обнаружился... аж 3 раза слово "клуб" выскочило..
З.Ы.: Скрипт тестил не я (я в этих делах неоч понимаю), пришлось попросить знакомого кодера все это проверить, когда он мне это объяснит - постараюсь дать ответ отчего так происходит (или это только у меня? О_о)

kop
04.10.2007, 14:47
Ради такого грех не нажать ;)

По сабжу: скрипт и вправду работает, вот только повтор ключевиков в файле выхода обнаружился... аж 3 раза слово "клуб" выскочило..
З.Ы.: Скрипт тестил не я (я в этих делах неоч понимаю), пришлось попросить знакомого кодера все это проверить, когда он мне это объяснит - постараюсь дать ответ отчего так происходит (или это только у меня? О_о)

Ждём подробного отчёта о поиске ошибки в коде,и методах её устранения.;)

Media
04.10.2007, 23:01
зачем Вам это вообще? сайты надо делать для людей, как и заголовки

kop
05.10.2007, 00:01
зачем Вам это вообще? сайты надо делать для людей, как и заголовки

Обычные сайты да. А как насчёт автоматически генерируемых страниц? Или сайтов с пользовательским контентом? Что, самому на каждой странице keywords придумывать и прописывать?

zhuk
05.10.2007, 01:03
скрипт безусловно нужный, следующим этапом логично было бы сделать скрипт пишущий сам в мета тег дескрипшин :) а потом и сам сочиняющий статьи :)
а вообще описанная метода является как бы "частным случаем" из описанного в статье "Поиск в Интернете -- внутри и снаружи" Артема Попова, ссылку не даю, кому надо тот сам найдет, имхо там более универсальный и правильный подход хотя и очень похож на этот. Для дорвеев и проектов которые делаются на скорую руку пойдет и это конечно.

P.S. и стоп слов мало удаляется, их список намного больше

Azazel
05.10.2007, 01:56
НУ не исключено, что автор прочитал статью, и накатал свой упрощенный скрипт ;)

Media
07.10.2007, 01:53
Обычные сайты да. А как насчёт автоматически генерируемых страниц? Или сайтов с пользовательским контентом? Что, самому на каждой странице keywords придумывать и прописывать?
да, не подумал, спасибо кстати за хорошую идею с пользовательским контентом

zhuk
10.10.2007, 22:30
да на любых сайтах эта возможность будет только экономить время, кстати автоматом дескрипшн заполнить тоже есть возможность и... реализовать осталось :)

Azazel
11.10.2007, 00:07
Дескрипшн-дескрипшну рознь. Но можно и автоматом ;)

Oleg
11.10.2007, 00:18
Дескрипшн-дескрипшну рознь. Но можно и автоматом ;)

Лучше не надо. Есть вероятность, что дескрипшн в виде сниппета в серпе появится;)

XeRoMaN
11.10.2007, 01:55
Отписываюсь: ошибку вроде не нашли, а причину повтора так понять и неможем... Такое повторение проявлялось еще с несколькими словами, как и почему это происходит - хз...

zhuk
12.10.2007, 00:23
на счет повторений - на мой взгляд повторения возникают (если вообще возникают, странно вообще :) ) в функции explode_str_on_words которая слова выделяет из исходного текста, возможно вышеупомянутое "клуб" было написано в нескольких местах текста по разному ("клуб" и "клуб\n\t" или еще чего) вообщем видать что то не учел автор, ну или вы при тесте ошиблись как то.
P.S.: потестил сам - все работает, только вот например для этой страницы кеи получились "azazel, xeroman, seo, Регистрация, Сообщения, kop, keywords, Репутация, Посмотреть, профиль, menu, user, Отправить, личное, сообщения" :)))

Rambler's Top100