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

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

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

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

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

Есть идеи?

Спасибо

2 ответа

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

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

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

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

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

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

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

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