Verifique o software de código aberto do Stanford NLP Group ( http://www-nlp.stanford.edu/software ), em particular o Stanford Classifier ( http://www-nlp.stanford.edu/software/classifier.shtml ) . O software está escrito Java
, o que provavelmente o encantará, mas também possui ligações para outros idiomas. Observe que o licenciamento - se você planeja usar o código deles em produtos comerciais, precisa adquirir uma licença comercial.
Outro conjunto interessante de bibliotecas de código aberto, o IMHO adequado para esta tarefa e muito mais, é a estrutura paralela para aprendizado de máquina GraphLab ( http://select.cs.cmu.edu/code/graphlab ), que inclui a biblioteca de cluster , implementando vários clusters algoritmos ( http://select.cs.cmu.edu/code/graphlab/clustering.html ). É especialmente adequado para um volume muito grande de dados (como você possui), pois implementa o MapReduce
modelo e, portanto, suporta o processamento paralelo de múltiplos núcleos e multiprocessadores .
Você provavelmente está ciente do seguinte, mas vou mencionar apenas por precaução. O Natural Language Toolkit (NLTK) para Python
( http://www.nltk.org ) contém módulos para agrupar / classificar / categorizar texto. Verifique o capítulo relevante em NLTK Book
: http://www.nltk.org/book/ch06.html .
ATUALIZAR:
Falando em algoritmos , parece que você já tentou a maioria deles scikit-learn
, como ilustrado neste exemplo de extração de tópicos: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . No entanto, você pode encontrar outras bibliotecas úteis, que implementam uma grande variedade de algoritmos de agrupamento , incluindo a NMF (Non-Negative Matrix Factorization) . Uma dessas bibliotecas é a Python Matrix Factorization (PyMF), com a página inicial em https://code.google.com/p/pymf e o código-fonte em https://github.com/nils-werner/pymf . Outra biblioteca ainda mais interessante, também baseada em Python, é a NIMFA, que implementa vários algoritmos NMF : http://nimfa.biolab.si . Aqui está um artigo de pesquisa, descrevendo NIMFA
: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . Aqui está um exemplo de sua documentação, que apresenta a solução para um problema de processamento de texto muito semelhante ao agrupamento de tópicos : http://nimfa.biolab.si/nimfa.examples.documents.html .