Ключевые слова. Скрипт генерации ключевиков.


Пол дня искал в архивах собственноручно разработанные функции обработки текста. Всё это было в 1 варианте этого блога, содержимое которого благополучно сдохло вместе с 3FN. Что бы не терялось:

function keyword($text,$lenkey,$kolkey) 
{
$text=strtolower(strip_tags($text));//удаляем таги и все в нижний регистр
preg_match_all("/[а-я]{".$lenkey.",}+/is",$text,$word);
$return=array_flip(array_count_values ($word[0]));//получаем слова и частоту, меняем местами ключ-значение
krsort($return);//сортируем по убыванию
$return = array_slice ($return, 0,$kolkey);//отрезаем верхушку массива
return $return;
}

Пользоваться так:

$rezult=keyword($text,6,10);

6-минимум символов в ключевике
10-ключевиков
$rezult- массив ключей

$rezult=keyword($text,6,10);
$rezult_keyword=implode(", ",$rezult);

$rezult_keyword- слова через запятую

Метки:

11 комментариев на “Ключевые слова. Скрипт генерации ключевиков.”

  1. m$earcher пишет:

    Функция, существующая в данном виде, корректно работает только в том случае, если количество ключевиков в тексте разное. То есть если в тексте слова-1 – 5 штук, слова-2 – 4 штуки, слова-3 – 3 штуки и т. д. (особенности функции array_flip()). Если количество ключевиков совпадает (очень часто, так как количество ключевиков в русском тексте обычно невелико из-за различных окончаний одного и того же слова), например, 3-4 повторения нескольких ключевиков, то в результате получаем не наиболее часто используемые слова в тексте, а следующее распределение: допустим найдено 3 слова-1, 3 слова-2, 2 слова-3, 2 слова-4, 1 слово-5, то получаем – слово-2, слово-4, слово-5 (вместо слово-1, слово-2, слово-3). Получается немного запутанно :)
    В общем я предлагаю заменить следующие строки:


    $return=array_flip(array_count_values ($word[0]));
    krsort($return);
    $return = array_slice ($return, 0,$kolkey);

    на


    $return = array_count_values($word[0]);
    arsort($return);
    $return = array_slice($return, 0, $kolkey);
    $return = array_keys($return);

    А заодно и в регулярке заменить “[а-я]” на “[а-яa-z]” для большей универсальности – работы с англоязычными кейвордами.

    Кстати, где-то валялся архивчик старого сайта. По крайней мере посты. Если нужно – могу скинуть… ;)

  2. Administrator Bitman пишет:

    Спасибо, m$earcher!
    Действительно моя функция кривая.
    Правильней:

    function keyword($text,$lenkey,$kolkey)
    {
    $text=strtolower(strip_tags($text));
    preg_match_all(“/[а-я]{“.$lenkey.”,}+/is”,$text,$word);

    $return = array_count_values($word[0]);
    arsort($return);
    $return = array_slice($return, 0, $kolkey);
    $return = array_keys($return);

    return $return;
    }

  3. Administrator Bitman пишет:

    m$earcher, если не сложно, то скиньте что осталость от былого на aquamiry@tut.by

  4. Arboleda пишет:

    Действительно молодец! Поддерживаю! :)

  5. Silknet пишет:

    Благодарю!!!У Вас часто появляются очень интересные посты! Очень поднимаете мое настроение.

  6. Feminissimo пишет:

    Было бы интересно узнать поподробнее может у вас есть ещё что не выложили тут буду ждать обновлений.

  7. Proactolmart пишет:

    ЭТО СУПЕР СПАСИБО ОГРОМНОЕ

  8. RekoD пишет:

    Спасибо – очень помогло!

  9. Сергей пишет:

    Отличный скрипт!

  10. Letitia пишет:

    Hats off to whoever wrote this up and potesd it.

  11. Laticia пишет:

    Artilecs like this really grease the shafts of knowledge.

Оставить комментарий

CAPTCHA image