阅读推荐算法

英国Huddersfield大学的Dave Pattern (“Self-plagiarism is style”博主,Library Journal 2009年度人物Movers and shakers),早在七年前就在自家OPAC(Horizon系统)实上现了借阅推荐:people who borrowed this, also borrowed…。这是他当年的介绍(写博文时应该还在设想阶段):
using “circ_tran” to show borrowing suggestions in HIP (Nov 17th, 2005)

差不多一年前,他又写了一篇更详细介绍实现推荐借阅的博文,不仅仅是推荐流通次数多的,而且推荐那些流通次数不那么多的──长尾部分更应该推荐。因为他发现通常按借阅次数的推荐方式,不但被推荐的是本来就比较流行的,而且总是相对泛但不那么专的图书,比如给一本MySQL的书推荐的通常是关于数据库的,而非专门讲MySQL的:
Sliding down the long tail (Mar 23rd, 2011)
本篇我曾向同事推荐过,可操作性很强(无论对长尾还是按总流通量的一般推荐)。博文下某人留言抱怨没给代码,博主回复说,只需要二个数据库表──一个放借阅历史(即借者ID和图书ID),一个放每本书的总外借量,准备好后代码自然就有了。

今天看到他在设想将推荐扩展到电子资源了,基于同样的算法,数据则来自图书馆集成系统(借阅历史)、链接解析器及EZProxy日志:
“People who looked at this thing, also looked at this stuff…” (Feb 19th, 2012)
他基于一个5百万条记录的数据库(70%是借阅记录,其余是期刊访问),做了一个简单的原型:http://library.hud.ac.uk/australia/perl/test/rec2.pl
可以点击左上角的pick random item,看看不同的推荐结果,光标移在题名上显示的数字是[同使用人数/总使用次数]──起点可能是期刊、也可能是图书,被推荐的左栏是期刊,右栏是图书,不一定都有结果。

[update 2012-2-25] Dave又补充了针对学科/课程做限定的设想,使推荐更有针对性:
More “stuff like this”… (Feb 21st, 2012)

附记:关于推荐的隐私问题
推荐基于读者ID的同现,但并不泄露具体的ID。通常有较多读者使用才会得到推荐(即使是考虑长尾,也是针对“同使用人数/总使用次数”较大的情况),并不能由此推测出具体是哪些读者。