Автоматическое определение ключевых слов

Тема в разделе "PHP", создана пользователем bork1234, 29 июн 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. bork1234

    bork1234 Постоялец

    Регистр.:
    25 июн 2008
    Сообщения:
    65
    Симпатии:
    13
    При разработке очередного сайта возникла необходимость автоматически подставлять в код ключевые слова в зависимости от контента (такое требование у заказчика было).

    Долго занимался гуглением по этому вопросу и в итоге нашел более менее нормальный морфический анализатор для русского языка, почему-то не столь известный как многие другие - Перейти по ссылке.

    На его основе написал несколько функций для формирования ключевых слов по рецепту с Перейти по ссылке (лучше идей не нашел, хотя эта тоже не очень адекватная). Пример работы с ними приложен (функции писались для php5, но переделать под php4 труда не составит).

    Базы слов не совсем новые, но рабочие.
    Если кому пригодится, то берите
    http://depositfiles.com/files/6281608
     
  2. zaartix

    zaartix Постоялец

    Регистр.:
    15 май 2006
    Сообщения:
    73
    Симпатии:
    27
    а не смотрел как он "попадает" в процентах? и насколько сильно грузит систему?

    з.ы. скачать не могу, депозиты меня не любят :( зазеркаль плз еще куда-нибудь
     
  3. bork1234

    bork1234 Постоялец

    Регистр.:
    25 июн 2008
    Сообщения:
    65
    Симпатии:
    13
    В процентах к чему? Если насколько правильно вычисляет ключевые слова из текста, то тут в процентах не описать. Все зависит от текста. Просто в моем случае требовалось "хоть что-то" правдоподобное.

    Обработка текста весьма быстрая. На сайте в 40 000 страниц "проседания" сервера не было замечено. Конечно, разумнее делать парсинг каждой страницы/текста на предмет ключевых (характерных) слов единожды, а затем вынимать из БД.

    Зеркало:
    http://rapidshare.com/files/126703495/Morpher.rar.html
     
    zaartix нравится это.
  4. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    По-моему алгоритм нахождения ключевых слов из той вот темы ну очень уж далек от реальности.
    Имхо "ключевость" слова определяется не тем, как часто оно встречается в данном тексте, а тем насколько чаще оно встречается в данном тексте, чем в других текстах

    Соответственно, и алгорим должен быть совсем другой - без всяких стоп-слов, без словарей (они создадутся по ходу), а просто с большим-большим объемом текста. Один раз лопатим текст, составляем табличку "слово - сколько раз встречалось", потом делим "сколько раз встречалось" на общее количество слов в большом тексте - получаем вероятность встречания каждого слова в нашем текста. Потом, с каждым новым встретившимся блоком текста мы просто корректируем эту таблицу и процесс этот постоянный.

    А дальше мы берем анализируемый текст, у которого надо найти ключевые слова, и сравниваем частоту упоминаний каждого слова в этом тексте с частотой упоминания этого же слова "в среднем по больнице". У кого больше всего разница - то и ключевое. Если в большом куске текста слово вообще никогда не встречалось, а тут встретилось аж дважды - то ясен пень это крутое уникальное слово, которое очень четко характеризует данную статью. Она и в гугле скорее всего по этому слову вылазит.. А если это слово "если" - то оно что тут, что там встречается с частотой 0.003. Разницы нет. Значит никакое не ключевое.
     
  5. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    201
    Симпатии:
    66
    Правильно. К черту словари и стоп-слова! Их придумали ленивые неудачники. :D Даешь частотный анализ!
    (шучу)

    Все союзы, предлоги, "потому что" и прочая ересь будут у вас в ключевых словах, пользуйся вы только одним частотным анализом. У ключевых слов, помимо их частоты вхождения, есть такой важный параметр, как информационная значимость. На то они и "ключевые". Слово может один раз появится, но по весу оно самое значимое из всего текста. А то, знаете, в большом-большом тексте про депутатов, "член" может стать ключевым словом.

    Кстати, то, что вы здесь описали подойдет для простенького поисковика, чтобы ранжировать результаты поиска...как раз по частотам. Этакая оценка релевантности.

    Основное заблуждение начинающего лингворазработчика - это рассматривать слова по-отдельности, без координат в тексте и связей с "соседями".
     
  6. Lonely Wolf

    Lonely Wolf Прохожие

    Очень давно делал сервис для себя, потом сделал в движке автоматическую генерацию метатегов, скажу очень полезная вещь особенно если грамотно составлен контент в плане тегов и предложений с ключивиками, мне покрайне мере очень помогает быстро позиции в гугле поднимаю :)
     

    Вложения:

    • ss.rar
      Размер файла:
      1,9 КБ
      Просмотров:
      101
  7. zaartix

    zaartix Постоялец

    Регистр.:
    15 май 2006
    Сообщения:
    73
    Симпатии:
    27
    господа, раз уж пошла такая пьянка - может кто-нибудь поделится словариком стоп-слов?
     
  8. bork1234

    bork1234 Постоялец

    Регистр.:
    25 июн 2008
    Сообщения:
    65
    Симпатии:
    13
    В архиве, в первом посте есть файлик "prepositions.txt"
     
  9. zaartix

    zaartix Постоялец

    Регистр.:
    15 май 2006
    Сообщения:
    73
    Симпатии:
    27
    слабоват там словарик, мягко говоря.
    Прикрепил к этому сообщению дамп таблицы со списком стоп-слов, которые мне удалось собрать с разных мест. Могу еще выложить словарик синонимов, типа
     

    Вложения:

    • 1.txt
      Размер файла:
      8,5 КБ
      Просмотров:
      57
    Neow15ard нравится это.
  10. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    ТС перевыложи плиз архив, везде удален ((.
    Очень похоже на то что ищу.))
     
Статус темы:
Закрыта.