基于本体查询的图书推荐方法研究

2017-09-23 15:28任武
新世纪图书馆 2017年9期
关键词:个性化推荐本体

任武

摘 要 论文从高校图书馆读者借阅记录出发,分析读者的借阅行为,获取读者的阅读偏好值,用于构建读者偏好的本体模型。通过制定本体推理规则,完善已建立的本体模型。并通过程序脚本将SPARQL书目查询结果推荐给读者,从而实现图书馆的个性化推荐服务。实验表明该方法具有一定的可行性和应用价值。

关键词 本体 个性化推荐 读者偏好

分类号 G252.1

The Application of Book Recommendation Based on Ontology Queries

Ren Wu

Abstracts This paper utilizes ontology technology and its application in analysis of reader borrowing behaviors and the reader's reading preference for constructing reader's preference ontology model, as well as using ontology reasoning rules to realize the dynamic renewal of the Ontology model, and pushing SPARQL query results to readers by using the script program. Experiments show it is feasible and has certain practical application value.

Keywords Ontology. Personalized recommendation. Reader preference.

0 引 言

随着信息化时代的到来,图书馆的职能逐渐转变为“以用户为中心”的服务模式。如何为广大师生提供个性化和深层次的书目推荐服务,成为高校图书馆面临的一个突出问题。书目推送服务需要根据读者的借阅和检索记录,分析读者的潜在需求和阅读偏好。由于在联机公共查询目录OPAC系统中存在大量的读者借阅和检索信息,能充分揭示读者对馆藏资源的使用情况,因此,对OPAC系统中读者行为数据的收集和挖掘利用,成为高校图书馆快速建立读者书目推荐服务的一种有效途径。

目前,数字图书馆个性化推荐服务已有很多研究成果报道[1-3],根据实现技术的不同,分为基于内容的推荐、基于协同过滤的推荐以及混合推荐等方法。基于内容的推荐需要比较读者兴趣模型与项目内容特征向量之间的相似性;基于协同过滤的推荐则需要计算读者之间的相似程度,只对读者阅读行为和特征进行分析,具有较低的计算复杂度和较高的挖掘质量。

基于本体的用户建模和检索是近年来图书馆的研究热点[4-5],但将本体技术的书目应用于推荐方面的研究还很缺乏[6]。由于本体技术作为语义网的核心,具有良好的概念层次、赋值机制和逻辑推理的功能[7],在个性化的书目信息推荐中具有良好的应用前景。本文在现有的研究方法基础上,采用用户协同过滤和本体查询相结合的方法,挖掘高校图书馆读者的借阅行为数据,构建书目资源实例与读者借阅情况的映射关系,通过语义关联查询的方式将书目推送给读者,从而实现个性化服务的目的。

1方法和步骤

1.1 总体流程

本文提出的图书协同推荐和本体查询结合方法的总体流程如图1 所示。

图1的方法流程主要包括三个步骤:①从OPAC读者借阅图书的记录中构建读者与图书的向量空间模型,根据读者相似度进行聚类并提取读者偏好值; ②根据读者偏好的书目资源和读者基本信息建立本体模型,以RDF三元组的形式存储;③系统通过Jena rules对新增的本体实例进行推理,并更新生成的本体模型。通过SPARQL查询本体库的方式,将获取的数据以JSON格式返回给JQuery程序,并以网页的形式推荐给读者。

1.2数据统计和聚类分析

数据源来自图书馆OPAC的管理系统。在基于关系模型设计的数据库中,每种图书对应一条MARC记录。MARC作为机读编目格式的一种通讯标准,保存了书目的详细数据,由于MARC格式不利于检索,OPAC管理系统设计了书目记录对MARC格式的相关字段进行映射,因此可以从现有的书目表格中提取相关的字段记录。

立信图书馆的OPAC系统采用的是图创的Interlib管理软件,ORACLE数据库结构。每条书目包含传统的MARC数据具有的书目信息,自动从网上获取的图书封面、互动标签等内容[8]。主要的数据表包括READER (读者表),HODING(馆藏信息),LOAN_WORK(在借记录),LOG_CIR(借阅历史记录),BIBLIOS(书目信息表),COMMEND(书目预定表)等。通过逆向工程获取实体关系E-R模型,部分表之间的主外键关系如图2所示。根据显示的字段和表的连接,去除图书馆业务数据中与数据挖掘不相关的冗余项,编写相关的SQL语句进行数据的提取、筛选、合并以及转换等操作。

