Я не могу придумать лучшего способа решить следующую проблему...? Представьте, что у меня есть большая таблица, в которой строки и столбцы являются своего рода идентификаторами. Скажем, идентификатором книги.
book_id-->1 2 3 .....
1 1 0.92 0.33
2
3
Запись в этой таблице говорит вам, насколько похожа каждая книга... так что из приведенной выше таблицы... книга 1 и книга 2 имеют индекс сходства 0,92.
Итак, я уже вычислил это в банке... для допустим "n" записей.
Из n+1 данные поступают в режиме реального времени.
Итак, первый шаг, который я должен сделать, это заполнить эту новую строку. Это очень наивный подход.
i = 0; i < total_books ; i++
sim(book(n+1),book(i))
Допустим, вычисление сходства любых книг выполняется очень быстро. Но так как это должно произойти "n" раз, это складывается..
и если есть «m» новых книг, то это операция n ^ 2 (я думаю). Есть ли лучший алгоритм/структура данных, который может сделать это вычисление приемлемым.
Кроме того, просто заполнить фон. Это сходство есть не что иное, как скалярное произведение двух векторов. (похожесть косинуса в Google даст представление). Но в этом нет ничего необычного... просто взять точечные произведения между двумя векторами... и он вернет значение от 0 до 1.