Como agrupar palavras-chave do mecanismo de pesquisa?

No Google Analytics, tenho uma lista (longa) de palavras-chave que as pessoas usaram nos mecanismos de pesquisa para encontrar meu site. Quero encontrar as 'palavras-chave principais', exemplo hipotético:

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

O resultado ideal seria: 'java', 'treinamento online', 'treinamento', 'scala' e 'aprender'.

A dificuldade parece estar em detectar frases completas, ignorando palavras comuns (para) e manipulando variações (aprender-aprender).

Existe uma biblioteca que pode fazer isso (de preferência para JVM)? Ou existe um algoritmo adequado que eu possa me implementar?

questionAnswers(1)

yourAnswerToTheQuestion