Нахождение ключевых слов.

WP

^_^
Нахождение ключевых слов.

Думаю было бы хорошо заполнять meta-тег keywords для олучшения индексации, но вот как выделить ключевые слова из текста запрашиваемого материала? Поделитесь алгоритмами. Спасибо заранее.
 

Scud

Новичок
На вскидку:

Код:
function filter($word)
{
     return strlen($word) > 2;
}

function createKeywords($content)
{
     return 
           implode(
                 ' ', 
                 array_filter(
                       array_unique(
                              explode(' ', strip_tags($content))
                       ),
                       'filter'
                  )
           );
}

$keywords = createKeywords('some content <div> here </div>');
 

bgm

&nbsp;
1. Определяешь минимальную и максимальную длину выделяемых слов (меньше четырёх имеет смысл только для аббревиатур);
2. Очищаешь текст от тегов и прочего мусора;
3. Выбираешь из текста слова, которые подходят по диапазону длины;
4. Выбираешь уникальные;
5. По желанию можно ещё и проредить с учётом морфологии (тот же стеммер Портера, к примеру).
 

zerkms

TDD infected
Команда форума
bgm
допустим берём твоё прошлое сообщение, ограничиваем слова по длине в диапазоне от 4 до 10
и получаем всё сообщение исключая слова: от, и, ещё, с, тот же, к, из, по
(вроде ничего не пропустил)
будут ли эти слова адекватными в случае помещения их в мету? сомневаюсь очень сильно. тем более что вполне возможно слово, которое характеризует текст наиболее хорошо может и не встречаться в этом тексте

не будем также забывать что даже 2 разных человека составят набор "главных" тезисов текста совершенно по разному - что уж тут работу перекладывать на машину?

если тредстартер хочет эффективной работы меты - тогда только ручной ввод, иначе смысла совершенно никакого имхо
 

Фанат

oncle terrible
Команда форума
почему же?
смысл есть, ещё какой.
поисковик увидит этот мета-спам и даст по рогам.
 

bgm

&nbsp;
zerkms
Ручна работа всегда ценилась выше :)
А автоматизация этого процесса (выделение ключевых слов и распределение их по весам) - это задача на экспертную систему.
 

zerkms

TDD infected
Команда форума
bgm
хм.... очень посмотрел бы на реализацию
 

phprus

Moderator
Команда форума
Выбирать слова по длинне это ИМХО не правильно. При выборе надо основываться на частоте встречаемости слова в тексте. Самые часто встречающиеся слова будут всякими предлогами, союзами, и другими словами не несущими смысловой ценности. Самые редковстречаемые слова так-же врятли будут нести какую-либо ценность.
Вот пример:
http://xpoint.ru/know-how/VebAlgoritmyi/RabotaSTekstami/AvtomaticheskoeOpredelenieKlyuchevyihSlov?2
 

bgm

&nbsp;
phprus
Неудачные, на мой взгляд, пример и алгоритм - можно сколько угодно привести примеров текстов, в которых ключевые слова будут "самые редковстречаемые".
 

phprus

Moderator
Команда форума
bgm
Однако если основываться тлько на длине то результат будет еще хуже. Например если взять минимальную длину 4 символа то для моего предыдущего сообщения в список ключевых слов войдут и слова: врятли, нести, какую, и т.д. Таким образом алгоритм основанный на длине слов будет давать в больном количестве случаев неудовлетворительные результаты.

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

Кстати вы не могли бы привести несколько приеров таких текстов?
 

WP

^_^
phprus
> врятли
:D Алгоритмы без словаря не катят как я понимаю.
 

bgm

&nbsp;
phprus
Речьне идёт о выделении "по длине" или "частоте". Речь идёт о выделении диапазона слов, с которыми стоит работать - по длине точно имеет смысл сужать. А реальные веса слов, основанные на анализе смысла, повторюсь, задача на экспертную систему.

Пример текстов, для которых частотный алгоритм будет работать неверно: многи научные тексты, особенно доказательства теорем, тексты, в которых смысловое содержание вынесено в заголовок или вступление. Вообще все тексты, которые имеют сжатый и лаконичный характер, которые не разбавлены "водой".
 

phprus

Moderator
Команда форума
bgm
А реальные веса слов, основанные на анализе смысла, повторюсь, задача на экспертную систему.
Я этого не отрицаю.

А теперь о практической строне. (Не надо забывать что речь идет о статьях на сайтах).
многи научные тексты, особенно доказательства теорем
А много ли таких текстов на сайте WP? Не думаю, что много.

которых смысловое содержание вынесено в заголовок
Заголовок на мой взгляд нужно полностью добовлять в ключевые слова, так как скорее всего все слова из него являюнся ключевыми (имначе зачем нужен такой заголовок?).

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

И вообще Алгоритм надо выбирать изходя из того для чего он нужен и из того с какими данными надо работать.

P.S. Для справки приведу анализ примерно 1 Гб чистого текста на русском языке (преимущественно на компьютерную тематику) находящегося на моем компьютере выявил следующую закономерность:
Всего слов - 61402778
Уникальных слов - 936214
Первые 200 слов - это слова не несущие смысловой ценности
Последние несколько тысяч - это опечатки
 

baev

‹°°¬•
Команда форума
Уникальных слов - 936214
Э-э...
В словарях слово «уникальный» трактуется как:
единственный в своем роде; исключительный.
— Вы хотите сказать, что у Вас почти миллион слов встречаются по одному разу?!



Может, Вы бинарные файлы «проанализировали»?
 

phprus

Moderator
Команда форума
baev
Упс. Не правильно выразился Забыл расшифровать, что понимаю под "уникальным словом".

Под словом я понимал последовательность символов, которая получается при разрезании текстового файла по пробельным символам и символам пунктуации. Числа в эти строки не входят. Так как анализу подвергалисть только предварительно отобранные текстовые файлы то с большой натяжкой это можно назвать словами.
Потом из этого списка слов удалялись дубликаты, так, чтобы каждое "слово" встречалость только один раз. "Слова "входящие в этот список я и назвал уникальными.
А так много их по причине того, что никакой морфологической обработки не производилось. Если бы все слова приводились к какой либо начальной форме то "уникальных" слов было бы примерно на порядок меньше. Точнее сказать не могу так как такой проверки не выполнял. Для задачи при решении которой появились вышеназванные цыфры этого не требовалось.
 

bgm

&nbsp;
phprus
>> Для справки приведу анализ примерно 1 Гб чистого текста на русском языке (преимущественно на компьютерную тематику)
>> Если бы все слова приводились к какой либо начальной форме то "уникальных" слов было бы примерно на порядок меньше.
Собственно получается, что к теме топика приведённые Вами цифры никакого отношения не имеют :)
 
Сверху