Полнотекстовый персонализированный поиск с помощью Mahout

У меня есть база данных статей, которые будут проиндексированы Lucene, классифицированы по тегам пользователей и махаутам. Статьи будут иметь определенный балл для тегирования (пользователь может согласиться или не согласиться с тегом, теги, обнаруженные mahout, будут обрабатываться так же, как и пользовательские).

Я хочу узнать интерес пользователя (возможно, интерес к определенному тегу) из профиля и истории взаимодействия.

Как я могу сохранить интерес пользователей?
И как я могу использовать интерес пользователей для сортировки или фильтрации результатов поиска?

Возможен ли мой подход? Достижимый? Масштабируемость?
Какие методы и алгоритмы я могу использовать? Пожалуйста, предложите!


person hope_is_grim    schedule 12.03.2012    source источник


Ответы (2)


Похоже, это скорее проблема поиска, а не проблема рекомендации. Вы в первую очередь сортируете и фильтруете результаты поиска на основе тегов. Таким образом, я думаю, что обычно развертываемым инструментом является Lucene, а не Mahout. (Хотя использование классификаторов Mahout для изучения тегов - это правильно.)

Если вы действительно хотите представить это как проблему с рекомендациями, я могу сказать, что ваши предметы - это теги. Каждый раз, когда вы взаимодействуете с тегом, например просматриваете страницу с тегами X, Y и Z, это означает, что вас немного больше интересуют «элементы» X, Y и Z. И тогда проблема с рекомендациями здесь заключается в том, чтобы предложить новые теги интерес.

Вы можете попробовать использовать простой подсчет взаимодействий с тегом в качестве числового «рейтинга», хотя я думаю, что это не даст хороших результатов в контексте рекомендаций. Использование журнала подсчета лучше, но все же кажется неправильным. Вы можете игнорировать счетчик взаимодействий и просто использовать тот факт, что пользователь и тег когда-либо взаимодействовали или нет - «логические предпочтения».

Модель рекомендательного алгоритма, которая лучше всего соответствует этому входу, о которой я знаю, - это модель альтернативных наименьших квадратов, которую вы видите в ParallelALSFactorizationJob. Я не знаю, можно ли это использовать для вас, но это алгоритм, который я бы исследовал, если у вас есть время и желание. Его вклад больше похож на «силу взаимодействия», а не на рейтинг, и он относится к нему именно так, и это то, что у вас здесь.

person Sean Owen    schedule 12.03.2012
comment
Спасибо за Ваш ответ. Я понял вашу точку зрения о предложении новых интересных тегов. Но существует ли какой-либо алгоритм, принимающий классификацию статей и интерес пользователей в качестве входных данных для вывода некоторой значимой информации для сортировки и фильтрации результатов поиска? - person hope_is_grim; 13.03.2012
comment
Если вы знаете, какие теги идут со статьями, а какие с пользователями, это простая задача поиска. Вернуть элементы, которые больше всего пересекаются с данным пользователем. Вы могли бы использовать метрику подобия логарифма правдоподобия, возможно, и это в Mahout. - person Sean Owen; 13.03.2012

Во многих случаях проще просто заставить пользователя явно указать, какие теги ему интересны. Это, например, то, что делает переполнение стека. Вы можете повысить оценку на определенную величину, если тег интересует их.

Если вы хотите сделать что-то более неявное, у Mahout есть FAQ по рекомендации.

person Xodarap    schedule 12.03.2012