Пакеты
Если вы не привержены нейронным сетям, мне повезло с SVM, и вам также может помочь кластеризация k-means.Оба из них предоставлены Молоко .Он также выполняет пошаговый дискриминантный анализ для выбора функции , который, безусловно, будет полезен вам, если вы пытаетесь найти похожие документы по темам.
Бог поможет вам, если вы выберете этот маршрут,но платформа ROOT имеет мощный пакет машинного обучения под названием TMVA , который предоставляет большое количество методов классификации, включая SVM, NN и Boosted Decision Trees (также, возможно, хороший вариант).Я не использовал его, но pyROOT предоставляет привязки Python к функциональности ROOT.Честно говоря, когда я впервые использовал ROOT, у меня не было знаний по C ++, и я был концептуально над головой, так что это может быть действительно удивительно для вас.ROOT имеет ОГРОМНОЕ количество инструментов обработки данных.
(Примечание: я также написал довольно точный идентификатор языка документа, используя выбор хи-квадрат и косинусное соответствие. Очевидно, что ваша проблема сложнее, но учтите, что вывозможно, для этого не потребуются очень полезные инструменты.)
Хранилище против обработки
В своем вопросе вы упоминаете, что:
... статьи будут выбираться на основеих теги и прошли через нейронную сеть для ранжирования.
Так же, как и другой NB, одна вещь, которую вы должны знать о машинном обучении, состоит в том, что такие процессы, как обучение и оценка, обычно занимают , а .Вероятно, вам следует рассмотреть ранжирование всех документов по каждому тегу только один раз (при условии, что вы знаете все теги) и сохранить результаты.Для машинного обучения в целом гораздо лучше использовать больше памяти, чем больше обработки.
Теперь к вашему конкретному случаю.Вы не говорите, сколько тегов у вас есть, поэтому давайте предположим, что у вас есть 1000, для округлости.Если вы сохраняете результаты своего рейтинга для каждого документа в каждом теге, это дает вам 100 миллионов поплавков для хранения.Это много данных, и их вычисление займет некоторое время, но их получение очень быстро.Если вместо этого вы пересчитываете рейтинг для каждого документа по требованию, вы должны сделать 1000 проходов, по одному для каждого тега.В зависимости от типа выполняемых вами операций и размера ваших документов, это может занять от нескольких секунд до нескольких минут.Если процесс достаточно прост, чтобы вы могли дождаться, пока ваш код выполнит несколько из этих оценок по требованию, не скучая, тогда сделайте это, но вы должны рассчитать этот процесс за до принятия каких-либо проектных решений / написания кодаВы не хотите использовать.
Удачи!