Con la maggior parte di questi tipi di applicazioni, dovrai eseguire il rollio di gran parte del tuo codice per un'attività di classificazione statistica. Come suggerito da Lucka, NLTK è lo strumento perfetto per la manipolazione del linguaggio naturale in Python, purché il tuo obiettivo non interferisca con la natura non commerciale della sua licenza. Tuttavia, suggerirei altri pacchetti software per la modellazione. Non ho trovato molti modelli avanzati di machine learning disponibili per Python, quindi suggerirò alcuni binari autonomi che cooperano facilmente con esso.
Potresti essere interessato a The Toolkit for Advanced Discriminative Modeling , che può essere facilmente interfacciato con Python. Questo è stato utilizzato per attività di classificazione in varie aree dell'elaborazione del linguaggio naturale. Puoi anche scegliere tra una serie di modelli diversi. Suggerirei di iniziare con la classificazione della massima entropia purché tu abbia già familiarità con l'implementazione di un classificatore Naive Bayes. In caso contrario, potresti esaminarlo e codificarne uno per ottenere una comprensione decente della classificazione statistica come attività di apprendimento automatico.
I gruppi di linguistica computazionale dell'Università del Texas ad Austin hanno tenuto lezioni in cui la maggior parte dei progetti che ne derivavano hanno utilizzato questo fantastico strumento. Puoi guardare la pagina del corso per Computational Linguistics II per avere un'idea di come farlo funzionare e quali applicazioni precedenti ha servito.
Un altro ottimo strumento che funziona allo stesso modo è Mallet . La differenza tra Mallet è che c'è un po 'più di documentazione e alcuni modelli disponibili, come gli alberi decisionali, ed è in Java, il che, a mio parere, lo rende un po' più lento. Weka è un'intera suite di diversi modelli di apprendimento automatico in un unico grande pacchetto che include alcune cose grafiche, ma in realtà è pensato principalmente per scopi pedagogici e non è davvero qualcosa che avrei messo in produzione.
Buona fortuna con il tuo compito. La parte veramente difficile sarà probabilmente la quantità di ingegneria della conoscenza richiesta in anticipo per classificare il "set di base" da cui imparerà il tuo modello. Deve essere abbastanza grande, a seconda che tu stia facendo una classificazione binaria (felice vs triste) o un'intera gamma di emozioni (che richiederà ancora di più). Assicurati di fornire alcuni di questi dati ingegnerizzati per i test, oppure esegui alcuni test di dieci volte o rimuovi uno per assicurarti di fare effettivamente un buon lavoro di previsione prima di pubblicarlo. E soprattutto, buon divertimento! Questa è la parte migliore della PNL e dell'intelligenza artificiale, secondo me.