Самое простое: считать перечень тэгов у каждой статьи и время просмотра.
1. Посетитель задержался дольше 1 минуты - считаем "веса" уникальных, просмотренных посетителем, тегов, как отношение кол-ва просмотров одного (уникального) тега к общему (не уникальному) числу всех, просмотренных посетителем, тегов.
2. По "весу" просмотренных тегов - отбираем наиболее совпадающие, по "цепочке" тегов, статьи.
3. "Цепочки интересов" - сохраняем для новых посетителей.