¿Cómo agrupar las palabras clave del motor de búsqueda?

De Google Analytics tengo una lista (larga) de palabras clave que las personas usaron en los motores de búsqueda para encontrar mi sitio web. Quiero encontrar las 'palabras clave centrales', ejemplo hipotético:

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

El resultado ideal sería: 'java', 'entrenamiento en línea', 'entrenamiento', 'scala' y 'aprender'.

La dificultad parece ser detectar frases completas, ignorar palabras comunes (para) y manejar variaciones (aprender-aprender).

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta