У меня есть около 300 тыс. документов, хранящихся в базе данных Postgres, которые отмечены категориями тем (всего около 150 категорий). У меня есть еще 150 тыс. Документов, которые еще не имеют категорий. Я пытаюсь найти лучший способ программно категоризировать их.
Я изучал NLTK и его классификатор Наивного Байеса. Кажется хорошей отправной точкой (если вы можете предложить лучший алгоритм классификации для этой задачи, я все уши).
Моя проблема в том, что у меня нет достаточного количества ОЗУ для обучения NaiveBayesClassifier на всех 150 документах категории /300k одновременно (обучение по 5 категориям было использовано 8 ГБ). Кроме того, точность классификатора, по-видимому, снижается, поскольку я тренируюсь по большему количеству категорий (90% -ная точность с 2-мя категориями, 81% с 5, 61% с 10).
Должен ли я просто обучать классификатор по 5 категориям за раз и запускать все 150 тыс. документов через классификатор, чтобы узнать, есть ли совпадения? Кажется, что это сработало бы, за исключением того, что было бы много ложных срабатываний, когда документы, которые действительно не соответствуют какой-либо из категорий, получают классический классификатор только потому, что это лучший доступный доступ... Есть ли способ иметь "ни один из вышеперечисленных" вариантов для классификатора на всякий случай, если документ не вписывается ни в одну из категорий?
Вот мой тестовый класс http://gist.github.com/451880