2011-01-06 20 views
5

De Google Analytics Tengo una lista (larga) de palabras clave que las personas utilizan en los motores de búsqueda para encontrar mi sitio web. Quiero encontrar las palabras clave 'básicos', hipotético ejemplo:¿Cómo agrupar las palabras clave del motor de búsqueda?

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

El resultado ideal sería: 'java', 'la formación en línea', 'formación', 'Scala' y 'aprender'.

La dificultad parece estar detectar frases completas, haciendo caso omiso de las palabras comunes (por) y variaciones de manipulación (aprender-aprendizaje).

¿Hay una biblioteca que puede hacer eso (preferentemente para JVM)? ¿O hay un algoritmo adecuado que pueda implementar yo mismo?

+0

Creo que se necesita para pasar más tiempo especificando sus necesidades. Incluso en su ejemplo limitado, no sé por qué no considera que la "programación" sea "esencial". –

+0

¿Qué pasa si usa el número de resultados de Google para encontrar buenas palabras clave? Scala tendría menos resultados que para -> mejor palabra. Puede hacer una búsqueda de todas las frases posibles y registrar el número de resultados para cada frase, luego encuentre un rango donde existan buenas frases. (Eso fue solo una idea rápida, así que no lo estoy poniendo como una respuesta) –

Respuesta

3

Este es un término o un problema de extracción de palabras clave. Hice una búsqueda y apareció Kea, que parece ser mucho lo que quieres.

Se puede implementar una solución ingenua por el siguiente algoritmo:

  • generar una lista de N-gramas en el documento con la longitud de la frase que desea (eligió un límite de longitud de la frase arbitraria, como 3 o 4)
  • poner el n-gramas en un iterate Multiset
  • sobre las entradas del conjunto múltiple en el orden de su grado o contar, tal vez con un punto de corte arbitrario

Como dijiste, esto tendrá un problema con las palabras vacías. Puede hacer algo simple como tener un diccionario de palabras vacías, o puede hacer algo como Term Frequency-Inverse Document Frequency que puede ayudarle a reconocer términos muy frecuentes. KEA hará esto por usted, podría ser mejor analizarlo primero.

Espero que ayude!

Cuestiones relacionadas