La domanda è molto aperta. Detto questo, piuttosto che sceglierne uno, di seguito è riportato un confronto a seconda della lingua che vorresti usare (poiché ci sono buone librerie disponibili in entrambe le lingue).
Pitone
In termini di Python, il primo posto che dovresti guardare è il Python Natural Language Toolkit . Come notano nella loro descrizione, NLTK è una piattaforma leader per la creazione di programmi Python per lavorare con i dati del linguaggio umano. Fornisce interfacce di facile utilizzo a oltre 50 corpora e risorse lessicali come WordNet, insieme a una suite di librerie di elaborazione del testo per classificazione, tokenizzazione, stemming, tagging, analisi e ragionamento semantico.
C'è anche del codice eccellente che puoi cercare che ha avuto origine dal progetto Natural Language Toolkit di Google basato su Python. Puoi trovare un collegamento a quel codice qui su GitHub .
Giava
Il primo posto in cui cercare sarebbe il Natural Language Processing Group di Stanford . Tutto il software distribuito è scritto in Java. Tutte le distribuzioni recenti richiedono Oracle Java 6+ o OpenJDK 7+. I pacchetti di distribuzione includono componenti per il richiamo della riga di comando, file jar, un'API Java e codice sorgente.
Un'altra ottima opzione che vedi in molti ambienti di apprendimento automatico qui (opzione generale), è Weka . Weka è una raccolta di algoritmi di apprendimento automatico per attività di data mining. Gli algoritmi possono essere applicati direttamente a un set di dati o richiamati dal proprio codice Java. Weka contiene strumenti per la pre-elaborazione dei dati, la classificazione, la regressione, il clustering, le regole di associazione e la visualizzazione. È anche adatto per lo sviluppo di nuovi schemi di apprendimento automatico.