Я провожу некоторые исследования и играю с Apache Mahout 0.6.
Моя цель — создать систему, которая будет называть различные категории документов на основе пользовательского ввода. Документы заранее неизвестны, и я не знаю также, какие у меня категории при сборе этих документов. Но я знаю, что все документы в модели должны принадлежать к одной из предопределенных категорий.
Например: Допустим, я собрал N документов, принадлежащих к 3 разным группам:
- Политика
- Мадонна (поп-звезда)
- Научная фантастика
Я не знаю, какой документ относится к какой категории, но я знаю, что каждый из моих N документов принадлежит к одной из этих категорий (например, среди этих N документов нет документов, скажем, о баскетболе)
Итак, у меня возникла следующая идея:
Примените кластеризацию mahout (например, k-mean с k = 3 для этих документов). Это должно разделить N документов на 3 группы. Это должно быть своего рода моей моделью для обучения. Я до сих пор не знаю, какой документ действительно принадлежит к какой группе, но, по крайней мере, документы теперь сгруппированы по группам.
Попросите пользователя найти в Интернете любой документ, который должен быть о «Мадонне» (я не могу показать пользователю ни один из моих N документов, это ограничение). Затем я хочу измерить «подобие» этого документа и каждой из трех групп. Я ожидаю увидеть, что измерение сходства между user_doc и документами в группе Мадонны в модели будет выше, чем сходство между user_doc и документами о политике.
Мне удалось создать группу документов, используя книгу «Магаут в действии». Но я не понимаю, как мне использовать Mahout для измерения сходства между «готовой» кластерной группой документа и одним данным документом.
Я подумал о том, чтобы перезапустить кластер с k=3 для N+1 документов с одинаковыми центроидами (с точки зрения кластеризации k-mean) и посмотреть, куда падает новый документ, но, может быть, есть какой-то другой способ сделать это?
Можно ли обойтись Mahout или моя идея концептуально неверна? (пример с точки зрения Mahout API был бы действительно хорош)
Большое спасибо и извините за длинный вопрос (не смог описать лучше)
Любая помощь высоко ценится
P.S. Это не домашнее задание :)