2011-01-06 9 views
5

Z Google Analytics mam (długą) listę słów kluczowych, które ludzie wykorzystali w wyszukiwarkach, aby znaleźć moją witrynę. Chcę znaleźć słowa kluczowe 'podstawowego', hipotetyczny przykład:Jak grupować słowa kluczowe w wyszukiwarkach?

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

Idealnym wynikiem byłoby: 'java', 'szkolenia online', 'szkolenie', 'Scala' i 'nauczyć'.

Trudność zdaje się wykrywać pełne frazy, ignorując popularne słowa (dla) i radząc sobie z odmianami (uczenie się).

Czy istnieje biblioteka, która może to zrobić (najlepiej dla JVM)? Czy istnieje odpowiedni algorytm, który mogę wdrożyć sam?

+0

Myślę, że trzeba poświęcić więcej czasu na określanie swoich wymagań. Nawet w waszym ograniczonym przykładzie nie wiem, dlaczego nie uważacie "programowania" za "rdzeń". –

+0

Co się stanie, jeśli użyjesz liczby wyników wyszukiwania dla wyszukiwania dobrych słów kluczowych? Scala miałaby mniej wyników niż dla -> lepszego słowa. Możesz wyszukać wszystkie możliwe frazy i zarejestrować liczbę wyników dla każdej frazy, a następnie znaleźć zakres, w którym istnieją dobre frazy. (To była tylko szybka myśl, więc nie uważam jej za odpowiedź) –

Odpowiedz

3

To jest problem z wyodrębnianiem słów kluczowych lub terminów. Przeszukałem i pojawił się Kea, który wygląda tak, jak chcesz.

można wdrożyć naiwne rozwiązanie według następującego algorytmu:

  • wygenerować listę ngrams w dokumencie o długości frazę (wybierz dowolny limit długości fraza, jak 3 lub 4)
  • umieścić Ngram w Multiset
  • iteracyjne nad wpisów z MultiSet w kolejności ich stopnia lub liczyć, być może z dowolnego odcięcia

Tak jak powiedziałeś, będzie to mieć problem ze stopwords. Możesz zrobić coś prostego, takiego jak słownik słów kończących, lub możesz zrobić coś takiego, jak Term Frequency-Inverse Document Frequency, które może pomóc ci automatycznie rozpoznać bardzo częste terminy. KEA zrobi to za ciebie, najlepiej będzie najpierw się nad tym zastanowić.

Nadzieję, że pomaga!