正则表达式在控制MARC数据质量中的应用研究
2014-07-27徐延华
徐延华 李 静
(河南农业大学图书馆,河南 郑州 450002)
正则表达式在控制MARC数据质量中的应用研究
徐延华 李 静
(河南农业大学图书馆,河南 郑州 450002)
随着网络和信息技术的发展,联机编目得以实现,编目工作的重心也由传统的著录方式向编目规范控制工作转变。本文详细介绍了正则表达式以及用正则表达式的匹配规则来规范MARC数据的方法,为有效控制MARC数据质量、提高审校MARC数据的效率提供了思路。
marc数据;正则表达式;质量
近年来,随着计算机网络与信息技术在图书馆的广泛应用,大大推动图书馆编目工作发展,图书馆联机编目得以实现,编目工作的重心也由传统的著录方式向编目规范控制工作转移。同时,CNMARC经过几十年的发展,现也成为当前国内管理中文文献资源中最具权威性的一种标准化数据格式,广泛应用于我国各类图书馆。它的应用为实现我国书目数据的标准化和规范化,进而实现书目信息的共建共享提供了可能。但目前,诸多图书馆仍然存在的中西文编目格式“不统一”,编目数据“不规范”,字段信息“不准确”等质量问题的存在,MARC数据的质量得不到保证,不能给读者提供全面而准确的文献信息,读者检索机读目录的效率与兴趣将会大大降低,也直接影响图书馆自动化系统的功能发挥,使无障碍的书目数据交换未能圆满实现。因此,对MARC数据进行质量控制研究,具有十分重要的现实意义。
1 编目数据库中MARC数据常见问题
1.1 MARC数据不规范,遗漏一些必要的检索点
一个书目数据库是由一条条书目记录组成的。它的检索功能必然受每一条书目记录检索点的制约。字段则构成数据库的最小单元。CNMARC的字段设置分0~9十大功能块。这十大块,基本涵盖了文献的所有内部、外部特征,提供了更多的检索点,方便读者多途径、多角度地进行检索。能提供检索点的字段主要有O——(部分)、2——(部分)、4——(全部)、5——(全部)、6——(全部)、7——(全部)这六大块。如500(统一题名)字段、517(其他题名)字段和610(非控主题)字段等,在许多文献资源揭示中被忽略或遗漏,这样读者利用其他题名或其他主题检索时,就会检索不出所需结果。如:2001#@a乱世佳人@Aluan shi jia ren@f(美)米切尔著@g黄怀仁等译(marc数据来源于河南农大图书馆),如果没有517字段,这样用“飘”去检索,就会检索不出。除此之外,在文献编目中还存在分类标引不当,主题标引、索书号确立不正确等很多质量问题,从而降低了MARC数据的规范化、标准化程度,限制了读者最大限度地使用,也为书目数据共享造成障碍。
1.2 著录字符不规范
MARC数据有其独特的数据结构标准,包括头标区、目次区和数据区,是一种变长的数据存储格式,这些数据在输入时如有差错就会影响用户检索结果。在文献著录过程中,最常见的是著录字符不规范,文字输入性错误。文字输入性错误是影响用户检索,导致漏检与误检的重要原因。例如将题名前无意识地加了个空格,题名中的间隔号错输为破折号;著录中出现错别字,《四世同堂》录成《四世同党》,《现代汉语词典》著录成《现代汉语词典》,将“余”录成“佘”;ISBN号、分类号、索取号中出现错号,字母、数字的全角、半角不一致,字母大小写不一致,选用键盘符号不一致,选用字母类型不一致,如010@a错为@b,M516/ 7812等,这些都将会影响著录质量,造成错检、漏检[1]。
2 MARC数据与正则表达式
MARC数据是机读环境下作为准确的描述揭示文献内容,并能被用户顺利利用一种文献信息组织语言。这种语言表达的准确与否直接影响着读者的查全率和查准率。不规范、不准确的MARC数据,就会造成读者的误检、漏检现象。而正则表达式就是一种控制和分析用户输入,提高数据质量控制的常用方法,其最初应用于神经网络,是一种模式匹配方法,而且具有简洁、通用、快速的优点,可对任何类型数据及形式进行校验,更广泛应用于数据格式验证、文本数据解析等方面。所以,如果利用正则表达式进行MARC数据字段著录输入校验,对MARC数据必备字段进行查重审核,不失为提高MARC数据质量的“一把金钥匙”。
3 正则表达式
3.1 正则表达式定义
正则表达式(regular expression)描述了一种字符串匹配模式,用于检查一个字符串是否含有符合匹配规则的子串、将匹配的子串做替换或者从某个串中取出符合匹配规则的子串等[2]。
3.2 正则表达式的规则
正则表达式是由普通字符和特殊字符组成的文字模式,这些文字模式作为一个匹配规则模板与被检测的字符串进行匹配,并返回匹配结果。
普通字符包括数字、字母、汉字、下划线和在正则表达式中没有特殊含义的标点符号,例如:“/”、“-”、“:”、“.”等标点符号都是普通字符,而“+”、“”、“^”、“$”等标点符号在正则表达式中都有特殊含义属于特殊字符。
3.2.1 普通字符
普通字符在正则表达式中匹配被检测字符串中与其本身相同的一个字符,要与2个及其以上普通字符组成的表达式匹配成功,被检测字符串中必须含有与表达式中字符组成以及先后顺序完全一致而且中间没有多余字符的子串。
例如:表达式“-”,匹配“-45”、“图书馆-”、“123-图书馆”等含有字符“-”的字符串;表达式“书”,匹配“图书馆”、“书香茶馆”等含有字符“书”的字符串;表达式“书馆”,则只匹配字符串“图书馆”,不匹配字符串“书香茶馆”,后者虽然同时含有“书”和“馆”这2个字符,但因其中间多了“香”和“茶”这2个字符,所以匹配失败。
3.2.2 特殊字符
特殊字符是有特殊含义的标点符号,它使正则表达式具备了处理能力。正则表达式的特殊字符较多,本文不再逐一介绍,只举例说明在做MRAC数据匹配时常用到的特殊字符[3]。
“^”匹配被检测字符串的开始位置。
例如:表达式“书”匹配字符串“图书馆”,但表达式“^书”不匹配字符串“图书馆”,因为字符“书”不在字符串“图书馆”的开始位置,字符串“书馆”则与其匹配。
“$”匹配被检测字符串的结束位置。
例如:表达式“书馆”匹配字符串“图书馆”、“图书馆大楼”,但表达式“书馆$”则只匹配字符串“图书馆”,因为子串“书馆”不在字符串“图书馆大楼”的结尾位置。
“”也叫转义字符,与普通字符与元字符组合后,会产生新的特殊含义。
例如:表达式“w”匹配下划线或任意一个数字、字母、汉字;表达式“d”匹配数字0至9;“+”、“”、“^”、“$”等是特殊字符,在表达式中有特殊含义,要想匹配其字符本身,可以使用表达式“+”、“\”、“^”、“$”依次匹配。
“[]”匹配方括号中的任意一个字符。
例如:表达式“[图书馆]”,匹配字符串“图画”、“书报”、“体育馆”等含有“图”、“书”、“馆”中任意一个字符的字符串;表达式“[0123456789]”和“[0-9]”功能相同,匹配0至9之间的任意一个数字;表达式“[a-z]”,匹配a至z之间的任意一个小写字母。
“|”表示或的意思,匹配符号“|”两端子表达式中的任意1个。
例如:表达式“[0-9]|[a-z]”,匹配数字0至9或26个小写字母中任意1个。
“()”用来定义特殊字符作用的范围。
例如:表达式“图书馆|室藏书”,匹配含有子串“图书馆”、“室藏书”的字符串,而表达式“图书(馆|室)藏书”,则匹配含有子串“图书馆藏书”、“图书室藏书”的字符串,因为圆括号“()”限定了字符“|”的作用范围,使之只作用于括号内的子表达式。
“+”匹配前面的子表达式重复至少1次后生成的表达式。
例如:表达式“书+”,匹配 “图书馆”、“图书书馆”、“图书书书馆”等含有字符“书”的数量等于或超过1个的字符串,但不匹配像“图馆”这样的不含有字符“书”的字符串。
“{n}”,n为非负整数,它匹配前面的子表达式重复n次后生成的表达式。
例如:表达式“书{2}”,匹配字符串“图书书馆”,但不匹配字符串“图书馆”。
“{n,}”匹配前面的子表达式重复至少n次后生成的表达式。
例如:表达式“书{2,}”,匹配“图书书馆”、“图书书书馆”、“图书书书书馆”、“图书书书书馆”等含有连续2个及其以上“书”的“字符串”。
“{n,m}”,n、m均为非负整数,m>=n,它匹配前面的子表达式重复最少n次最多m次后生成的表达式。
例如:表达式“书{2,4}”,可以匹配上个例子中所有的字符串,但当所匹配的字符串中含有的“书”字符超过4个时,只匹配该字符串中前4个“书”字符。
4 正则表达式在规范MARC数据质量中的应用
MARC数据包含的信息较多,仅以ISBN号、索取号这些书写规则比较复杂的字段为例,说明如何利用正则表达式来检验其是否符合标准的书写规则,从而规范MARC数据的质量。
4.1 匹配ISBN号的正则表达式规则
图 1 ISBN号正则表达式书写规则对应图
如图1所示,ISBN号由5段数字组成,中间用字符“-”连接,例如:978-7-471-81086-x。第一段是ISBN号专用前缀,固定数字978不变,对应的表达式为“978”;第二段是地区国别语种代码,为任意1个1位数字,对应的表达式为“[0-9]”;第三段是出版社编号,为任意1个3位数字,表达式“[0-9]”匹配任意1个1位数字,用表达式“{3}”将其重复3次便得到匹配任意1个3位数字的表达式“[0-9]{3}”;第四段是图书序号,为任意1个5位数字,同理其对应的表达式为“[0-9]{5}”;最后一段是校验码,为数字0-9或字母x中的任意一个字符,表达式“[0-9]”匹配任意1个1位数字,在其集合中加上一个字母“x”,便得到与之匹配的表达式“[0-9x]”。将五个表达式按顺序用字符“-”连接起来得到的表达式“^978-[0-9]-[0-9]{3}-[0-9]{5}-[0-9x]$”便是匹配完整的ISBN号的表达式,可以之检验MARC数据中所有的ISBN号,找出不符合书写规则的数据。表达式的开头和结尾分别加上了标识字符串开始和结尾的字符“^”、“$”,原因是不加开始和结尾标识的表达式匹配的字符串范围过宽,只要字符串中任意一个位置含有符合表达式匹配规则的子串,则视为整个字符串符合匹配规则,例如:去掉开始和结尾标识的表达式“978-[0-9]-[0-9] {3}-[0-9]{5}-[0-9x]”,除了匹配字符串“978-7-471-81086-x”外,还匹配不符合ISBN号书写规则的“abc978-7-471-81086-x”、“978-7-471-81086-x图书馆”、“阅览室978-7-471-81086-xgh”等字符串。
4.2 匹配索取号的正则表达式规则
索取号由分类号、著者号、种次号、版次、卷册号组成,其中分类号、著者号是必备字段,部分分类号不含有种次号、版次和卷册号或只具备其中1到2个,排列格式为:分类号/著者号-种次号/版次:卷册号,例如:TP13/4434-2/2:2、S435.13-62/6071、S513/1024/2。
现在所用的图书分类法一般都是中国法,中图法将图书分为22个大类,分别用L、M、W、Y之外的22个大写英文字母表示。分类号除T大类以2个大写字母(T加1个上其他字母)开头其他21大类都以1个代表该类的大写英文字母开头,英文字母之后接数字,部分分类号还含有字符“.”和“-”,长度一般不超过20位,对应的表达式为“([A-KN-SUVXZ]|T[BDE-NPQSUV])[0-9.-]{1,20}”。其中表达式“[A-KN-SUVXZ]”匹配L、M、W、Y、T之外的任意1个大写英文字母,T虽然也代表一个大类,但因T大类分类号均是两个英文字母开头,分别为TB、TD、TE-TN、TP、TQ、TS、TU、TV,所以单独以表达式“T[BDE-NPQSUV]”匹配,与前面表达式以字符“|”连接,匹配代表22个大类的除T以外的大写英文字母或者TB、TD等T开头的2个大写英文字母;表达式“[0-9.-]{1,20}”匹配分类号中字母后面的数字部分,有的分类号含有字符“.”和“-”,在字符集合“[0-9.-]”中也作了相应的匹配,“{1,20}”用于匹配分类号数字部分的长度,限定最短1位,最长20位。
著者号由4位数字组成,对应表达式为“/[0-9]{4}”,字符“/”为索取号书写规则中规定的著者号的引导标识。
种次号由1至2位数字组成,第1位数字不为0,以表达式“[1-9]”匹配,第2位数字为任意数字,以表达式“[0-9]{0,1}”匹配,其中表达式“{0,1}”表示匹配0次或1次,整个连接起来前面再加上引导字符“-”,就得到匹配整个种次号的表达式“-[1-9] [0-9]{0,1}”。有的索取号不含有种次号,要用表达式用“{0,1}”来限定匹配0次或1次,因此最终的匹配表达式为“(-[1-9][0-9] {0,1}){0,1}”。
版次、卷册号的组成与种次号一致,也是由1至2位数字组成,第一位数字不为0,第2位数字为任意数字,但引导字符分别为“/”、“:”,把匹配种次号的表达式“(-[1-9][0-9]{0,1}){0,1}”中的引导字符“-”更换为“/”、“:”便得到匹配版次、卷册号的表达式,分别为“(/[1-9][0-9]{0,1}){0,1}”、“(:[1-9][0-9]{0,1}){0,1}”。
将上述表达式按顺序连接起来前后分别加上标识开始和结尾的字符“^”、“$”便得到完整的匹配索取号的表达式如下:
“^([A-KN-SUVXZ]|T[BDE-NPQSUV])[0-9.-]{1,20}/[0-9]{4}(-[1-9][0-9]{0,1}){0,1}(/[1-9][0-9]{0,1}){0,1}(:[1-9][0-9]{0,1}){0,1}$”。
5 结语
图书馆中的馆藏数据库每天都要增加大量MARC数据,利用正则表达式的匹配规则验证MARC数据的是否准确与规范,是有效控制marc数据质量,提高审校MARC数据效率的一种重要方法。同时,通过正则表达式在MARC数据质量控制中的尝试,也为正则表达式在图书馆自动化系统中大量非格式化文本的分析和利用提供了许多思路。
[1]王乃红.图书馆编目数据质量控制刍议[J].情报探索,2010(3):125-127.
[2]正则表达式[EB/OL].[2013-10-21].http://baike.baidu.com/ view/94238.htm.
[3]马永平.正则表达式及其应用[J].电脑编程技巧与维护,2012(04):13-14,38.
G254.362
A
1671-0037(2014)10-44-3
徐延华(1977.11-),男,硕士研究生,工程师,研究方向:数字图书馆、移动图书馆。
李静(19179.10-),女,硕士研究生,馆员,研究方向:信息咨询。