Lenskit: что такое канал, боковой канал, типизированный боковой канал
Как и название. Я не понимаю концепцию канала, побочного канала и типизированного побочного канала в исходном коде Lenskit. Кто-нибудь может дать мне краткое объяснение? Благодарю.
1 ответ
LensKit ведущий разработчик здесь.
Разреженные векторы и оцененные идентификаторы используются для привязки значений к идентификаторам (обычно пользователям или элементам). Боковые каналы - это механизм, связывающий дополнительные значения с каждым идентификатором. Это дополнительные данные (дополнительный "канал" данных), которые идут вместе с "первичными" данными.
"Типизированные" боковые каналы могут хранить данные любого типа (строка, список, что угодно). Тип связан с ключом, используемым для доступа к данным, поэтому вы можете выводить данные безопасным для типов способом.
"Распакованные" побочные каналы (иногда называемые "побочными каналами", особенно в старом коде) - это оптимизированная реализация побочных каналов Double
,
Одно из мест, где они используются, - это ItemItemScorer
сообщить, сколько соседей он использовал для оценки каждого элемента. FallbackItemScorer
использует типизированный боковой канал для сообщения о том, какой из пунктов оценил результат.
Боковые каналы несколько запутанные и сложные, хотя. Мы рассматриваем способы изменения их работы в LensKit 3.0, чтобы сделать его более очевидным.