Проверьте программное обеспечение с открытым исходным кодом Stanford NLP Group ( http://www-nlp.stanford.edu/software ), в частности Stanford Classifier ( http://www-nlp.stanford.edu/software/classifier.shtml ). , Программное обеспечение написано на нем Java
, что, вероятно, порадует вас, но также имеет привязки для некоторых других языков. Обратите внимание, лицензирование - если вы планируете использовать их код в коммерческих продуктах, вы должны приобрести коммерческую лицензию.
Другим интересным набором библиотек с открытым исходным кодом, IMHO, подходящим для этой задачи и многим другим, является параллельная среда для машинного обучения GraphLab ( http://select.cs.cmu.edu/code/graphlab ), которая включает в себя библиотеку кластеризации , реализующую различные кластеры. алгоритмы ( http://select.cs.cmu.edu/code/graphlab/clustering.html ). Он особенно подходит для очень большого объема данных (как у вас), поскольку он реализует MapReduce
модель и, таким образом, поддерживает многоядерную и многопроцессорную параллельную обработку .
Скорее всего, вы знаете следующее, но я упомяну это на всякий случай. Набор естественных языков (NLTK) для Python
( http://www.nltk.org ) содержит модули для кластеризации / классификации / категоризации текста. Проверьте соответствующую главу в NLTK Book
: http://www.nltk.org/book/ch06.html .
ОБНОВИТЬ:
Говоря об алгоритмах , кажется, что вы попробовали большинство из них scikit-learn
, как показано в этом примере извлечения темы: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . Тем не менее, вы можете найти полезные другие библиотеки, которые реализуют широкий спектр алгоритмов кластеризации , включая неотрицательную матричную факторизацию (NMF) . Одной из таких библиотек является Python Matrix Factorization (PyMF) с домашней страницей по адресу https://code.google.com/p/pymf и исходным кодом по адресу https://github.com/nils-werner/pymf . Еще одна, еще более интересная библиотека, также основанная на Python, - это NIMFA, который реализует различные алгоритмы NMF : http://nimfa.biolab.si . Вот исследовательский документ, описывающий NIMFA
: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . Вот пример из его документации, в которой представлено решение для очень похожей проблемы обработки текста в кластеризации тем : http://nimfa.biolab.si/nimfa.examples.documents.html .