Профилирование пользователей для тематической рекомендательной системы

Я пытаюсь придумать рекомендательную систему на основе тем, чтобы предлагать пользователям релевантные текстовые документы.

Я обучил модель скрытой семантической индексации, используя gensim, на корпусе википедии. Это позволяет мне легко преобразовывать документы в тематические дистрибутивы LSI. Моя идея сейчас состоит в том, чтобы представить пользователей таким же образом. Однако, разумеется, у пользователей есть история просмотренных статей, а также оценки статей.

Итак, мой вопрос: как представлять пользователей?

Идея у меня была следующая: представить пользователя как совокупность всех просмотренных документов. Но как учитывать рейтинг?

Любые идеи?

Спасибо




Ответы (2)


Я не думаю, что это работает с lsa.

Но вы, возможно, могли бы сделать какую-то классификацию k-NN, где координаты каждого пользователя - это просматриваемые документы. Каждый объект (=пользователь) излучает излучение (интенсивность обратно пропорциональна квадрату расстояния). Интенсивность рассчитывается на основе оценок отдельных документов.

Затем вы можете поместить объект (пользователя) в это гиперпространственное пространство и посмотреть, что другие пользователи дают больше всего «света».

Но: разве Apache Lucene не может сделать все это за вас?

person snøreven    schedule 06.10.2012

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

Если вы хотите добавить рейтинги, вы можете просто поставить коэффициент в сумме.

Скажем, вы группируете все документы с рейтингом 2 в векторе D2, с рейтингом 3 в D3 и т. д. Затем вы просто определяете пользовательский вектор как U=c2*D2+c3*D3+... Вы можете играть с различными формами для c2, c3 , но проще всего было бы просто умножить на рейтинг и разделить на максимальный рейтинг для целей нормализации.

Если ваш максимальный рейтинг равен 5, вы можете определить, например, c2=2/5, c3=3/5...

person bendaizer    schedule 29.01.2013