A questão é muito aberta. Dito isso, ao invés de escolher um, abaixo está uma comparação dependendo do idioma que você gostaria de usar (já que existem boas bibliotecas disponíveis em ambos os idiomas).
Pitão
Em termos de Python, o primeiro lugar que você deve examinar é o Python Natural Language Toolkit . Como eles observam em sua descrição, o NLTK é uma plataforma líder para a construção de programas Python para trabalhar com dados de linguagem humana. Ele fornece interfaces fáceis de usar para mais de 50 corpora e recursos lexicais, como WordNet, junto com um conjunto de bibliotecas de processamento de texto para classificação, tokenização, lematização, marcação, análise e raciocínio semântico.
Também existe um código excelente que você pode consultar, originado do projeto Natural Language Toolkit do Google que é baseado em Python. Você pode encontrar um link para esse código aqui no GitHub .
Java
O primeiro lugar a procurar seria o Grupo de Processamento de Linguagem Natural de Stanford . Todo o software distribuído lá é escrito em Java. Todas as distribuições recentes requerem Oracle Java 6+ ou OpenJDK 7 ou superior. Os pacotes de distribuição incluem componentes para chamada de linha de comando, arquivos jar, uma API Java e código-fonte.
Outra ótima opção que você vê em muitos ambientes de aprendizado de máquina aqui (opção geral) é o Weka . Weka é uma coleção de algoritmos de aprendizado de máquina para tarefas de mineração de dados. Os algoritmos podem ser aplicados diretamente a um conjunto de dados ou chamados de seu próprio código Java. Weka contém ferramentas para pré-processamento, classificação, regressão, agrupamento, regras de associação e visualização de dados. Também é adequado para o desenvolvimento de novos esquemas de aprendizado de máquina.