Consulte el software de código abierto del grupo Stanford NLP ( http://www-nlp.stanford.edu/software ), en particular, Stanford Classifier ( http://www-nlp.stanford.edu/software/classifier.shtml ) . El software está escrito Java
, lo que probablemente lo deleitará, pero también tiene enlaces para algunos otros idiomas. Tenga en cuenta la licencia : si planea usar su código en productos comerciales, debe adquirir una licencia comercial.
Otro conjunto interesante de bibliotecas de código abierto, en mi humilde opinión, adecuado para esta tarea y mucho más, es el marco paralelo para el aprendizaje automático GraphLab ( http://select.cs.cmu.edu/code/graphlab ), que incluye la biblioteca de agrupamiento , implementando varios agrupamientos algoritmos ( http://select.cs.cmu.edu/code/graphlab/clustering.html ). Es especialmente adecuado para un gran volumen de datos (como el que tiene), ya que implementa el MapReduce
modelo y, por lo tanto, admite el procesamiento paralelo multinúcleo y multiprocesador .
Lo más probable es que sepa lo siguiente, pero lo mencionaré por si acaso. Natural Language Toolkit (NLTK) para Python
( http://www.nltk.org ) contiene módulos para agrupar / clasificar / categorizar texto. Consulte el capítulo correspondiente en NLTK Book
: http://www.nltk.org/book/ch06.html .
ACTUALIZAR:
Hablando de algoritmos , parece que ha intentado la mayoría de los scikit-learn
, como se ilustra en este ejemplo de extracción de tema: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . Sin embargo, puede encontrar otras bibliotecas útiles, que implementan una amplia variedad de algoritmos de agrupación , incluida la factorización de matriz no negativa (NMF) . Una de esas bibliotecas es Python Matrix Factorization (PyMF) con página de inicio en https://code.google.com/p/pymf y código fuente en https://github.com/nils-werner/pymf . Otra biblioteca, aún más interesante, también basada en Python, es NIMFA, que implementa varios algoritmos NMF : http://nimfa.biolab.si . Aquí hay un trabajo de investigación que describe NIMFA
: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . Aquí hay un ejemplo de su documentación, que presenta la solución para un problema de procesamiento de texto muy similar de agrupación de temas : http://nimfa.biolab.si/nimfa.examples.documents.html .