Надеюсь, это поможет!

ogle Analytics у меня есть (длинный) список ключевых слов, которые люди использовали в поисковых системах, чтобы найти мой сайт. Я хочу найти «ключевые слова», гипотетический пример:

java online training
learning java
scala training
training for java
online training java
learn scala programming

Идеальным результатом были бы: «Java», «онлайн-обучение», «обучение», «Scala» и «учиться».

Кажется, что сложность заключается в обнаружении полных фраз, игнорировании общих слов (для) и обработке вариаций (обучение-изучение).

Есть ли библиотека, которая может это сделать (предпочтительно для JVM)? Или есть подходящий алгоритм, который я могу реализовать сам?

 Uros K06 янв. 2011 г., 17:30
Что если бы вы использовали количество результатов поиска в Google для поиска хороших ключевых слов? Scala будет иметь меньше результатов, чем для -> лучше слова. Вы можете выполнить поиск всех возможных фраз и записать количество результатов для каждой фразы, а затем найти диапазон, в котором существуют хорошие фразы. (Это была просто быстрая мысль, поэтому я не ставлю это как ответ)
 Mark Peters06 янв. 2011 г., 17:23
Я думаю, вам нужно потратить больше времени на уточнение ваших требований. Даже в вашем ограниченном примере я не знаю, почему вы не считаете «программирование» «основным».

Ответы на вопрос(1)

Решение Вопроса

и это оказалосьКеа, который выглядит очень много, что вы хотите.

Вы можете реализовать наивное решение по следующему алгоритму:

сгенерируйте список ngram в документе с нужной вам длиной фразы (выберите произвольный предел длины фразы, например 3 или 4)положить Ngram вMultisetперебирать записи мультимножества в порядке их степени или числа, возможно, с произвольным обрезанием

Как вы сказали, это будет иметь проблему со стоп-словами. Вы можете сделать что-то простое, например, иметь словарь стоп-слов, или вы можете сделать что-то вродеТермин частотно-обратная частота документов который может помочь вам автоматически распознавать очень частые термины. KEA сделает это за вас, возможно, лучше сначала разобраться с этим.

Надеюсь, это поможет!

Ваш ответ на вопрос