提取的信息包括书目表(书目记录号、书名、中图分类号、索书号、作者、版本、出版社、馆藏地),读者表(读者证号、姓名、专业、读者类型、学历、证件启用日、证件终止日)以及读者借阅表(读者证号、书目记录号、借阅时间、续借时间、归还时间)等数据记录。其中,索书号由分类号和种次号组成,读者借阅表的读者证号和书目记录号作为外鍵分别与读者表和书目表中的字段相对应。

通过编写程序循环提取图书馆借阅时间为2015-2016年的借阅数据。图3显示读者数据表的转换。根据读者表和借阅表中的记录,计算借阅天数和续借天数,聚类形成读者的借阅偏好和有共同偏好的用户记录。endprint

图3 读者借阅统计转换表

为了比较读者借阅偏好的相似性,将读者与图书的关系表示成为一个二维的矩阵,行向量代表某个读者对各图书的偏好值,列向量代表不同读者对某一图书的偏好值。如表1所示。

通过读者对图书的预订、借阅时间和续借时间的长短,获取该读者对该图书的偏爱程度。保存图书的时间越长,表明读者对该类书籍的兴趣越大[9]。因此可以利用这部分数据来代替读者的主观偏好程度。使用向量模型来描述读者兴趣,通过公式1计算相应的偏好值,填入表1中。

其中,

公式1主要依据读者访问图书资源的预订、借阅天数以及续借天数确定。其中Rj表示第j个图书资源,Pref(Ui,Rj) 表示Ui借阅Rj时的偏好值,设置Reservationk(Ui,Rj) 取布尔值1或0,分别表示是否预定过该本图书资源。BorrowTime(Ui,Rj) 和RenewTime(Ui,Rj) 分别表示Ui借阅和续借Rj的天数,MaxBorrowTime(Ui)和MaxRenewTime(Ui) 分别表示Ui拥有的最大借阅天数和续借天数的权值,在公式1中,当出现借阅或续借时间大于规定的最大时间时,两者的比值取为1;读者借阅行为权重的贡献大小不同,续借3 预约1=借阅2,例如依次取值为0.4、0.3和0.3。将每行读者偏好值按大小排序,将排列在前的记录保存为“有借阅偏好”,对应的借阅信息存入读者本体记录中。

将表1所得到的数据引入聚类分析的k均值算法程序,对阅读偏好相似的读者进行聚类处理,得到当前读者所属分类里的所有读者所借阅的图书,根据这些图书的借阅量对图书进行排序并且排除当前读者已经借阅过的图书,写入本体的读者偏好的记录中,将同一簇的读者记录作为有共同偏好的本体类中,值为聚类分析的结果。

1.3构建读者偏好本体模型

读者偏好本体模型包括读者类、借阅記录类、书目类、读者偏好类和部门类等,类的属性可基本采用关系数据库表的字段:根据关系表的依赖关系设置类中对象属性的值域与定义域,数据属性的值域设置为关系表格中对应字段类型。本体概念模型中的每一个类都是一个概念节点,从数据源中自动提取对象实例和对象间关系,关系表的内容作为实例(Individual)由程序导入到本体模型中。本体的构建包括读者和图书的基本信息,描述读者的借阅偏好的属性,以及对图书推荐有作用的概念。

主要概念(Classes):Book(图书)、BorrowRecord(借阅记录)、Reader(读者)、BorrowPreference(借阅偏好)、Department(读者部门)、Review(书评)…

对象属性(Object Properties): hasBorrowRecord (有借阅记录)、hasBookBorrow (有借阅书目)、hasBookRecord(有相关图书)、hasBorrowPreference(有借阅偏好)、hasSimilarPreference(有共同偏好)、hasReviewof(有书评)、hasDepartment(读者所在部门)、hasRecommandBook(有推荐的图书)…

数据属性(Data Properties): bookISBN(ISBN)、 bookNo(图书编号)、dayofBorrow(借阅天数)、freqofBorrow(借阅频次)、preferenceValue(读者偏好值)、publisher(出版社)、readerNo(读者编号)、dayofRenew(续借天数)、reservation(预订图书)、yearofPublication(出版年份)…

部分对象属性的关系表示为:

( hasBorrowRecord) = {}

(hasBorrowinBook) = {}

(hasBorrowPref) = {}

(hasSimilarPreference) = {}

(hasDepartment) = {}

