Как кластеризовать ключевые слова поисковой системы? - PullRequest
5 голосов
/ 06 января 2011

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

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

Идеальный результат: «java», «онлайн-обучение», «training», «scala» и «learn».

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

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

1 Ответ

3 голосов
/ 06 января 2011

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

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

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

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

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

...