2011-01-06 7 views
5

Von Google Analytics Ich habe eine (lange) Liste von Schlüsselwörtern, die in Suchmaschinen Leute meine Website zu finden. Ich will den Kern Keywords, hypothetisches Beispiel finden:Wie Cluster Suchmaschinen Keywords?

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

Das ideale Ergebnis sei: 'Java', 'Online-Training', 'Ausbildung', 'scala' und 'lernen'.

Die Schwierigkeit scheint vollständige Sätze zu erfassen, gemeinsame Wörter ignorieren (für) und Handhabung Variationen (Lern-Lernen).

Gibt es eine Bibliothek, die das (vorzugsweise für JVM) tun? Oder gibt es einen geeigneten Algorithmus, den ich selbst implementieren kann?

+0

Ich glaube, Sie brauchen, um mehr Zeit unter Angabe Ihrer Anforderungen zu verbringen. Selbst in Ihrem begrenzten Beispiel weiß ich nicht, warum Sie "Programmieren" nicht als "Kern" betrachten. –

+0

Was wäre, wenn Sie googles Anzahl der Ergebnisse für die Suche nach guten Keywords verwenden würden? Scala hätte weniger Ergebnisse als für -> besseres Wort. Sie können nach allen möglichen Phrasen suchen und die Anzahl der Ergebnisse für jede Phrase aufzeichnen und dann einen Bereich finden, in dem gute Phrasen existieren. (Das war nur ein kurzer Gedanke, also stelle ich es nicht als Antwort dar) –

Antwort

3

Dies ist ein Begriff oder Schlüsselwort-Extraktions Problem. Ich habe eine Suche gemacht und es erschien Kea, die sehr viel zu sein scheint, was Sie wollen.

Sie können eine naive Lösung durch den folgenden Algorithmus implementieren:

  • erzeugen eine Liste von ngrams in dem Dokument mit dem Satz Länge, die Sie wollen (wählte eine beliebige Phrase Längenbegrenzung, wie 3 oder 4)
  • legte den ngram in einen Multiset
  • Iterierte über die Einträge der multiset in der Reihenfolge ihres Grad oder zählt, vielleicht mit einer willkürlichen Grenz

Wie Sie gesagt haben, wird dies ein Problem mit Stoppwörtern haben. Sie können etwas einfaches tun, wie ein Wörterbuch von Stoppwörtern, oder Sie können etwas wie Term Frequency-Inverse Document Frequency tun, die Ihnen helfen kann, sehr häufige Begriffe automatisch zu erkennen. KEA wird das für Sie tun, es ist vielleicht am besten, sich das zuerst anzusehen.

Hoffe, dass hilft!