(hasRecommandBook) = {} …

将上述本体词汇保存在ReaderBook.rdf中,以RDF/XML格式保存,定义命名空间前缀为 lx: http:// semantic.lixin.edu.cn/ReadBook#。

在定义上述本体类及对象属性和数据属性的基础上,分析各类资源之间的语义关联,得到如图 4所示的关系图,其中用实线表示明确的关系,用虚线表示经过推理得到的语义关联。

1.4推理规则的制定

本文在Jena Eclipse开发环境下采用Jena推理机定义的规则形式编写规则[10],类和方法主要在com.hp.hpl.jena包,编写的规则保存在项目的 rules文件中,推理机通过绑定这些规则并对本体模型进行推理,并将推理后的生成结果重新写入到ReaderBook.rdf本体模型中,从而实现本体模型的动态更新。

Rule1: [( ?a lx:hasBorrowPreference ?c ), ( ?b lx: hasBorrowPreference ?c ), not Equal( ?a, ?b ) → ( ?a lx: hasSimilarPreference ?b )]

规则 1:如果读者a 和读者b都对资源c有借阅偏好,则读者a和b有共同偏好。

Rule2: [( ?a lx:hasSimilarPreference ?b ), ( ?a lx: hasBorrowRecord ?c ), ( ?b lx:hasBorrowRecord ?d ), not Equal(?c, ?d) → ( ?a lx: hasRecommandBook ?d ), (?b lx: hasRecommandBook ?c )]

规则2:如果读者a与读者b有共同偏好,a的借阅记录是图书c,b 的借阅记录是图书d,而且 c与d不同,那么将c推荐给b,将d推荐给a。在Java中实现简单推理的部分代码如下:

Model data = ModelFactory.createDefaultModel();

data.read ( new FileInputStream ( new File ( "ReaderBook.rdf")),"");

Reasoner reasoner1 = new GenericRuleReasoner (Rule.parseRules( rule1 ));

Reasoner reasoner2 = new GenericRuleReasoner (Rule.parseRules( rule2 ));

1.5语义关系查询

采用Jena开发包,Jena支持的搜索与推理功能由SPARQL信息搜索语言实现。查询RDF格式返回给调用程序,调用程序以JSON格式输出,返回给指定页面的脚本程序。以 RDF三元组语义数据信息来描述SPARQL查询语法,比如查询所有馆藏的计算机网络的书籍编号:

String queryStr="PREFIX lx:

"lixin.edu.cn/ReaderBook/> " +

"SELECT DISTINCT ?x ?sn WHERE { ?x lx: bookISBN ?sn; lx: hasTitle ? title. " +

" FILTER regex(str(? title) ,"计算机网络")}";

InfModel inf =

ModelFactory. createInfModel(reasoner,model);

Query query=QueryFactory.create(queryStr);

ResultSet rs = QueryExecutionFactory.create(query,inf).execSelect();

在以下检索中需要用到推理,利用推理规则1和规则2,然后将获取的数据格式化为JSON数据。

查询1:查询向读者号为“151080”的读者推荐的所有图书名称,每本图书借阅次数不少于3次。

SELECT ?title

WHERE { ?x rdf:type lx:reader.

?x lx:readNo "151080".

?x lx:hasRecommendBook ?book.

?book lx:hasTitle ?title.

?book lx:FreqofBorrow ?freq.

FILTER( ?freq >=3) }

ORDER BY DESC(? freq )

查询2:输出与读者号为“151080”有共同偏好的并在同一个部门的读者所推荐的书籍名称和编号。

SELECT ?title, ?sn

WHERE { ?x rdf:type lx:reader;lx:readNo "151080".

?x lx:hasDepartment ?dept1.

?x lx: hasSimilarPreference ?y.

?y foaf:name ?name.

?y lx:hasDepartment ?dept2;

lx:hasRecommendBook ?book.

?book lx: bookISBN ?sn; lx: hasTitle ? title.

FILTER( ?dept1 = ?dept2 )}

读者通过简单的OPAC查询难以构建复杂的查詢,而在本体系统中,本体的类和实例通过属性描述关联在一起,检索过程可以通过概念和语义间的匹配实现复杂的语义查询,而本体的推理规则通过对读者查询的语义推理,完成对蕴含信息的检索,因此语义的个性化推荐能够比较容易的实现各种组合查询的目的。图5为读者登录后,系统提供的相似读者的协同推荐及同一部门读者推荐的书目显示效果。

