Подтвердить что ты не робот

Рекомендация тегов/ключевых слов

Мне интересно, какой алгоритм будет умнее использовать для среды, ориентированной на тег:

  • Каждый элемент имеет несколько тегов. IE:

    Название товара: "Metallica - Black Album CD", Теги: "metallica", "black-album", "rock", "music"

  • У каждого пользователя есть несколько тегов и друзей (других пользователей), привязанных к их. IE:

    Имя пользователя: "testguy", Интересы: "python", "rock", "metal", "computer-science" Друзья: "testguy2", "testguy3"

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

Идеи:

  • Алгоритм гибридной рекомендации может использоваться, поскольку у каждого пользователя есть друзья (см. рекомендации, основанные на совместном использовании + контекст).
  • Возможно, с помощью пользовательских тегов можно найти похожих пользователей (одноранговых узлов) для создания рекомендаций.

  • Возможно, непосредственно сопоставлять теги между пользователями и элементами через теги.

Любое предложение приветствуется. Любая библиотека на основе python также приветствуется, поскольку я буду делать этот экспериментальный движок на языке python.

4b9b3361

Ответ 1

1) Вес ваших тегов.

Теги делятся на несколько групп интересов:

  • Мои теги, которые ни один из моих друзей не делится
  • Теги, которыми делится мой друг, но я не
  • Мои теги, которые разделяют некоторые мои друзья.

(иногда вы также можете рассмотреть теги друзей друг друга, но по моему опыту это не стоило того. YMMV.)

Определите все теги, которые заинтересованы в человеке и/или друзьях человека, и приложите вес к тегам для этого человека. Одна простая возможная формула для веса тега -

(tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends)

Обратите внимание на магическое число 2, которое делает ваше собственное мнение в два раза больше, чем у всех ваших друзей. Не стесняйтесь настраивать: -)

2) Вес ваших предметов

Для каждого элемента, который имеет любой из тегов в вашем списке, просто добавьте все взвешенные значения тегов. Более высокое value = больше интереса.

3) Примените порог.

Самый простой способ - показать пользователю верхние результаты.

Более сложные системы также применяют анти-теги (т.е. темы, не представляющие интереса) и делают много других вещей, но я нашел эту простую формулу эффективной и быстрой.

Ответ 2

Если вы можете, отследите копию Коллективного интеллекта O'Reilly Programming Toby Segaran. Там есть модельное решение именно для этой проблемы (с целым рядом действительно, действительно хороших других вещей).

Ответ 3

Ваша проблема похожа на двигатели с рекомендациями по продуктам, такие как широко распространенный сайт Amazon. Они используют алгоритм обучения правила ассоциации, которые в основном создают условную вероятность покупки пользователем X продукта Y на основе общих функций Z между пользователем и продукт. Многие инструментальные средства с открытым исходным кодом реализуют правила ассоциации, такие как Orange и Weka.

Ответ 4

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

Ответ 5

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