Посмотри лекции ШАД. Там есть они. Коллаборативная фильтрация. Есть на их сайте, и на курсере.
Контентная фильтрация - не серьезно. По-моему, ее можно сделать тупо как "наивное решение". Взять построить вектор, содержащий количество посещений tag'в информации, где индекс - сопоставляется через словрь с нужным тагом. Далее берешь словарь[argmax(вектор)] и получаешь тег, который юзер больше всего посетил. Что тут думать?))) Отсюда и пляшешь как хочешь, хоть предсказывай куда юзер дальше пойдет, инфы достаточно для всего чего угодно.