徐延華 李 靜
(河南農(nóng)業(yè)大學(xué)圖書館,河南 鄭州 450002)
正則表達(dá)式在控制MARC數(shù)據(jù)質(zhì)量中的應(yīng)用研究
徐延華 李 靜
(河南農(nóng)業(yè)大學(xué)圖書館,河南 鄭州 450002)
隨著網(wǎng)絡(luò)和信息技術(shù)的發(fā)展,聯(lián)機(jī)編目得以實(shí)現(xiàn),編目工作的重心也由傳統(tǒng)的著錄方式向編目規(guī)范控制工作轉(zhuǎn)變。本文詳細(xì)介紹了正則表達(dá)式以及用正則表達(dá)式的匹配規(guī)則來規(guī)范MARC數(shù)據(jù)的方法,為有效控制MARC數(shù)據(jù)質(zhì)量、提高審校MARC數(shù)據(jù)的效率提供了思路。
marc數(shù)據(jù);正則表達(dá)式;質(zhì)量
近年來,隨著計(jì)算機(jī)網(wǎng)絡(luò)與信息技術(shù)在圖書館的廣泛應(yīng)用,大大推動(dòng)圖書館編目工作發(fā)展,圖書館聯(lián)機(jī)編目得以實(shí)現(xiàn),編目工作的重心也由傳統(tǒng)的著錄方式向編目規(guī)范控制工作轉(zhuǎn)移。同時(shí),CNMARC經(jīng)過幾十年的發(fā)展,現(xiàn)也成為當(dāng)前國內(nèi)管理中文文獻(xiàn)資源中最具權(quán)威性的一種標(biāo)準(zhǔn)化數(shù)據(jù)格式,廣泛應(yīng)用于我國各類圖書館。它的應(yīng)用為實(shí)現(xiàn)我國書目數(shù)據(jù)的標(biāo)準(zhǔn)化和規(guī)范化,進(jìn)而實(shí)現(xiàn)書目信息的共建共享提供了可能。但目前,諸多圖書館仍然存在的中西文編目格式“不統(tǒng)一”,編目數(shù)據(jù)“不規(guī)范”,字段信息“不準(zhǔn)確”等質(zhì)量問題的存在,MARC數(shù)據(jù)的質(zhì)量得不到保證,不能給讀者提供全面而準(zhǔn)確的文獻(xiàn)信息,讀者檢索機(jī)讀目錄的效率與興趣將會(huì)大大降低,也直接影響圖書館自動(dòng)化系統(tǒng)的功能發(fā)揮,使無障礙的書目數(shù)據(jù)交換未能圓滿實(shí)現(xiàn)。因此,對(duì)MARC數(shù)據(jù)進(jìn)行質(zhì)量控制研究,具有十分重要的現(xiàn)實(shí)意義。
1.1 MARC數(shù)據(jù)不規(guī)范,遺漏一些必要的檢索點(diǎn)
一個(gè)書目數(shù)據(jù)庫是由一條條書目記錄組成的。它的檢索功能必然受每一條書目記錄檢索點(diǎn)的制約。字段則構(gòu)成數(shù)據(jù)庫的最小單元。CNMARC的字段設(shè)置分0~9十大功能塊。這十大塊,基本涵蓋了文獻(xiàn)的所有內(nèi)部、外部特征,提供了更多的檢索點(diǎn),方便讀者多途徑、多角度地進(jìn)行檢索。能提供檢索點(diǎn)的字段主要有O——(部分)、2——(部分)、4——(全部)、5——(全部)、6——(全部)、7——(全部)這六大塊。如500(統(tǒng)一題名)字段、517(其他題名)字段和610(非控主題)字段等,在許多文獻(xiàn)資源揭示中被忽略或遺漏,這樣讀者利用其他題名或其他主題檢索時(shí),就會(huì)檢索不出所需結(jié)果。如:2001#@a亂世佳人@Aluan shi jia ren@f(美)米切爾著@g黃懷仁等譯(marc數(shù)據(jù)來源于河南農(nóng)大圖書館),如果沒有517字段,這樣用“飄”去檢索,就會(huì)檢索不出。除此之外,在文獻(xiàn)編目中還存在分類標(biāo)引不當(dāng),主題標(biāo)引、索書號(hào)確立不正確等很多質(zhì)量問題,從而降低了MARC數(shù)據(jù)的規(guī)范化、標(biāo)準(zhǔn)化程度,限制了讀者最大限度地使用,也為書目數(shù)據(jù)共享造成障礙。
1.2 著錄字符不規(guī)范
MARC數(shù)據(jù)有其獨(dú)特的數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn),包括頭標(biāo)區(qū)、目次區(qū)和數(shù)據(jù)區(qū),是一種變長的數(shù)據(jù)存儲(chǔ)格式,這些數(shù)據(jù)在輸入時(shí)如有差錯(cuò)就會(huì)影響用戶檢索結(jié)果。在文獻(xiàn)著錄過程中,最常見的是著錄字符不規(guī)范,文字輸入性錯(cuò)誤。文字輸入性錯(cuò)誤是影響用戶檢索,導(dǎo)致漏檢與誤檢的重要原因。例如將題名前無意識(shí)地加了個(gè)空格,題名中的間隔號(hào)錯(cuò)輸為破折號(hào);著錄中出現(xiàn)錯(cuò)別字,《四世同堂》錄成《四世同黨》,《現(xiàn)代漢語詞典》著錄成《現(xiàn)代漢語詞典》,將“余”錄成“佘”;ISBN號(hào)、分類號(hào)、索取號(hào)中出現(xiàn)錯(cuò)號(hào),字母、數(shù)字的全角、半角不一致,字母大小寫不一致,選用鍵盤符號(hào)不一致,選用字母類型不一致,如010@a錯(cuò)為@b,M516/ 7812等,這些都將會(huì)影響著錄質(zhì)量,造成錯(cuò)檢、漏檢[1]。
MARC數(shù)據(jù)是機(jī)讀環(huán)境下作為準(zhǔn)確的描述揭示文獻(xiàn)內(nèi)容,并能被用戶順利利用一種文獻(xiàn)信息組織語言。這種語言表達(dá)的準(zhǔn)確與否直接影響著讀者的查全率和查準(zhǔn)率。不規(guī)范、不準(zhǔn)確的MARC數(shù)據(jù),就會(huì)造成讀者的誤檢、漏檢現(xiàn)象。而正則表達(dá)式就是一種控制和分析用戶輸入,提高數(shù)據(jù)質(zhì)量控制的常用方法,其最初應(yīng)用于神經(jīng)網(wǎng)絡(luò),是一種模式匹配方法,而且具有簡潔、通用、快速的優(yōu)點(diǎn),可對(duì)任何類型數(shù)據(jù)及形式進(jìn)行校驗(yàn),更廣泛應(yīng)用于數(shù)據(jù)格式驗(yàn)證、文本數(shù)據(jù)解析等方面。所以,如果利用正則表達(dá)式進(jìn)行MARC數(shù)據(jù)字段著錄輸入校驗(yàn),對(duì)MARC數(shù)據(jù)必備字段進(jìn)行查重審核,不失為提高M(jìn)ARC數(shù)據(jù)質(zhì)量的“一把金鑰匙”。
3.1 正則表達(dá)式定義
正則表達(dá)式(regular expression)描述了一種字符串匹配模式,用于檢查一個(gè)字符串是否含有符合匹配規(guī)則的子串、將匹配的子串做替換或者從某個(gè)串中取出符合匹配規(guī)則的子串等[2]。
3.2 正則表達(dá)式的規(guī)則
正則表達(dá)式是由普通字符和特殊字符組成的文字模式,這些文字模式作為一個(gè)匹配規(guī)則模板與被檢測(cè)的字符串進(jìn)行匹配,并返回匹配結(jié)果。
普通字符包括數(shù)字、字母、漢字、下劃線和在正則表達(dá)式中沒有特殊含義的標(biāo)點(diǎn)符號(hào),例如:“/”、“-”、“:”、“.”等標(biāo)點(diǎn)符號(hào)都是普通字符,而“+”、“”、“^”、“$”等標(biāo)點(diǎn)符號(hào)在正則表達(dá)式中都有特殊含義屬于特殊字符。
3.2.1 普通字符
普通字符在正則表達(dá)式中匹配被檢測(cè)字符串中與其本身相同的一個(gè)字符,要與2個(gè)及其以上普通字符組成的表達(dá)式匹配成功,被檢測(cè)字符串中必須含有與表達(dá)式中字符組成以及先后順序完全一致而且中間沒有多余字符的子串。
例如:表達(dá)式“-”,匹配“-45”、“圖書館-”、“123-圖書館”等含有字符“-”的字符串;表達(dá)式“書”,匹配“圖書館”、“書香茶館”等含有字符“書”的字符串;表達(dá)式“書館”,則只匹配字符串“圖書館”,不匹配字符串“書香茶館”,后者雖然同時(shí)含有“書”和“館”這2個(gè)字符,但因其中間多了“香”和“茶”這2個(gè)字符,所以匹配失敗。
3.2.2 特殊字符
特殊字符是有特殊含義的標(biāo)點(diǎn)符號(hào),它使正則表達(dá)式具備了處理能力。正則表達(dá)式的特殊字符較多,本文不再逐一介紹,只舉例說明在做MRAC數(shù)據(jù)匹配時(shí)常用到的特殊字符[3]。
“^”匹配被檢測(cè)字符串的開始位置。
例如:表達(dá)式“書”匹配字符串“圖書館”,但表達(dá)式“^書”不匹配字符串“圖書館”,因?yàn)樽址皶辈辉谧址皥D書館”的開始位置,字符串“書館”則與其匹配。
“$”匹配被檢測(cè)字符串的結(jié)束位置。
例如:表達(dá)式“書館”匹配字符串“圖書館”、“圖書館大樓”,但表達(dá)式“書館$”則只匹配字符串“圖書館”,因?yàn)樽哟皶^”不在字符串“圖書館大樓”的結(jié)尾位置。
“”也叫轉(zhuǎn)義字符,與普通字符與元字符組合后,會(huì)產(chǎn)生新的特殊含義。
例如:表達(dá)式“w”匹配下劃線或任意一個(gè)數(shù)字、字母、漢字;表達(dá)式“d”匹配數(shù)字0至9;“+”、“”、“^”、“$”等是特殊字符,在表達(dá)式中有特殊含義,要想匹配其字符本身,可以使用表達(dá)式“+”、“\”、“^”、“$”依次匹配。
“[]”匹配方括號(hào)中的任意一個(gè)字符。
例如:表達(dá)式“[圖書館]”,匹配字符串“圖畫”、“書報(bào)”、“體育館”等含有“圖”、“書”、“館”中任意一個(gè)字符的字符串;表達(dá)式“[0123456789]”和“[0-9]”功能相同,匹配0至9之間的任意一個(gè)數(shù)字;表達(dá)式“[a-z]”,匹配a至z之間的任意一個(gè)小寫字母。
“|”表示或的意思,匹配符號(hào)“|”兩端子表達(dá)式中的任意1個(gè)。
例如:表達(dá)式“[0-9]|[a-z]”,匹配數(shù)字0至9或26個(gè)小寫字母中任意1個(gè)。
“()”用來定義特殊字符作用的范圍。
例如:表達(dá)式“圖書館|室藏書”,匹配含有子串“圖書館”、“室藏書”的字符串,而表達(dá)式“圖書(館|室)藏書”,則匹配含有子串“圖書館藏書”、“圖書室藏書”的字符串,因?yàn)閳A括號(hào)“()”限定了字符“|”的作用范圍,使之只作用于括號(hào)內(nèi)的子表達(dá)式。
“+”匹配前面的子表達(dá)式重復(fù)至少1次后生成的表達(dá)式。
例如:表達(dá)式“書+”,匹配 “圖書館”、“圖書書館”、“圖書書書館”等含有字符“書”的數(shù)量等于或超過1個(gè)的字符串,但不匹配像“圖館”這樣的不含有字符“書”的字符串。
“{n}”,n為非負(fù)整數(shù),它匹配前面的子表達(dá)式重復(fù)n次后生成的表達(dá)式。
例如:表達(dá)式“書{2}”,匹配字符串“圖書書館”,但不匹配字符串“圖書館”。
“{n,}”匹配前面的子表達(dá)式重復(fù)至少n次后生成的表達(dá)式。
例如:表達(dá)式“書{2,}”,匹配“圖書書館”、“圖書書書館”、“圖書書書書館”、“圖書書書書館”等含有連續(xù)2個(gè)及其以上“書”的“字符串”。
“{n,m}”,n、m均為非負(fù)整數(shù),m>=n,它匹配前面的子表達(dá)式重復(fù)最少n次最多m次后生成的表達(dá)式。
例如:表達(dá)式“書{2,4}”,可以匹配上個(gè)例子中所有的字符串,但當(dāng)所匹配的字符串中含有的“書”字符超過4個(gè)時(shí),只匹配該字符串中前4個(gè)“書”字符。
MARC數(shù)據(jù)包含的信息較多,僅以ISBN號(hào)、索取號(hào)這些書寫規(guī)則比較復(fù)雜的字段為例,說明如何利用正則表達(dá)式來檢驗(yàn)其是否符合標(biāo)準(zhǔn)的書寫規(guī)則,從而規(guī)范MARC數(shù)據(jù)的質(zhì)量。
4.1 匹配ISBN號(hào)的正則表達(dá)式規(guī)則
圖 1 ISBN號(hào)正則表達(dá)式書寫規(guī)則對(duì)應(yīng)圖
如圖1所示,ISBN號(hào)由5段數(shù)字組成,中間用字符“-”連接,例如:978-7-471-81086-x。第一段是ISBN號(hào)專用前綴,固定數(shù)字978不變,對(duì)應(yīng)的表達(dá)式為“978”;第二段是地區(qū)國別語種代碼,為任意1個(gè)1位數(shù)字,對(duì)應(yīng)的表達(dá)式為“[0-9]”;第三段是出版社編號(hào),為任意1個(gè)3位數(shù)字,表達(dá)式“[0-9]”匹配任意1個(gè)1位數(shù)字,用表達(dá)式“{3}”將其重復(fù)3次便得到匹配任意1個(gè)3位數(shù)字的表達(dá)式“[0-9]{3}”;第四段是圖書序號(hào),為任意1個(gè)5位數(shù)字,同理其對(duì)應(yīng)的表達(dá)式為“[0-9]{5}”;最后一段是校驗(yàn)碼,為數(shù)字0-9或字母x中的任意一個(gè)字符,表達(dá)式“[0-9]”匹配任意1個(gè)1位數(shù)字,在其集合中加上一個(gè)字母“x”,便得到與之匹配的表達(dá)式“[0-9x]”。將五個(gè)表達(dá)式按順序用字符“-”連接起來得到的表達(dá)式“^978-[0-9]-[0-9]{3}-[0-9]{5}-[0-9x]$”便是匹配完整的ISBN號(hào)的表達(dá)式,可以之檢驗(yàn)MARC數(shù)據(jù)中所有的ISBN號(hào),找出不符合書寫規(guī)則的數(shù)據(jù)。表達(dá)式的開頭和結(jié)尾分別加上了標(biāo)識(shí)字符串開始和結(jié)尾的字符“^”、“$”,原因是不加開始和結(jié)尾標(biāo)識(shí)的表達(dá)式匹配的字符串范圍過寬,只要字符串中任意一個(gè)位置含有符合表達(dá)式匹配規(guī)則的子串,則視為整個(gè)字符串符合匹配規(guī)則,例如:去掉開始和結(jié)尾標(biāo)識(shí)的表達(dá)式“978-[0-9]-[0-9] {3}-[0-9]{5}-[0-9x]”,除了匹配字符串“978-7-471-81086-x”外,還匹配不符合ISBN號(hào)書寫規(guī)則的“abc978-7-471-81086-x”、“978-7-471-81086-x圖書館”、“閱覽室978-7-471-81086-xgh”等字符串。
4.2 匹配索取號(hào)的正則表達(dá)式規(guī)則
索取號(hào)由分類號(hào)、著者號(hào)、種次號(hào)、版次、卷冊(cè)號(hào)組成,其中分類號(hào)、著者號(hào)是必備字段,部分分類號(hào)不含有種次號(hào)、版次和卷冊(cè)號(hào)或只具備其中1到2個(gè),排列格式為:分類號(hào)/著者號(hào)-種次號(hào)/版次:卷冊(cè)號(hào),例如:TP13/4434-2/2:2、S435.13-62/6071、S513/1024/2。
現(xiàn)在所用的圖書分類法一般都是中國法,中圖法將圖書分為22個(gè)大類,分別用L、M、W、Y之外的22個(gè)大寫英文字母表示。分類號(hào)除T大類以2個(gè)大寫字母(T加1個(gè)上其他字母)開頭其他21大類都以1個(gè)代表該類的大寫英文字母開頭,英文字母之后接數(shù)字,部分分類號(hào)還含有字符“.”和“-”,長度一般不超過20位,對(duì)應(yīng)的表達(dá)式為“([A-KN-SUVXZ]|T[BDE-NPQSUV])[0-9.-]{1,20}”。其中表達(dá)式“[A-KN-SUVXZ]”匹配L、M、W、Y、T之外的任意1個(gè)大寫英文字母,T雖然也代表一個(gè)大類,但因T大類分類號(hào)均是兩個(gè)英文字母開頭,分別為TB、TD、TE-TN、TP、TQ、TS、TU、TV,所以單獨(dú)以表達(dá)式“T[BDE-NPQSUV]”匹配,與前面表達(dá)式以字符“|”連接,匹配代表22個(gè)大類的除T以外的大寫英文字母或者TB、TD等T開頭的2個(gè)大寫英文字母;表達(dá)式“[0-9.-]{1,20}”匹配分類號(hào)中字母后面的數(shù)字部分,有的分類號(hào)含有字符“.”和“-”,在字符集合“[0-9.-]”中也作了相應(yīng)的匹配,“{1,20}”用于匹配分類號(hào)數(shù)字部分的長度,限定最短1位,最長20位。
著者號(hào)由4位數(shù)字組成,對(duì)應(yīng)表達(dá)式為“/[0-9]{4}”,字符“/”為索取號(hào)書寫規(guī)則中規(guī)定的著者號(hào)的引導(dǎo)標(biāo)識(shí)。
種次號(hào)由1至2位數(shù)字組成,第1位數(shù)字不為0,以表達(dá)式“[1-9]”匹配,第2位數(shù)字為任意數(shù)字,以表達(dá)式“[0-9]{0,1}”匹配,其中表達(dá)式“{0,1}”表示匹配0次或1次,整個(gè)連接起來前面再加上引導(dǎo)字符“-”,就得到匹配整個(gè)種次號(hào)的表達(dá)式“-[1-9] [0-9]{0,1}”。有的索取號(hào)不含有種次號(hào),要用表達(dá)式用“{0,1}”來限定匹配0次或1次,因此最終的匹配表達(dá)式為“(-[1-9][0-9] {0,1}){0,1}”。
版次、卷冊(cè)號(hào)的組成與種次號(hào)一致,也是由1至2位數(shù)字組成,第一位數(shù)字不為0,第2位數(shù)字為任意數(shù)字,但引導(dǎo)字符分別為“/”、“:”,把匹配種次號(hào)的表達(dá)式“(-[1-9][0-9]{0,1}){0,1}”中的引導(dǎo)字符“-”更換為“/”、“:”便得到匹配版次、卷冊(cè)號(hào)的表達(dá)式,分別為“(/[1-9][0-9]{0,1}){0,1}”、“(:[1-9][0-9]{0,1}){0,1}”。
將上述表達(dá)式按順序連接起來前后分別加上標(biāo)識(shí)開始和結(jié)尾的字符“^”、“$”便得到完整的匹配索取號(hào)的表達(dá)式如下:
“^([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}$”。
圖書館中的館藏?cái)?shù)據(jù)庫每天都要增加大量MARC數(shù)據(jù),利用正則表達(dá)式的匹配規(guī)則驗(yàn)證MARC數(shù)據(jù)的是否準(zhǔn)確與規(guī)范,是有效控制marc數(shù)據(jù)質(zhì)量,提高審校MARC數(shù)據(jù)效率的一種重要方法。同時(shí),通過正則表達(dá)式在MARC數(shù)據(jù)質(zhì)量控制中的嘗試,也為正則表達(dá)式在圖書館自動(dòng)化系統(tǒng)中大量非格式化文本的分析和利用提供了許多思路。
[1]王乃紅.圖書館編目數(shù)據(jù)質(zhì)量控制芻議[J].情報(bào)探索,2010(3):125-127.
[2]正則表達(dá)式[EB/OL].[2013-10-21].http://baike.baidu.com/ view/94238.htm.
[3]馬永平.正則表達(dá)式及其應(yīng)用[J].電腦編程技巧與維護(hù),2012(04):13-14,38.
G254.362
A
1671-0037(2014)10-44-3
徐延華(1977.11-),男,碩士研究生,工程師,研究方向:數(shù)字圖書館、移動(dòng)圖書館。
李靜(19179.10-),女,碩士研究生,館員,研究方向:信息咨詢。