Генератор keywords

JIEXA

Guest
Генератор keywords

Нет ли готового скрипта, который из текста уберал весь мусор, тоесть html теги, союзы, предлоги, слова короче 2 букв и т.д. Если есть скрипт, то дайте пожалуйста линк на него или просто напишите код скрипта. Спасибо.
 

nip

Guest
Написать его не сложно, но думаю для твоих целей он бесполезен.
Я так понимаю, тебе нужно составить кейворды для страниц своих автоматом?
 

ivan52

d-i-d grafix
мне кажется человеку нужет скрипт очищающий текст от хтмл
только для этого не хтмл нужен, а можно на js найти - например

frames.message.document.execCommand('RemoveFormat');

можно поискать в готовых порталах
 

nip

Guest
тут очень много граблей:
1-е не все кейворды одинаково полезны :)
2-е обычно читаются 100-256 первых символов кейвордов
...и остальное... (поищи статьи о раскрутке поймешь)
Чтобы учесть все вариации, нужно мега систему писать, а так если на результат поднаср*ть то можно:
1. тупо вычистить исходник от тегов,
2. удалить переносы и повторяющиеся пробелы
3. Пословно занести все слова в массив (проверяя есть ли они там уже) а еще лучше для каждого слова счетчик завести, дабы знать сколько у нас повторов одного слова на паге.
4. Отсортировать массив счетчиков по убыванию
5. Пословано перебирать осортированный массив и дописывать его в строку, пока она у нас не будет 100-256 символов вдлину :)

Интересная здачка, возможно набросаю для себя такую :)

Чуть не забыл, удалять придется наверное все кроме слов (знаки пунктуации и прочее) ;)
 

JIEXA

Guest
Раньше у меня было так:
PHP:
<?php
function dkeywords($keywords)
{
$keywords = strip_tags($keywords);
$keywords = trim($keywords);
$keywords = ereg_replace('("|\?|!|:|\.|\(|\)|;|\\\\)+', ' ', $keywords);
$keywords = str_replace('[', ' ', $keywords);
$keywords = str_replace(']', ' ', $keywords);
$keywords = str_replace('/', ' ', $keywords);
$keywords = str_replace('почему-то', ' ', $keywords);
$keywords = str_replace('тут', ' ', $keywords);
$keywords = str_replace('так', ' ', $keywords);
$keywords = str_replace('или', ' ', $keywords);
$keywords = str_replace('уже', ' ', $keywords);
$keywords = str_replace('эти', ' ', $keywords);
$keywords = str_replace('почему', ' ', $keywords);
$keywords = str_replace('после', ' ', $keywords);
$keywords = str_replace('когда', ' ', $keywords);
$keywords = str_replace('зачем', ' ', $keywords);
$keywords = str_replace('туда', ' ', $keywords);
$keywords = str_replace('было', ' ', $keywords);
$keywords = str_replace('вообщем', ' ', $keywords);
$keywords = str_replace('того', ' ', $keywords);
$keywords = str_replace('сделал', ' ', $keywords);
$keywords = str_replace('для', ' ', $keywords);
$keywords = str_replace('чтобы', ' ', $keywords);
$keywords = str_replace('ведь', ' ', $keywords);
$keywords = str_replace('можно', ' ', $keywords);
$keywords = str_replace('если', ' ', $keywords);
$keywords = str_replace('чего', ' ', $keywords);
$keywords = str_replace('потому', ' ', $keywords);
$keywords = str_replace('что', ' ', $keywords);
$keywords = str_replace('нет', ' ', $keywords);
$keywords = str_replace('наш', ' ', $keywords);
$keywords = str_replace('ваш', ' ', $keywords);
$keywords = str_replace('вашего', ' ', $keywords);
$keywords = str_replace('этой', ' ', $keywords);
$keywords = str_replace('будет', ' ', $keywords);
$keywords = str_replace('них', ' ', $keywords);
$keywords = str_replace('теперь', ' ', $keywords);
$keywords = str_replace('делать', ' ', $keywords);
$keywords = str_replace('через', ' ', $keywords);
$keywords = str_replace('лучше', ' ', $keywords);
$keywords = str_replace('сразу', ' ', $keywords);
$keywords = str_replace('нажимаешь', ' ', $keywords);
$keywords = str_replace('которая', ' ', $keywords);
$keywords = str_replace('каторая', ' ', $keywords);
$keywords = str_replace('новый', ' ', $keywords);
$keywords = str_replace('свой', ' ', $keywords);
$keywords = str_replace('', ' ', $keywords);
$keywords = ereg_replace('( |'.CHR(10).'|'.CHR(13).')+', ',', $keywords);
$keywords = substr($keywords,0,1600);
$keywords = array_unique (explode (",", $keywords));
for ($a=0,$b=7; $a < sizeof($keywords) && $b < 700; $a++) {
if ( ($c=strlen(@$keywords[$a])) > 2) {
@$key_words="".$key_words.", ".$keywords[$a].""; $b+=$c+2; }
}
$key_words=strtolower($key_words);
$key_words=substr($key_words, 2);
return $key_words;
}
?>
но меня это не устраевает
 

