Полнотекстовый персонализированный поиск с Mahout - PullRequest
1 голос
/ 12 марта 2012

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

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

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

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

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

1 голос
/ 12 марта 2012

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

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

...