陈 悦,董红斌,谭成予, 梁意文
(1.武汉大学计算机学院,武汉430072;2.武汉大学国际软件学院,武汉430079)
随着计算机技术的普及,个人计算机中的文档数量与日俱增.在实际应用中,对于文档的频繁修改往往会形成大量内容相关的版本,并由此出现了检索效率较低的问题.人类创造信息的能力已经远远超过寻找、组织和报道它们的能力[1].因此,如何运用科学有效的检索方式来提高用户的工作效率就显得十分重要.
多版本文档具有各版本之间内容相关性高且存在演化关系的特点.面对大量版本,记忆文档名称、时间等细节十分困难,用户更需要的是一种基于内容的检索方式.此外,版本间的关联关系可以清晰地描述版本之间的演化过程,进一步为用户提供帮助.
目前,文件系统中基于文件名和全文的检索方式虽然容易实现,但要求用户对检索的关键词极其明确,且在文档数量过多时检索效率较低.以Google Desktop为代表的商用工具运用了Web环境中搜索引擎的检索方式,其本质也是基于关键词的检索.但在实际应用中,用户很难准确地回忆起用于检索的文件名、时间等信息,也只能记起部分内容相关的关键字[2].因此,这种检索方式往往会给出大量与关键词相关的结果,仍然需要用户进行手工确认才能定位目标文档.这些问题的出现对文档检索提出了新的要求,也需要研究者们重新思考只将列表式的检索结果提供给用户是否足够,为用户提供什么样的信息才真正有所帮助.
为了解决这些问题,一些研究者开始将数据起源应用在检索当中,典型代表有Shah等[3]在Connections的框架[4]基础上建立的起源关系,Stumpf等[5]在TaskTracer中建立的起源关系,Chau等[6]提出的Feldspar等.这些研究着眼于操作系统层和文件层两个层级,记录了数据从产生到消逝的整个生命周期内所发生的变化和经过处理的信息,即数据的起源[7].结果表明,人类对于某一文档的记忆高度依赖于文档内容、与内容相关的提示信息和线索[2].也就是说,结果对于目标文档的记忆依赖于创建或使用该文档时的记忆.因此,文档的起源信息是大脑记忆中十分重要的线索,用户可以根据这些线索辨认文档,从而有效提高检索效率.
对于版本之间内容相关性较高的文档来说,其版本的修改通常都经历着Copy,Edit,Rename这样类似的文件操作.在这种情况下,操作系统级和文件级的起源信息忽略了文档内容之间的关联,不足以表明版本之间的演化关系.要想为用户提供有价值的信息,应该着眼于文档之间内容的差别和关联关系.2014年,Rinck等[8]提出了以内容为中心的数据起源追踪概念模型——Document DNA,但该模型只是利用打标的方式记录并追踪了文档内容的版本演变过程,将起源信息以三元组的形式表达,并没有具体描述如何运用这些信息.
因此,本工作针对内容相关性较高的多版本文档中存在的检索问题,重点关注各个版本文档之间内容的相互作用关系.由于教学课件的编排和修改会产生多个内容相关的版本,故本工作以教学课件中应用最为广泛的PPT格式文档为例阐述相关起源模型,用宏编程的方式抽取内容级的起源信息,建立基于PROV的细粒度起源概念模型,给出基于资源描述框架(resource description framework,RDF)语言的起源表示,并在此基础上建立相应的查询访问机制,提供直观明了的可视化方案,以期对检索结果进行扩展和解释,为用户提供更有价值的帮助信息,使其能够利用该信息快速锁定目标文档,提高工作效率.
在大量的文档中进行检索是用户经常进行的操作.将信息进行整理和优化,提供科学有效的检索方式,从而提供获取信息的便利,才能将用户从信息爆炸的困境中解脱出来.
基于文件名和全文的检索方式提供了文件名、文件类型、日期等有限的搜索途径.虽然可以直接对文档信息进行检索,但是这种方式要求用户对自身需求极其明确,否则会造成检索速度慢且效率较低.为了解决文档快速检索的问题,大量商用工具应运而生,如Google Desktop,Windows Desktop Search,OS X Spolight等.但随着个人计算机数据量的急剧增加,用户由于无法提供准确的关键字而导致检索效率下降,并出现查准率不高的问题[9].
上述方式本质上都是基于关键词的检索,要求用户提供准确的关键词才能保证效率.但在实际应用中,随着时间间隔越来越长,文档数量越来越多,用户大多无法提供准确的关键词.于是,这些检索方式会给出大量的检索结果,导致用户无从辨别真正需要的文档,只能手工进行确认.另外,内容相似的文档之间往往存在版本的演化过程,而这种基于关键词的检索方式忽略了版本之间的关联关系,可能导致用户参考了错误的版本.这些问题都对文档检索提出了新的要求,指出只将列表式的检索结果提供给用户不足以帮助其快速定位目标文档.要想提高检索效率,就要重新思考为用户提供怎样的信息才是真正有所帮助.
为了解决这些问题,一些研究者开始调查文件的起源信息对于检索的意义.Jensen等[10]的一项研究结果表明,起源事件是十分普遍的:一方面,图形化的起源信息容易被用户所理解,进而区别不同的检索结果、减少歧义;另一方面,这些信息可以帮助用户触发使用文档时的记忆,从而帮助其锁定目标文档.从记忆方式的角度来说,人类对于目标文档的记忆是依赖于创建或使用该文档时的记忆,即依赖于该文档的起源信息.用户可以根据起源信息提供的线索辨认文档,从而有效提高检索效率.迄今为止,将起源信息应用于检索的研究大致分为如下三个阶段.
第一阶段的研究主要集中在操作系统层级之上,通过检测Open,Read,Write等操作系统层次的操作来收集起源信息.典型的代表有2006年Holland等[11]提出的PASS系统,以及2007年Shah等[3]在上下文信息辅助检索工具Connections的框架[4]基础上以进程为粒度建立的起源关系.但由于该机制是建立在较底层的操作系统层级之上,需要通过大量的进程跟踪才能收集文档的起源信息.
随后,在文件系统层次上,对文件级操作进行追踪的第二阶段研究开始出现.2007年,Dietterich等[12]在TaskTracer中通过记录Copy/Paste,File Copy,Save as等文件级的操作来建立文档之间的起源关系[5],并利用图形式的起源信息对文档的来源进行解释,从而为用户提供辨认文档的线索.2008年,Chau等[6]提出了Feldspar检索工具.该工具允许用户列举与目标文档相关的邮件、收件人、文件夹等起源信息来进行搜索.但Feldspar只能对静态的元数据进行分析和记录,未对文件系统的操作进行监测,忽略了动态的起源关系信息,不足以描述文档之间的演化过程.2011年,Yamamoto等[13]同样对于动态的文件级操作进行了记录,并使用与目标文档相关的起源信息作为其存取的关键字,检索时用户可将记忆中的起源信息作为输入进行检索.2013年,Ball[14]提供了一个实时的可视化工具展示文件的起源信息.该系统同样追踪文件级操作,并证明了这些起源历史信息对于文件检索的帮助.然而,对于各版本间内容相关性较高的文档来说,文件级的起源信息忽略了内容之间的关联,不足以表明文档之间的演化关系,需要进一步细化起源粒度.
近年来,基于内容层次的起源追踪(即第三阶段)开始出现.这种方式着眼于细粒度的内容层次.2014年,Rinck等[8]提出以内容为中心的数据起源追踪概念模型——Document DNA.该模型将生物学DNA的思想与数据起源相结合,为文档打上DNA标签,用一系列规则定义当文档内容更改时DNA的变化,以此来记录文档的变化过程.但该模型只是通过这种方式记录并追踪了文档内容的演变过程,并没有具体描述如何运用这些信息来提高检索效率.
本工作针对内容相关性较高的多版本文档中存在的检索问题,以教学课件中应用最为广泛的ppt格式文档为例,重点关注各个版本课件之间内容的演化关系.本工作选择文档中的内容逻辑块为基本单位来细化起源信息的粒度,用宏编程的方式抽取文档内容变化中具体涉及的起源信息并建立了基于PROV的概念模型,进一步给出了基于RDF描述语言的起源表示方法,在此基础上使用SPARQL建立相应的查询访问机制,并为用户提供可视化方案,将文档演化过程的来龙去脉清楚直观地传达给用户.结果表明,通过这种方式对检索结果进行扩展和解释,能够为用户提供更有价值的帮助信息,节省用户时间成本,从而提高文档“再利用”的效率,将用户从信息爆炸的困境中解脱出来.
数据起源(data provenance)记录了数据从产生到消逝的整个生命周期内所发生的变化和经过处理的信息,可以理解为是数据的档案[7].
2013年,W3C(the World Wide Web Consortium)工作组定义了起源标准PROV[15-16].PROV模型是基于OPM模型[17]发展而来的,已成为了起源研究领域最新的标准.PROV是一个抽象的模型,高度概括了起源过程中涉及的实体(Entity)、活动(Activity)以及代理(Agent)之间的关系.
PROV家族推出了一系列说明文档,包括4个标准与8个工作草案,其中PROV-DM是该模型的核心,其本质上是一个获取起源信息固有元素的概念性数据模型.图1展示了PROV模型的一个高层次概述,其中的3个核心概念描述如下:①实体(Entity)是客观上存在的、数字化的、概念性的或其他类型的事物,起源记录描述的就是实体的起源,而一个实体的起源可能涉及到其他的一些实体;②活动(Activity)是描述实体怎样达到现在的状态,实体的属性如何变化成为新的实体,是现实世界的动态视角,如行动、过程等;③代理(Agent)是在活动中承担角色,承担活动的责任,可以是人、软件、无生命的物体、某个组织或其他可以赋予责任的实体.这3个概念将数据起源中涉及到的对象进行了概括.这些对象之间的相互关系以及其他一些描述起源的概念参见文献[18].
图1 PROV概要模型Fig.1 Intuitive overview of PROV
针对文档版本管理中存在的检索问题,可以应用PROV对具体的内容起源信息建模,从而描述文档演化过程的来龙去脉.
由于PROV是一个高层次的起源模型,抽象地描述了实体、活动、代理之间的关系,将PROV应用到特定的环境中时,需要根据具体情况进行相应的语义扩展.本工作以教学课件管理为例,抽取其中涉及的起源信息并建立概念模型.考虑到图片的大小及展示的清晰度问题,示例中的一些重复信息没有完全展示,在此特别说明.
教学课件管理中一个简单的典型场景如图2所示,可具体描述如下:文档PPT 1中本身含有一个知识点的描述knowledgePoint 1,Alice在此基础上增加了一个表格Chart 1,并保存为新的文档PPT 2;之后Bob又将PPT 2中的表格Chart1和文档PPT 3中的内容进行整合,形成新的文档PPT 4.在该文档版本的演变过程中,涉及到的人、文档内容的变化、操作等信息就是文档内容变化过程中需要记录的起源信息.
图2 教学课件版本内容变化的典型场景Fig.2 Typical scenes of the teaching courseware version changes
2.2.1 实体
为了细化起源信息粒度,将多版本文档起源模型中的实体划分为3个层次:文档、内容逻辑块、具体素材实体,其PROV实体的词汇表如表1所示.由表1可见:①PPT文档为最高层次的实体,即指整个PPT文档,添加从属属性Location描述其具体存储路径;②内容逻辑块,即PPT文档页面(Slide)的集合,这些集合根据文档目录(或大纲)抽取,一般为某一章或某一节,扩展一个范围属性的描述Range,描述逻辑块Section与具体演示文稿页的对应关系;③具体素材实体,是指每个内容逻辑块中所涉及到的素材,如知识点文字段落描述、公式、图表等,本工作使用Material实体来描述.另外,添加mType属性的描述用以区分素材类型,并使用Value属性提供关键字对具体素材内容进行描述.
表1 实体词汇表Table 1 Entity vocabularies
在实体的纵向层级上,Document实体与Section实体间存在关系wasMemberOf,即内容逻辑块为文档的组成部分.一个Material实体可能参与到不同的Section实体中.为保持实体的唯一性约束,本工作扩展关联关系participateIn来描述二级实体与三级实体的关系.图3是一个实体的起源模型示例.
图3 实体起源模型示例Fig.3 Example of a entity model
2.2.2 活动
在文档多个版本的演变过程中,活动是产生新版本的操作过程,即在实体的横向层级上描述导致实体版本演化的操作.本工作将PROV模型中的活动扩展为以下几种,并总结了如表2所示的PROV词汇表:①新增(Add),指对文档内容的增加,如增加新的知识点描述、增加图表素材等;②修改(Edit),指对旧版本的内容进行编辑,并形成新版本;③融合(Merge),指参照不同版本文档中的内容并将其组合成新的内容.
表2 活动词汇表Table 2 Activity vocabularies
活动产生(wasGeneratedBy)实体,同时也利用(used)实体.在文档版本演化的过程中,往往是利用旧版本的内容进行一些操作从而获得新版本.活动开始与结束的时间是帮助用户回忆文件相关信息的一个重要因素,本工作利用活动与实体之间关系的附加信息(generatedAtTime)来说明.图4是一个活动的起源模型示例.
2.2.3 代理
在诸多文档版本的产生过程中,代理可能是上述实体的所有者,这里是指原文档的作者;也可能是上述活动的执行者,也就是参与编写文档的人.代理与实体和活动之间的关系分别用wasAttributedTo和wasAssociatedWith来表达.考虑到代理是文档版本以及内容发生改变时的责任人和参与者,是用户检索时帮助其回忆的重要线索,因此需要详细记录各类代理.图5是一个代理的起源模型示例.
图4 活动起源模型示例Fig.4 Example of a activity model
表3 关系词汇表Table 3 Relations vocabularies
图5 代理起源模型示例Fig.5 Example of a agent model
2.2.4 核心概念关系描述
根据上述核心概念及其相互关系的描述,总结得到如表3所示的关系词汇表.
2.2.5 内容级起源概念模型
根据对起源信息的归纳与总结,将PROV模型具体应用在教学课件管理的环境中,对本节场景建立基于文档内容变化的起源概念模型,如图6所示.
目前,应用较为广泛的数据起源信息收集途径主要有两种:基于注释的方法和基于逆置函数的方法[7].基于注释的方法使用标注的方式来记录与数据相关的信息,虽简单有效,但需要额外的存储空间.基于逆置函数的收集方法通过结果追溯到元数据,需要进行逆向查询或构造逆向函数来对查询求逆,需要的存储空间较小,但实现复杂.然而,在编辑文档的过程中加入注释是较难实现的,而逆置函数的收集方法存在查询函数不可逆的情况,也并不适用本工作的研究环境.
图6 基于PROV的文档版本内容变化过程的起源表示Fig.6 Fine-grained PROV model of multi-version documents
起源信息的收集方法与具体的应用环境息息相关,因此本工作采用Microsoft Offi ce支持的宏编程方式对文档内容信息进行收集.通过对PPT应用程序对象的访问,可获取当前活动窗口的演示文档Presentation对象,进一步获取其中Slide对象、Shape对象等,并对文档中的具体内容信息进行访问和提取.具体过程的伪代码描述如下:
Sub CaptureContent()
......
//获取当前活动窗口的演示文档对象,并遍历其Slide对象;
For x=1 To ActivePresentation.Slides.Count
For y=1 To ActivePresentation.Slides(x).Shapes.Count
//访问每一个Slide对象中Shape对象,收集每一文档中的起源信息,包括标题Title、图片Picture、表格Table等;
......
//如获取标题的内容信息;
ActivePresentation.Slides(x).Shapes(y).TextFrame.TextRange.Text
......
Next y
Next x
End Sub
为了使内容逻辑块更为清晰,参考文档章节目录(或大纲)信息对其进行整理,把多个PPT页(Slide)集合成一个内容逻辑块Section,用户也可按照需要对其进行适当调整.保存制作的新文档时,系统将对比当前版本与源版本(参考文档)的内容差别,并提示用户对内容新增、更改或融合的活动操作进行记录,用户根据提示给出关键信息的描述即可.
将基于内容的起源信息收集之后,应用模型约束及推理对起源信息进行规范化处理.
为保证起源信息的规范化和有效性,在数据收集后应用模型定义及约束对其进行处理,避免数据冗余,标准化起源信息,并使用约束条件对其可用性和有效性进行进一步的验证.
参考PROV-CONSTRAINT标准[19],本工作结合教学课件这一应用场景的实际情况以及内容级细粒度起源模型的需求,设置了唯一性约束(uniqueness constraints)、不可能性约束(impossibility constraints)和类型约束(type constraints)3种约束条件.
首先运用定义及唯一性约束进行模型信息的规范化.根据实际应用场景,主要概念的定义及唯一性约束如表4所示.
表4 定义及唯一性约束Table 4 Defi nition and uniqueness constraints
数据规范化完成后,利用如表5所示的不可能性约束和类型约束检验数据信息有效性.模型信息的定义及唯一性约束条件保证了各核心概念及各部件关系的唯一性,规范化了起源模型数据;不可能约束及类型约束验证了模型数据的可用性和有效性.
表5 不可能性约束和类型约束Table 5 Impossibility constraints and type constraints
RDF已成为PROV模型标准描述语言的一种,在数据起源领域被广泛应用.RDF数据包含语义信息,方便计算机处理,可作为一种中间数据格式与其他系统交互,故本工作采用RDF来描述起源信息.
下面选取图2中的场景片断进行具体描述.以下是Alice在Section 1的基础上新增表格素材形成Section 2的过程信息描述:
%prefix part was ignored
本工作将文档版本管理中内容变化的起源信息表达分为基于PROV的概念模型表达层和RDF资源描述层.为满足用户对于过程中数据起源信息的查询访问,本工作针对RDF资源描述层的表示方式,使用SPARQL[20]提供查询服务.
SPARQL是W3C小组针对RDF查询与数据获取指定的一组协议,于2008年1月成为W3C的推荐标准.对于图2描述的文档内容变化过程,从用户的角度出发,查询Value为“发展历史_时间轴”的素材相关文档内容以及该内容的相关活动信息.用SPARQL语言实现查询功能的具体示例描述如下:
@prefix prov:
SELECT entityName?activityName?agentName?generatedTime
FROM
WHERE{
?specificalEntity prov:value“发展历史_时间轴”
prov:Entity?entityName;
prov:Activity?activityName;
prov:Agent?agentName;
prov:generatedAtTime?generatedTime;
}
根据以上语句的查询结果,本工作采用RDF Translator和RDFa工具将数据进行可视化处理.首先将查询结果用RDF Translator转换为RDFa的格式,然后用RDFa提取其中的标注,最后为用户提供可视化结果.由于这两种工具的使用不是本工作的研究重点,故在此不再展开叙述.
本次示例查询结果的可视化展示如图7所示,其中空心圆为叶子节点,可点击实心圆展开内容.
图7 可视化结果展示Fig.7 Visual results
图8是图7可视化结果的局部放大.可以看出,目标素材参与在es 3实体中,es3实体又是ed_2实体中的一个成员.点击实心圆展开wasMemberOf:ed_2的结果(见图9(a)),即可获得该目标素材所在文档ed2的具体存储路径.展开wasGeneratedBy:a_1节点(见图9(b)),可获取目标素材产生的过程信息,即在实体es2的基础上由Alice通过Add的操作产生,并可得知实体具体的生成时间.以此信息为线索,用户可进一步确认ed2是否为目标文档.
以上的可视化结果直观地展示了Value为“发展历史时间轴”的素材所在的文档,以及该素材实体涉及的不同版本文档间的细粒度起源关系.用户可以通过该结果快速定位目标文档,了解文档版本演化过程的细节信息,并以此为线索区分检索结果中不同版本的文档,从而避免逐一确认文档的操作,提高工作效率.
图8 图7中部分可视化结果展示Fig.8 Part of the visual results in Fig.7
图9 图8中部分可视化结果展示Fig.9 Part of the visual results in Fig.8
为验证本方法在多版本文档检索中的可行性和有效性,本工作给出了实验系统的总体设计,并结合教学课件的应用场景进行实验研究,给出了实验结果及相关分析.
本工作的实验系统主要包括4个部分:起源信息收集模块、数据加工模块、存储模块以及查询模块,总体框架如图10所示.各个模块的功能及实现方法简要描述如下:①收集模块,采用宏编程方式对内容级的细粒度起源信息进行收集;②数据加工模块,数据收集后利用定义和约束对数据进行加工处理,保证起源信息数据的规范化和有效性;③存储模块,采用RDF对起源信息进行存储与描述,提供与其他系统交互的中间数据格式;④查询模块,针对系统RDF的存储方式,选取SPARQL提供查询服务.最后根据查询结果为用户提供可视化的结果展示,描述文档版本内容演化的来龙去脉.
图10 本实验系统总体框架设计Fig.10 Framework overview of the experimental system
本工作选取个人计算机上的同一课程近3年的教学课件文件集进行实验验证,相关实验参数如表6所示.由10名研究生志愿参与实验,平均年龄为23.2岁.志愿者们对共1 000项检索任务(每人承担100项)进行了测试分析,任务描述包括“请检索出包含Chart 1的、由Alice创建的文档”等,在此假设1 000项检索任务的难度相同.
表6 相关实验参数Table 6 Parameters of the experiment
本工作分别设置3组实验进行分析,并通过统计每项检索任务所需时间来进行效率对比,每组实验均由10名志愿者完成相同的1 000项检索任务:①第一组实验不提供任何帮助信息,检索结果只有文件路径及文件名,实验者可打开文档进行手工确认;②第二组实验隐藏细粒度的内容级起源信息,只提供一级与二级实体的起源信息,实验者不可打开文档查看内容;③第三组实验提供细粒度的内容级起源信息,实验者不可打开文档查看内容.统计每组实验的检索任务所需时间.该时间由给出列表式检索结果或图形化帮助信息开始,到用户提交任务即辨认出文档或自行放弃为止.3组实验的统计结果如图11所示.
图11 实验数据统计Fig.11 Experimental data statistics
分析图11的统计数据可知,提供内容级起源信息辅助用户进行检索后,1 000项任务中的任务成功率为93.9%,其中10.2%的目标文件能在30 s之内准确辨认,24.9%的任务可以在1 min之内完成,47.3%的任务能够在1∼3 min的时间内完成,只有11.5%的任务完成时间超过3 min.第三组实验较前两组实验的总成功率与任务所需时间情况比较如表7所示,其中“+”表示较之前有所提高,“−”表示较之前有所下降.
分析表7中的数据可知,在完成检索任务所需时间方面,第三组实验辨认文档的时间大幅缩短,证明细粒度起源信息可以作为提高用户检索效率的重要线索,其中细粒度起源信息较粗粒度起源信息更有优势,能够更有效地帮助用户进行文档确认工作.在总成功率方面,第三组实验比第二组提供粗粒度起源信息的方式提高了34.3%,但总成功率比第一组手工确认方式下降了4.2%,其原因是由于第三组实验不允许实验者打开文档进行确认所致.总的来说,第三组实验提供的内容级细粒度起源信息对文档检索的成功率、效率,以及对用户的帮助性方面均有大幅的提升.
表7 实验数据统计分析Table 7 Experimental data statistics and analysis
上述实验结果表明,针对多版本文档管理中存在的文档检索问题,本工作提出的数据起源方法具有一定的可行性和有效性.在不打开文档进行手工确认的情况下,用户能够根据内容级的文档起源信息视图区分不同版本的文档,了解文档间演化关系的来龙去脉.本方法用细粒度的起源信息对检索结果进行解释和扩展,为用户提供了更具价值的帮助信息,有效节约了时间成本,能够在一定程度上避免对各个文档进行手工确认,从而提高了文档检索的效率,将用户从信息爆炸的困境中解脱出来.
个人计算机中文档数量的迅速增长对文档的检索机制提出了新的要求.本工作以教学课件为例,针对这种版本间相关度较高的文件,提供其文档内容变化过程中的起源信息对检索的结果进行扩展和解释,帮助用户快速找到真正所需的文档,从而提高其工作效率.本工作在数据起源PROV模型的基础上,抽取了文档版本变化过程中关于内容的起源信息,建立了细粒度的起源模型,用RDF语言对其进行了描述.最后给出了起源信息的查询访问机制,并为用户提供了相应的可视化方案.
由于时间和水平有限,本工作仍存在许多不足,下一步将对以下几个方面的问题进行深入研究:①本工作抽取了文档内容变化过程中涉及的3个典型操作,但在实际应用中,应有更加丰富的类型,需要进一步归纳总结;②本工作在收集起源信息的过程中暂时采用半自动化的方式,需要用户进行配合,对此,将进一步研究并完善其起源的全自动化收集方式并加以应用.