TF-IDF вектор предпочтений пользователей

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

Мы создаем систему рекомендаций, используя tf-idf для генерации нормализованных векторов документов. Основываясь на взаимодействии пользователей с документами (например, не нравится, тратить время на это и т. Д.), Мы хотим создать профили пользователей, которые следуют той же структуре, что и сами документы.

Хотя существует много литературы о рекомендательных системах и контентной фильтрации со стороны "продукта", очень мало о структурировании самих пользовательских предпочтений. Я не просто спрашиваю "решение", а хочу указать нам правильное направление (или просто направление). Мы могли бы что-то сами разработать, но не нужно изобретать велосипед, если уже есть достаточно разработанные решения.

Большое спасибо всем! Даниил

1 ответ

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

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

Пользовательский вектор может быть средним из векторов tfidf документов, которые ему нравятся. Это, однако, может работать хорошо только в том случае, если пользователь имеет однородные предпочтения (предпочтительно только из одного кластера), потому что, если ему нравится много документов из отдаленных кластеров, он окажется между теми кластерами, которые не обязательно отражают его интересы. Но если структура предпочтений играет, это может работать хорошо.
Далее вы определяете ближайший кластер к пользовательскому вектору, а затем выбираете другие документы из этого кластера в качестве рекомендации.

Для расстояний вы можете начать с косинусного расстояния, и вы можете найти кластеры, используя, например, простой алгоритм K-Nearest Neighbor (см. Раздел scikit learn).

Другие вопросы по тегам