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