基于数据分析的图书定位排架系统建设
2022-08-03宋丽梅高海平
宋丽梅,高海平
(东北大学 图书馆,辽宁 沈阳 110819)
0 引言
根据教育部高等学校图书情报工作指导委员会《普通高等学校图书馆评估指标》的要求,普通高等学校图书馆文献资源建设方面需要达到每个学生平均100 册图书,中外文图书年更新率达到新书品种与馆藏种数之比为3%及以上[1]。 不断增长的图书总量和有限的馆舍空间面积使得大多数高校图书馆存在书多空间少、倒架工作频繁、图书易乱架且难寻找等现象。 随着图书馆空间再造的进行,高校图书馆的藏书空间被再一次划分出去,分馆的建立以及密集书架的配置虽然在一定程度上解决了图书多、空间少的问题,但如何更有效地利用现有空间合理管理图书,为图书提供科学的定位、排架,依然是所有图书馆面临的实际问题。
1 图书定位排架研究现状
国内现有的图书定位排架方法主要有两种。
(1)基于RFID 技术的图书定位排架。 根据不同的实现技术,可以分为动态定位模式和静态定位模式[2]。 其中,动态定位模式需要对现有的书架进行改装或更换,成本过高,所以一直没有得到广泛应用;目前,绝大多数图书馆采取的是静态定位模式,它可通过全书定位法、首书定位法及邻居定位法等方法定位图书[3],这种模式下的图书定位准确率会随着使用时间和书架调整变得越来越低,用户体验感降低[4],重新定位图书又会耗时耗力。 总结RFID 在国内使用的具体情况可以看出,RFID 技术在定位图书方面初次定位准确率很高,能很好地发现“藏匿”的图书,也利于图书的盘点,但随着时间的推移及新书的增加,其定位的准确度会迅速下降,重新定位需要大量的人力物力。
(2)利用软件建立虚拟排架系统进行图书的定位排架。 这种方法主要利用索书号对比的方式,对数据库中的图书进行虚拟排架,并将图书所在的地理位置通过前台网页展示给读者,便于读者查找图书[5-7]。 早期的系统是通过图书条码进行定位的[8],通过人工扫描的方式将单元书架的首末图书条形码输入系统,系统进行索书号的对比,将处于首末图书索书号区间内的图书定位至此书架中。 有部分图书馆也利用系统对密集书库进行管理,如北京大学图书馆昌平储存馆密集书库管理系统[9]。 为了增加用户体验度,很多图书馆会结合Flash 或网页技术,将图书的书架定位信息通过生动直观的图形、动画等形式展现给读者[10-11]。 通过数据库的方式进行图书定位排架,具有实用性强、投入资金少的特点,但从系统的设计来看,大部分的系统都是从逻辑计算角度实现图书的排架,并未将图书的增加、剔旧、流通等因素考虑进去,不利于书架的合理运用。 为保证系统与现实的排架一一对应,需要进行多次的串架工作。
对比上述两种图书定位排架方法的优缺点,结合图书馆的经费、图书数量及实际需求,笔者认为,对于藏书量较大、馆藏空间不足且经费有限的图书馆,设计一个基于数据分析的图书定位排架系统具有一定必要性。
2 数据分析与处理
根据图书馆图书定位排架原则,系统需要实现以下功能:从图书馆角度,系统能够合理安排各类图书的位置,尽量避免串架、倒架的发生;从读者角度,能够通过查询功能查找到图书所在的位置;此外,图书的物理位置与逻辑位置要求一致。 为了尽可能地科学利用馆藏空间,采用数据分析的方法,将各类图书的首书分配至固定的架位,其余图书与首书的索书号进行对比,根据图书的厚度及架位的长度确定待排架图书的位置,并将该书的位置信息通过网页的形式传递给读者,实现图书的定位排架功能。
2.1 索书号的处理
图书索书号又称排架分类号,是馆员排架和读者查找图书的依据。 图书定位排架系统需要将图书按照索书号进行排序,简单按照ASCII 码对图书的索书号进行字符大小排序,会因索书号构成中的种次号、分类号中“.”“-”等特殊符号,使虚拟的排列次序与实体图书的排列次序有较大出入。 此时,需要对索书号进行预处理,处理目的是使实体图书与虚拟排架系统的排列顺序一一对应。 将索书号按照符号“/”分隔成若干个子字符串(通常是2 ~3个区间),然后将第一区间字符串中的字符“-”替换成“&”,这种替换主要是为了使第一段字符串能够按照计算机排序。然后将所有的数据依照第一区间字符串、第二区间字符串、第三区间字符串、条形码进行排序,这样书目列表的顺序就是图书在实际上架过程中的顺序。
2.2 书籍厚度
图书的厚度直接影响到一层书架图书的数量,在具体操作过程中,对每本图书进行厚度的测量是不可行的。 考虑到数据的可获取性及精准度,采用抽样的方法对纸张的厚度进行估测,并通过提取ALEPH 系统中的215 载体形态项图书页码字段,计算每层书架能摆放的图书总量。
2.2.1 纸张厚度的确定
根据实际情况,为了合理地取得纸张厚度值,采取抽样调查的方式,随机抽取精装图书、平装图书各100 本,提取每本书的书内页码(不包括封面),测量每本书的厚度。 采取进位制精确至毫米,利用公式:每张纸的厚度=图书厚度/(页数/2)(精度确定为小数点后4 位), 最后算得每张纸厚度大约为0.031 mm。
2.2.2 系统图书页码的提取与处理
为了获得每本图书的页码,使用ALEPH 系统的服务功能,分两个步骤完成。
步骤1:先形成一个检索记录集。 在编目模块中,选择中文文献库,运行“服务”—“检索记录”—“检索编目记录ret-01”先检索出需要的数据,填写输出文件名,选择要导出的编目记录系统号,提交任务,得到一个检索结果集。 根据实际情况,选择具体的检索字段。
步骤2:利用print-08 输出结果集,在任务管理器“批处理日志”中,查看本步骤是否执行成功,成功后进行下一步操作。 在“输入文件”中填写步骤1 中得到的结果集名称,在“输出文件”中填写想要保存成的文件名,可以加上字母与输入文件名进行区分。 在“报表格式”中选择“作者|题名|出版社|页码”,提交任务。 待任务完成后,在“任务管理器”—“文件列表”中可以看到执行后的文件,将该文件下载到本地即可。
由于系统提取的页码格式不统一,且存在书前页、正文页码、书后页码及图版页码等形式,因此将所有的页码相加作为最后的书页数量较为合理。 为了方便程序计算图书的总页码,需要预先将罗马数字转换为对应的阿拉伯数字。 对于只标注册数的数据,需要人工标注,以备后期利用网络或实体书查找图书的页码信息。
2.2.3 馆舍容书量的计算
馆舍容量的测定指架位的总长度。 判断一个图书馆能容纳图书数量的多少,主要看放置图书的书架规制和数量。 这是一个相对稳定的数据,根据各馆的实际情况很容易获得。 以高校图书馆书架为例,书架通常分为A,B 两面,每面有6 层的单元书架,若干书架合理排序进行空间布置。 对相同规格的书架进行测量,能很容易算出图书馆总架位的长度。
2.2.4 图书动态数据管理
图书排架的难点在于图书的数量是动态变化的。如果图书馆的馆藏空间足够大,或者剔旧工作完美进行,那么按照图书馆学的理论,图书馆书架的满架率在70%左右,数值太大不利于找书,增加新书时倒架的频率过高,数值太低则浪费书架的藏书空间。 在图书馆空间比较紧缺的情况下,需要考虑图书的动态数据,如藏书量、借阅量、增长量及剔旧量。 借阅量主要受借阅周期、借阅频率、借阅时长影响;增长量是计算某个小类图书的年平均增长量。 结合图书的厚度数据,利用公式(L藏书量+L增长量-L借阅量-L剔旧量)/L馆藏容量可以计算出每类图书占据的书架长度比例,进而确定一定空间内架位首书的位置,确保避免频繁地串架、倒架。
2.2.5 图书位置信息显示
将图书馆中所有的书架按照馆藏地、楼层、书架排号、面信息、架信息、层信息及位信息划分为一个基本的单元,图书的位置信息可显示为“2 排A 面3 架6层3 位”。 在程序实现过程中,需要定位每类图书的首书位置,再将已摆放图书的总厚度与书架的宽度对比,当总厚度超过书架的宽度时,图书转向下一层开始摆放。 此外,当分类号改变时,图书也需要转向下一层开始摆放,部分程序代码如图1 所示。
图1 部分程序代码
3 系统设计与实现
根据系统分析及相关数据运行要求,抽取图书馆部分数据作为实验数据,进行代码的初步运行,检测本系统的可操作性。 实验过程中采用SQL 数据库,利用intelij idea 作为开发工具,Spring,SpringMVC,MyBatis 作为框架版本,tomcat8.5 作为应用服务器开发了一个适用于Windows 系统的图书定位排架系统,并采用HTML5,CSS 和JS 相结合的方式将图书的定位排架信息以网页的形式展现给读者,整个系统主要包括系统数据库、后台数据处理模块、后台数据维护模块和前台网页检索与展示模块。
3.1 系统数据库的构建
选取SQL 作为系统数据库,将实验数据按照馆藏地的不同分别创建不同的表单,分别为:hnsk,hnkj,nhsk,nhkj。 4个表单中的字段信息有:条码号、题名、著者、ISBN、出版社、出版年、馆藏地、索书号、页码。将这4个表单导入数据库中,利用java 语言将索书号进行重新排序,计算每本图书的长度,根据架位比例确定个别架位的首书,对比形成另外一个馆藏地信息表单。 表单中包含的字段信息有:条码、题名、馆藏地、排、面、架、层、位,此表单中的图书位置信息将以网页的形式提供给读者。 当新书到馆后,通过更新基础表单的方式,实时更新图书的位置信息。
3.2 后台的搭建与维护
SSM(Spring +SpringMVC +MyBatis) 框 架 集 由Spring,MyBatis 两个开源框架整合而成(SpringMVC是Spring 中的部分内容),常作为数据源较简单的Web 项目的框架。 在本系统的开发过程中,利用了SSM 框架搭建平台。
其中,Spring 在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象;SpringMVC 在项目中拦截用户请求,它的核心Servlet即DispatcherServlet 承担中介或前台的职责,将用户请求通过HandlerMapping 去匹配Controller,Controller就是具体对应请求所执行的操作。 SpringMVC 相当于SSH 框架中的struts。 mybatis 是对jdbc 的封装,它让数据库底层操作变得透明。 MyBatis 的操作都是围绕一个sqlSessionFactory 实例展开的。 MyBatis 通过配置文件关联到各实体类的Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的sql 语句映射。 在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql 命令。
在具体的实现过程中,页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据(见图2)。
图2 操作流程
3.3 前台网页检索与展示模块
在前台网页制作过程中,采用HTML5,CSS 和JS相结合的方式,制作了一个简单的查询页面,网页包含的信息有图书馆常用LOGO、读者查询窗口。 读者可通过题名、条码、索书号等多种形式查找单册图书。根据读者的检索需求,系统通过查询数据库,可以调取相应图书的信息,并显示具体的架位信息(见图3),读者根据系统提供的架位信息获取指定图书的地理位置。
图3 图书架位查询结果
4 总结
基于数据分析的图书定位排架系统,对读者和图书馆员来说,具有现实意义。 图书馆员增强了图书管控能力,按照图书的主题和厚度进行合理布局,减少倒架工作的发生。 此外,能宏观地了解各类别图书的数量发展情况,以及空间需求情况,在大规模的图书搬迁过程中,系统可以为图书馆上架提供一定的依据;对于读者来说,可以准确获取图书的所在地,快速、准确地找到目标图书。