Сходство между элементами часто представляется в виде точечных произведений между векторами, представляющими элементы.Поэтому, если у вас есть система на основе тегов, каждый тег будет определять одно измерение.Тогда вектор для элемента становится 1 в измерении i, если для этого элемента установлен тег i (или более высокие числа, если вы разрешаете множественное тегирование).Если вы вычислите скалярное произведение векторов двух элементов, вы получите сходство для этих элементов (Примечание: векторы должны быть нормализованы так, чтобы абсолютное значение равнялось 1).
Обратите внимание, что размерность станет очень большой (обычно несколько десятков тысяч тегов).Это звучит как шоу-стоппер для такого рода вещей.Но вы также не заметите, что векторы действительно редки, и произведение из нескольких точек становится одним большим матричным умножением разреженной матрицы с ее собственным транспонированием.Используя эффективные алгоритмы для разреженного умножения матриц, это можно сделать относительно быстро.
Также обратите внимание, что большинство систем полагаются не только на теги, но и на «поведение пользователя» (что бы это ни значило).То есть для поведения пользователя YouTube будет «Просмотр видео», «Подписка на канал», «Поиск похожих видео как видео X» или «Пометка видео x с тегом y».