2讨论

2.1关于关系表的转换

在获取底层数据结构时,从OPAC系统提取相关字段构建新的二维表,这个过程可能造成部分表之间的关联缺失,因此需要进行手工的调整。在设计本体的基本类时,可以考虑结合开源软件D2RQ将关系表转换为 RDF 三元组,为此需要将对应的隐性约束转化为明确的主外键的关联,如下式所示:

# Foreign keys for table book

ALTER TABLE "book"

ADD CONSTRAINT "book_ibfk_1" FOREIGN KEY ( "readerNo" ) REFERENCES "reader " ( "readerNo " );

# Foreign keys for table reader

ALTER TABLE "reader ".

ADD CONSTRAINT "reader_ibfk1" FOREIGN KEY ( "deptID" ) REFERENCES "department " ( " deptID " );

2.2语义方面的查询

目前,图书馆在个性化推荐方面运用本体推荐的方法较少,在查询方面主要是以关键词为单位进行查询,在用户和资源信息的描述方面,缺乏语义的关联,容易造成语义信息的缺失。本体通过规范化描述概念、术语,形式化定义某一领域的相关概念间的关系,描述出相关知识结构和规范。因而具有较完整的概念层次描述,及对逻辑推理的支持,完善本体中的关系描述,通过构建本体模型可以较好解决资源描述不足的问题。

借助于本體的语义层次,以及SPARQL语言的强大功能,通过SPARQL查询的方式进行个性化推荐服务,本文在这方面做了初步的探讨:从读者OPAC的借阅数据出发,构建读者偏好本体和通过本体推理完善本体模型,并采用脚本语言将SPARQL查询结果反馈到读者的登录页面,从而实现读者的个性化推荐服务。实验表明该方法具有一定的可行性和应用价值。

2.3需要完善的方面

目前的个性化推荐方法已经有很多相关的研究成果,如何将现有的研究方法与本文的方法进行比较,以及如何将较为成熟的推荐方法应用到本文的本体模型中,将是我们下一步的工作。同时考虑到SPARQL语句对于普通的用户,需要开发基于本体的字段检索界面,系统提供SPARQL查询模板,将读者查询填写的字段,自动嵌入到对应模板的相应槽中生成完整的SPARQL语句。因此,在推荐算法的实现和用户界面的统一性方面,还需要进一步的工作和完善。

参考文献:

[1] CRESPO R G,MARTINEZ O S.Recommendation System Based on User Interaction Data Applied to Intelligent Electronic Books [J].Computers in Human Behavior,2011,27(4):1445-1449.

[2]TSUJI K,TAKIZAWA N,SATO S,et al.Book recommendation based on library loan records and bibliographic information[J].Social and Behavioral Sciences,2013(147):478-486.

[3]奉国和,梁晓婷.协同过滤推荐研究综述[J].图书情报工作,2011(16):126-130.

[4]袁静.基于本体的数字图书馆个性化服务研究 [J].图书馆建设,2009(1):66-69.

[5]李志隆,王道平,关忠兴.基于领域本体的用户兴趣模型构建方法研究[J].情报科学,2015(11): 69-73.

[6]郑美玉.基于本体论的高校图书馆个性化书目推送系统[J].图书情报工作,2010(11): 108-11 ,135.

[7]白海燕,乔晓东.基于本体和关联数据的书目组织语义化研究[J].现代图书情报技术,2010(9): 18-27.

[8]李田章.基于Mashup模式的OPAC资源整合:以整合豆瓣网图书封面为例[J].图书馆论坛,2011(5): 119-121.

[9]邱均平,张聪.高校图书馆馆藏资源协同推荐系统研究[J].图书情报工作,2013(22):132-137.

[10] APACHE.Apache Jena [EB/OL].[2016-10-20]. http://jena.apache.org/index.html.

任 武 上海立信会计金融学院工程师。 上海,200000。

(收稿日期:2016-- 编校:方玮)endprint

猜你喜欢
个性化推荐本体
水果连连看
眼睛是“本体”
一种采暖散热器的散热管安装改进结构
一种新型水平移动式折叠手术床
基于远程教育的个性化知识服务研究
基于链式存储结构的协同过滤推荐算法设计与实现
个性化推荐系统关键算法探讨
基于协同过滤算法的个性化图书推荐系统研究
文本数据挖掘在电子商务网站个性化推荐中的应用
Care about the virtue moral education