首页 理论教育高校图书馆大数据应用模式和实证研究

高校图书馆大数据应用模式和实证研究

【摘要】:图4.3论文数据库和图书数据库本体模型和聚合元数据关联。设有两篇论文的题名分别为:论文A:大数据时代数字图书馆面临的机遇和挑战论文B:大数据时代下图书馆的挑战及其应对策略按以下步骤计算它们的相似程度。

1.文献数据库聚合

以学术论文数据库和馆藏书目数据库为基础数据库,采用关联数据技术实现两者聚合,为文献大数据的分析和应用提供“高相关度”的关联知识库。聚合过程如图4.3所示,主要包括本体模型构建和元数据关联两部分。

(1)本体模型构建。一般由“学术论文”和“图书”两个类(Class)构成,各类的属性及关联关系如图4.3所示,属性对应的数据值来自于领域本体数据库。经过调研,选择W3C组织推荐的知名本体库(图例部分)确定关联关系和属性类别。

图4.3 论文数据库和图书数据库本体模型和聚合

(2)元数据关联。为了实现论文库和馆藏书目库的“高相关度”文献的关联,首先分析文献之间的相关度。这里采取“字符比较”和“相似度计算”两种关联方式,前者适用于有较短字符串的元数据,后者适用于有较长文本的元数据。

①“字符比较”关联。选取学术论文库中元数据“论文作者”“论文关键词”,对应馆藏书目库中“图书作者”“中图法分类名”。共同特点是字符串简短,可通过字符比较的方式实现关联:如果两者字符相同,就将两条记录的id号关联起来,并定义权重,权重值的大小反映该类型关联的重要程度。

②“相似度计算”关联。选取学术论文库中元数据“论文篇名”和“论文摘要”,对应图书库中的“图书书名”和“图书内容简介”。其共同特点是文档较长,可通过计算文档相似度的方法实现关联:首先应用软件NLPIR[21],将文档拆成一个个分词,应用Spark相关函数统计分词的词频作为分词权重,构建分词向量空间模型,然后应用公式计算文档相似度Sim(D1,D2)并归一化,将其结果作为该类型关联的权重WSim

公式中l为上述向量空间模型的分词列表长度,wi1、wi2分别为文档D1、D2对应分词的权重。

以下举例说明相似度计算技术。

设有两篇论文的题名分别为:

论文A:大数据时代数字图书馆面临的机遇和挑战(D1

论文B:大数据时代下图书馆的挑战及其应对策略(D2

按以下步骤计算它们的相似程度。

第一步:分词

句子A:大数据/时代/数字/图书馆/面临/的/机遇/和/挑战

句子B:大数据/时代/下/图书馆/的/挑战/及其/应对/策略

去掉停用词:“的,下,和,及其”

第二步:列出所有的词

大数据,时代,数字,图书馆,面临,机遇,挑战,应对,策略

第三步:计算词频

句子A:大数据1,时代1,数字1,图书馆1,面临1,机遇1,挑战1,应对0,策略0

句子B:大数据1,时代1,数字0,图书馆1,面临0,机遇0,挑战1,应对1,策略1

第四步:写出词频向量

句子A:(1,1,1,1,1,1,1,0,0)

句子B:(1,1,0,1,0,0,1,1,1)

第五步:计算文档相似度

使用公式(1),

计算过程如下:

至此,得出两篇论文题名的相似度为0.6172。

③构建Spark RDD三元组。三元组格式为(id1,id2,W),其中id1和id2是文献的id号,W等于两类关联权重Wchar与WSim之和。在代码实现过程中,引入Spark的RDD函数包(import org.apache.spark.rdd.RDD),调用Map函数的filter和flatmap等方法实施元数据与RDD的映射和交互操作,调用Join、Reducebykey和Groupby等函数实现文献id之间的关联。

2.文献排名

在上一步骤中,系统产生海量的文献关联记录,由于用户难以判断各文献的价值,需要对其排名:将与用户当前浏览的记录(用户感兴趣的文献)内容高度相关的文献排在TOP N位置。Spark GraphX图分析工具包可以用于海量文献的快速排名。作为分布式共享内存的图处理框架,Spark GraphX在主从式集群上实现了图的内存计算,在图的加载、节点和边处理以及相邻节点计算等方面更加优化,因而性能有较大提升。应用GraphX技术的排名包含以下四个过程,如图4.4所示。

图4.4 文献排名流程

(1)创建Graph(vertices,edges)并初始化为空图;

(2)将文献聚合产生的RDD转换为节点和边:从图书RDD和论文RDD文件分离出“图书id”或“论文id”,作为节点vertices(文献id,节点权重)中的文献id,其节点权重的初始值暂时设置为0;将RDD中格式为(id1,id2,W)的每一条记录对应转换为边edges(文献id1,文献id2,边权重),边权重初始值为RDD记录中的W值;

(3)对图中Graph(vertices,edges)所有节点,计算其所连接边的总权重,并将总权重设置为节点vertices的权重值;

(4)按照节点的总权重值从大到小排序。在检索界面的列表中按权重值大小显示检索结果。

代码实现过程中,引入Spark GraphX包(import org.apache.spark.graphx.{Edge,Graph,VertexId,VertexRDD}),调用其中的Graph(vertices,edges)方法构建图,aggregateMessages函数计算总权重,调用Ordering函数对节点总权重排序。