Как сопоставить отмеченные элементы на основе «сходства» - PullRequest
1 голос
/ 25 ноября 2008

У меня есть реальный вопрос.

У меня есть база данных со следующей схемой:

пункт

  • id
  • описание
  • другой мусор

бирка

  • ID
  • имя

item2tag

  • item_id
  • tag_id
  • Количество

По сути, каждый предмет помечен как до 10 вещей с различным количеством. Есть 50000 предметов и 50000 тегов и около 500000 записей в items2tag. Я хотел бы найти, по одному предмету, «наиболее похожий» предмет.

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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 ноября 2008

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

Вот почему Google разработал Map Reduce. Это, вероятно, будет вашим лучшим выбором, но даже в этом случае нетривиально.

-Adam

0 голосов
/ 25 ноября 2008

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

...