Вычисляем плотность слов.

Недавно, во время работы над одним из своих проектов,  у меня возникла необходимость определить ключевые слова. Ну да, такая вот парадоксальная ситуация, когда ключевики неизвестны заранее, ну что же тут поделать. В общем, беглый взгляд на выдачу поисковика ничем меня не порадовал. В основном различные on-line сервисы, которые вычисляют плотность ключевых слов и даже фраз. Мне фразы не нужны были, хотелось простого результата, а именно: какие слова сколько раз встречаются в тексте. В то же время, не очень то хотелось прогонять свой уник по неизвестно каким сайтам и сервисам. Вот такая паранойя (будешь тут параноиком, когда речь идет о 250 тысячах знаков без пробелов).

Может, я плохо искал, но достойных программ, способных выполнить необходимые мне не сложные вычисления, я тоже с маху не нашел. И тут посетила меня простая мысль: а что если написать самому необходимый мне код? Тем более, что ничего сверхъестественного считать мне не нужно было. Сказано, сделано. Писать решил на php. Вот что получилось в результате.

<?php

\\ intext.txt – файл, содержащий анализируемый текст.

$f_text=”intext.txt”;

\\ функция для загрузки файла, с анализируемым текстом

function load_content_file($f_text) {

$hh = fopen($f_text, ‘r’);

$ret = fread($hh, filesize($f_text));

fclose($hh);

return $ret;

}

// читаем текст из файла в строку

$string = load_content_file($f_text);

// преобразуем все к нижнему регистру

$string = strtolower($string);

// парсим текст. В результате получаем массив, каждый элемент

//которого – одно слово

preg_match_all(“#\b(\w+)\b#”,$string,$out);

// определяем общее количество слов

$all_word=count($out[1]);

// определяем количество уникальных слов

// в результате получаем массив, каждый элемент которого – это количество

// повторений слова в анализируемом массиве, а ключ – само слово.

$ret = array_count_values($out[1]);

// сортируем массив по убыванию

arsort($ret,SORT_NUMERIC);

// выводим результаты на экран

echo “Всего слов “.$all_word.”<br>”;

foreach ($ret as $key=>$value) {

// каждая строка на экране результатов это:

// слово => количество вхождений : плотность

echo $key.” => “.$value.” : “.round($value/$all_word * 100,2) .”<br>”;

}

?>

Вот такой простенький получился код. Гуру прошу сильно не пинать, поскольку писалось под конкретные нужды. В результате не отфильтровываются различные предлоги, союзы, цифры. Но задача такая и не стояла. Главное, что наглядно видно, какие слова в тексте встречаются чаще всего и вычисляется их плотность. Проанализировав свой текст из 250 тысяч знаков, я довольно быстро выбрал десять ключевиков.

Если кому то пригодится данный код, хоть в оригинальном, хоть в переработанном виде, я буду только рад.

Один комментарий на “Вычисляем плотность слов.”

  • Вот нравится мне, когда люди могут доходчиво и на доступном языке донести свои мысли до читателей. Спасибо огромное. Я получил истинное удовольствие, читая Вас.

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

Я не гребучий роПат, отвИчаю!

Каталог статей

PR-CY.ru