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