Перевірте програмне забезпечення з відкритим кодом 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 (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 .