nip

Guest
Решил размяться перед сном, вот что получилось :)
Ну как я и говорил, получили не ключевые слова, а чато повторяющиеся на странице (и предлоги и меюдометия), конечно вычистилось по средствам увеличения проходной длины
слов, но это не совсем то, что нужно :(
PHP:
      $in = file("http://phpclub.ru");
      $in = implode("\n",$in);

      echo get_key_words($in);

# Собственно прописано функцией %)
function get_key_words($in){
      # Чистим код (можно изящнее, но лень)
      $in = strip_tags($in);
      $in = str_replace("\r"," ",$in);
      $in = str_replace("\n"," ",$in);
      $in = str_replace("&nbsp;"," ",$in);
      $in =   strtolower($in);


      # Убираем пробелы
      while (strpos($in,"  ") > -1){
             $in = str_replace("  "," ",$in);
      }

      # Получаем массив слов
      $in = explode(" ",$in);

     # Перебираем слова
      for ($i =0;$i<count($in);$i++){

          if (strlen($in[$i])>3){
            # Проверяем слова на спец символы (конечно хорошо бы пунктуацию учесть, но и так пайдет для примера)
             for($k=0;$k<strlen($in[$i]);$k++){
                     if (ord($in[$i][$k]) < ord("а") or ord($in[$i][$k]) > ord("я")){ # Пользуем только русские буквы (условия сам расширишь если надо будет)
                             $no = 1;
                     }
             }
             # Если слово нормальное, то записываем его в массив и увеличиваем счетчик
             if (!$no){
              $out[$in[$i]] = $out[$in[$i]] + 1;
             }
             $no = 0; # Сбрасываем индикатор
          }
      }
      arsort($out); # Сортируем массив по счетчикам)

      # Считываем массив в строку
      foreach ($out as $key => $value)
      {
          if (strlen($keywords)<=256){
             $keywords = $keywords.$key." ";
          }else{
             break;
          }
      }

      return $keywords;
}
-~{}~ 18.03.05 01:09:

Ой, не видел твоего поста, а что тебя в твоем не устраивает? Не пойму никак... Просто тема интересная, и куча литературы написана по этому поводу, хотелось бы иметь сведенные вместе требования, готов описать.
тк мне такой скриптик тоже нужен :)
 

JIEXA

Guest
Проблема в том, что предлоги и союзы будут в keywords, а это совсем не к месту. Надо бы где-нибудь найти список всех предлогов и союзов. И убрать их из keywords
 

nip

Guest
угумс, вопрос не в написании - дело одного дня, дело в грамотной постановке задачи
 

nip

Guest
нееее, дискрипшн, это не то, можно делать когда у тебя сайт разбит на несколько разделов одного типа например как у меня на http://mds.mdteam.ru а так уж увольте.
Я имею ввиду сделать проверялку весов, синонимов и прочего, просто есть же целая чуть ли не наука :) да изучать времени нет :)
 
Сверху