Страница 1 из 1

Выбор самых частых слов

СообщениеДобавлено: 08 дек 2009, 19:59
Zver
Нужна функция на пхп, которая будет выбирать из заданого текста самые часто встретающиеся слова, и выводить имено их. У меня даже нет предположений как это сделать :(

Re: Выбор самых частых слов

СообщениеДобавлено: 08 дек 2009, 20:30
Conteo
Слово "сортировка" о чем-нибудь говорит? Можно взять алгоритм быстрой сортировки из языка Си, только там рекурсия... В принципе алгоритмов сортировки много. Погугли.

Re: Выбор самых частых слов

СообщениеДобавлено: 08 дек 2009, 20:34
Alexsandrit
берём текст, разбиваем его по пробелам между слов, предваврительно вырезав знаки припенания. Всё это дело в массив, потом лучшее отсортировать, не сохраняя ключи а потом, создать ещё массивчик в который будем записывать слово и количесвто встреч и в этот массив перебором ключей будем плюсовать количество повторяющихся слов

Re: Выбор самых частых слов

СообщениеДобавлено: 08 дек 2009, 22:06
Zver
Так, ладно, с массивом разобрался.
Что мне теперь с ним делать, чтобы отсортировать значения по частоте использования?...

Re: Выбор самых частых слов

СообщениеДобавлено: 08 дек 2009, 23:17
Костик
забавную идейку задумал ))

только памяти пхп жрать будет прилично с массивами :pardon:

Re: Выбор самых частых слов

СообщениеДобавлено: 08 дек 2009, 23:21
Alexsandrit
Код: Выделить всёРазвернуть
<?php
function TagsGen($text, $max_results){
   $words = explode(' ', $text);      
   $trs = array(
             'А' => 'а',
             'Б' => 'б',
             'В' => 'в',
             'Г' => 'г',
             'Д' => 'д',
             'Е' => 'ё',
             'Ж' => 'ж',
             'З' => 'з',
             'И' => 'и',
             'Й' => 'й',
             'К' => 'к',
             'Л' => 'л',
             'М' => 'м',
             'Н' => 'н',
             'О' => 'о',
             'П' => 'п',
             'Р' => 'р',
             'С' => 'с',
             'Т' => 'т',
             'У' => 'у',
             'Ф' => 'ф',
             'Х' => 'х',
             'Ц' => 'ц',
             'Ч' => 'ч',
             'Ш' => 'ш',
             'Щ' => 'щ',
             'Ъ' => 'ъ',
             'Ы' => 'ы',
             'Ь' => 'ь',
             'Э' => 'э',
             'Ю' => 'ю',
             'Я' => 'я',
   );
   
   sort($words);

   

   $words = str_replace(',', '', $words);
   $words = str_replace('.', '', $words);
   $words = str_replace(array_keys($trs), array_values($trs), $words);
   $max=count($words);



$l=0;$i=0;
while($i<$max){@$ARRAY2[$words[$i]]=$ARRAY2[$words[$i]]+1;$i++;}


arsort($ARRAY2);
$ARRAY2=array_keys($ARRAY2);
for($i=0; $i<$max_results;$i++){
@$te.=$ARRAY2[$i].' ';
}
return $te;
}
$text = "Это тест тест тест тестовый тест тест тест, это функция должна подбирать часто встречающиеся слова и выводить их... Да, да, я сам в шоке...";   

echo TagsGen($text, 5);
?>

Re: Выбор самых частых слов

СообщениеДобавлено: 09 дек 2009, 15:10
Zver
Alexsandrit, огромное спасибо :)
Вот только как мне теперь добавить к каждому слову ссылку?
Я не дружу с preg_replace(), как не старался, не выходит :(

Re: Выбор самых частых слов

СообщениеДобавлено: 09 дек 2009, 17:44
Alexsandrit
@$te.='<a href="#">'.$ARRAY2[$i].'</a> ';