浅析二版主题词升级过程中书目数据替换规则
季士妍
国家图书馆 北京 100081
摘要

以国家图书馆二版主题词升级为背景,介绍升级中书目数据更新的整体情况,分析书目数据替换产生的依据及规则,并针对每种书目数据替换进行程序实现说明。

关键词: 二版升级; 书目数据; 数据处理
中图分类号:G250.7
Discussion of Bibliographic Data Replacement Rules on the Second Edition Chinese Classified Thesaurus Upgrade
Ji Shiyan
National Library of China, Beijing 100081, China
Abstract

Based on the background of the second edition Chinese classified thesaurus upgrade project of the National Library of China, this paper introduces the overall situation of bibliographic data update, analyses the rules of bibliographic data update, and provides the program to illustrate each type bibliographic data update.

Keyword: The second edition Chinese Classified Thesaurus upgrade; Bibliographic data; Data processing

《中国分类主题词表》第二版(简称“二版主题词”)[ 1]增补了新学科、新事物、新概念的主题词21 711条,删除了无使用频率的旧词包括修改为入口词12 115条,增补了自然语言形式的入口词21 000条[ 2]

国家图书馆在ALEPH 500系统[ 3]中通过书目数据与规范数据挂接,实现了规范控制。针对主题规范控制,一直延用第一版主题词表数据,未启用二版主题词。在二版主题词表(包括电子版)发布后,为了更好地纠正由于二版主题词表中主题词增删改、其参照关系修订、类目与主题词对应关系修订带来的书目数据错误,规范和统一国家图书馆的主题规范控制,进一步提高国家图书馆书目数据质量,国家图书馆于2010年8月进行了ALEPH 500系统中的二版主题词升级,成功地将该系统中的主题规范库数据由一版升级到二版。在二版主题词升级过程中,涉及大量书目数据的批修改和程序批处理,本文特对此部分书目数据替换规则进行分析,并提出每一种情况的处理方法。

1 二版主题词升级涉及的书目数据总体情况

国家图书馆在ALEPH 500系统中,使用NLC01库装载书目数据,共有480万条数据。根据主题规范控制原理,书目数据的主题字段(6**字段)与主题规范数据进行挂接,实现主题规范控制。在二版主题词升级过程中,需要将主题规范数据库的数据完全替换为第二版的主题词表数据,因此,与规范数据相挂接的书目数据也要进行相应的批修改。由于国家图书馆拥有的书目数据数量巨大,为了尽量准确定位书目数据中需要批修改的部分、将数据替换的风险尽量降低、将数据替换的正确性做到最优,采取了在所有书目数据中提取只有主题字段(600、601、602、603、604、605、607字段)的书目数据进行批替换的策略。经过程序提取操作,最终在480万条书目数据中提取出近100万条具有主题字段的书目数据,为书目数据批替换操作确定了操作范围、减少了数据处理量,从而大大降低了书目数据批修改、批更新出错的概率。

2 书目数据替换规则分析

由于国家图书馆一直沿用一版主题词表进行规范控制,因此,书目数据中存在大量的规范标引错误。为了在二版主题词升级中将书目数据中存在的错误标引完整、准确地替换和修改,笔者与编目人员通过分析与整合,归纳、总结出二版主题词升级中涉及的书目数据替换的规则。

(1)错误标引替换

由于汉语中存在二义的现象,使得同样一个词语存在不同的意思,在主题标引中即表示不同的规范定义。以往未将此类的二义主题区分开来,造成了一定的错误标引。因此,为了准确定义主题的含义,特针对存在二义主题错误标引的书目标目进行提取和正确规范。错误标引替换的例子,如表1所示:

表1 错误标引替换例子

(2)单主题词替换

由于时代的发展、专业语言的规范化,一些词语的定义变得规范化和统一化,因此需要根据最新的变化,对书目数据的6**字段中不同的子字段进行替换。单主题词替换的相关例子,如表2所示:

表2 单主题词替换例子

(3)以单主题词为线索,替换为新标目

在书目数据中,有些标目为某些著者或具有时代色彩的先进人物,由于时代的发展,其原始意义已经发生了变迁或者含义逐渐变得模糊不清,需要进行进一步的明确和完善。因此,需要将原始标目中的主题名称删除或者替换为新的标目。单主题词替换的相关例子,如表3所示:

表3 单主题词替换例子

(4)以单主题词或标目为线索删除相应标目

在书目数据中,某些单主题词或者标目由于种种原因,已经不适合再作为主题规范词而存在,因此需要删除书目数据主题字段中包含该子字段的字段。删除标目相关例子,如表4所示:

表4 删除标目例子

(5)查找完全等同主题词替换为新主题词形式

书目数据中某些标目,存在多个不同的标目均对应相同的主题词的情况,因此,需要在书目数据相应字段中查找完全等同的主题词,替换为新的主题词形式。完全等同标目替换的相关例子,如表5所示:

表5 完全等同标目替换例子

(6)特殊情况

在以往的编目过程中,由于编目员的操作或者编目规则不规范,出现了书目数据某些字段编目不规范的情况。在此次二版主题词升级过程中,发现书目数据存在6**字段(排除610字段)不规范的情况,因此需要对这部分数据进行规范化操作。具体情况如下:

①某个字段出现“000224260 6060 L ﹩﹩2CT﹩﹩3S903910﹩﹩a中医典籍”时,其中“﹩﹩2CT﹩﹩3S903910”是不正确的,需要进行处理。处理方法如下:

1) 当数据中有且只有一个6**字段,并且这个6**字段包含“﹩﹩2CT﹩﹩3S****”时,需要将“﹩﹩2CT﹩﹩3S****”删除,保留后面的其他内容。

例如:

000224260 200 L ﹩﹩a中医

000224260 6060 L ﹩﹩2CT﹩﹩3S903910﹩﹩a中医典籍

修改为:

000224260 200 L ﹩﹩a中医

000224260 6060 L ﹩﹩a中医典籍

2)当数据中有两个以上6**字段,并且所有的6**字段都包含“﹩﹩2CT﹩﹩3S****”时,处理方法同1)。

例如:

000224260 601 L ﹩﹩a中医典籍﹩﹩j汇编

000224260 6060 L ﹩﹩2CT﹩﹩3S903910﹩﹩a中国医药学﹩﹩x古籍﹩﹩j汇编

000224260 6060 L﹩﹩2CT﹩﹩3S903910﹩﹩a中医典籍

修改为:

000224260 601 L﹩﹩a中医典籍﹩﹩j汇编

000224260 6060 L﹩﹩a中国医药学﹩﹩x古籍﹩﹩j汇编

000224260 6060 L ﹩﹩a中医典籍

3) 当数据中有两个以上6**字段,并且至少有一个6**字段不包含“﹩﹩2CT﹩﹩3S****”,则将包含“﹩﹩2CT﹩﹩3S****”字段的行整行删除。

例如:

000224260 601 L ﹩﹩a中医典籍﹩﹩j汇编

000224260 6060 L ﹩﹩a中国医药学﹩﹩x古籍﹩﹩j汇编

000224260 6060 L ﹩﹩2CT﹩﹩3S903910﹩﹩a中医典籍

这种情况就要将“000224260 6060 L ﹩﹩2CT﹩﹩3S903910﹩﹩a中医典籍”整行删除。修改为:

000224260 601 L ﹩﹩a中医典籍﹩﹩j汇编

000224260 6060 L ﹩﹩a中国医药学﹩﹩x古籍﹩﹩j汇编

②替换600字段中的“~”(包括单字节和双字节)为“-”

例如:

将600字段中的“阿倍仲麻吕﹩﹩f(701~770)”

替换为:

阿倍仲麻吕﹩﹩f(701-770)

3 书目数据替换方法说明

由于要进行替换的书目数据量有近100万条,并且替换规则较复杂,因此为了提高数据处理效率、提高数据处理正确性,本次二版主题词升级采用了Perl[ 4]编程实现书目数据的批替换。经过实践,使用效率较高的Perl程序,最终仅用30分钟就将近100万条的书目数据处理完成,很大程度上解决了人力手工无法完成的书目数据批修改难题。不同替换规则所对应的Perl程序实现方法如下:

为了提高程序执行效率,提前按照不同的数据替换规则,将相关的替换内容组成一个个的文本文件,在Perl程序执行过程中,只需要读取文本文件中的内容即可。

(1)错误标引替换的处理方法

进行相应错误标引数据的替换,具体实现方法如下:

﹩line=﹩_;

﹩key=substr(﹩line,10,3); //取出要处理数据的标识位

//对包含标识位的数据进行替换

if(﹩rules{﹩key}){

(﹩item)=﹩line=~/(.*?)\s*﹩/;

@items=split(/\﹩\﹩/,﹩item);

﹩item=′′;

for(﹩j=1;﹩j<=﹩#items;﹩j++){

﹩item.=′﹩﹩′.﹩items[﹩j];

if(﹩rules{﹩key}{﹩item}){

print LOG "-﹩line";

//构造新数据并将原始数据进行替换

﹩line=~s/ ﹩key.. [A-Z] \Q﹩item/ ﹩rules{﹩key}{﹩item}/;

print LOG "+﹩line";

}

}

}

(2)单主题词替换

将书目数据的6**字段中不同的子字段进行替换,具体实现方法如下:

﹩line=﹩_;

﹩key=substr(﹩line,10,3); //取出要处理数据的标识位

if(﹩j==﹩i){

﹩tmp=~s/^(.)//;﹩pre=﹩1;

//匹配符合替换规则的单主题词数据

if(﹩items[﹩j+1]=~/^[bcdefg]/){

﹩itemo.=﹩tmp;﹩item.=﹩tmp;next;}

if(﹩pre eq ′a′ && ﹩spe1{﹩key}{﹩tmp} ne ′′){

print LOG "-﹩line";

//构造新数据并将原始数据进行替换

﹩line=~s/.*?\Q﹩tmp/ ﹩spe1{﹩key}{﹩tmp}/;

print LOG "+﹩line";last;

}

}

else{﹩item=~s/\s+﹩//;﹩item.=′﹩﹩′;﹩itemo.=′﹩﹩′;}

(3)以单主题词为线索,替换为新标目

将主题名称删除或者替换其书目主题标目,具体实现方法如下:

﹩line=﹩_;

﹩key=substr(﹩line,10,3); //取出要处理数据的标识位

for(﹩j=﹩i;﹩j<=﹩#items;﹩j++){

﹩tmp=﹩items[﹩j];

if(﹩j==﹩i){﹩tmp=~s/^.//;}

else{﹩item=~s/\s+﹩//;﹩item.=′﹩﹩′;}

﹩item.=﹩tmp;

if(﹩items[﹩j+1]=~/^[bcdefg]/){next;}

if(﹩rules{﹩key}{﹩item} ne ′′){

print LOG "-﹩line";

//构造新数据并将原始数据进行替换

﹩line=~s/.*/ ﹩rules{﹩key}{﹩item}/;

print LOG "+﹩line";

}

if(﹩j-﹩i==2){last;}

}

(4)以单主题词或标目为线索删除相应标目

删除书目数据主题字段中包含该子字段的字段,具体实现方法如下:

﹩line=﹩_;

﹩key=substr(﹩line,10,3); //取出要处理数据的标识位

if(﹩items[﹩j+1]=~/^[bcdefg]/){next;}

if(﹩rules{﹩key}{﹩item} ne ′′){

print LOG "-﹩line";

//删除符合规则的数据

﹩line="";

}

(5)查找完全等同主题词替换为新主题词形式

在书目数据相应字段查找完全等同的主题词,替换为规范数据的主题词形式,具体实现方法如下:

﹩line=﹩_;

﹩num=substr(﹩line,0,9);

﹩key=substr(﹩line,10,3); //取出要处理数据的标识位

if(﹩j==﹩i){

if(﹩items[﹩j+1]=~/^[bcdefg]/){

﹩tmp=~s/^.//;﹩itemo.=﹩tmp;﹩item.=﹩tmp;next;}

//判断数据是否符合替换规则

if(﹩tmp=~s/^y// && ﹩rules{′607′}{﹩tmp} ne ′′){

print LOG "-﹩line";

﹩line=~s/(\﹩\﹩.)\Q﹩tmp/﹩1﹩rules{′607′}{﹩tmp}/;

print LOG "+﹩line";last;

}elsif(

﹩tmp=~s/^.// && ﹩key ne ′610′ && ﹩rules{′606′}{﹩tmp} ne ′′){

print LOG "-﹩line";

﹩line=~s/(\﹩\﹩.)\Q﹩tmp/﹩1﹩rules{′606′}{﹩tmp}/;

print LOG "+﹩line";last;

}

}else{﹩item=~s/\s+﹩//;﹩item.=′﹩﹩′;﹩itemo.=′﹩﹩′;}

(6)特殊情况的处理

当某个字段出现“﹩﹩2CT﹩﹩3S903910﹩﹩a****”时,此种情况需要替换掉该字段。具体实现方法如下:

﹩line=﹩_;

﹩key=substr(﹩line,10,3);

if(﹩key=~/^6/){# && ﹩key!=610

//根据替换规则将数据替换

﹩line=~s/(\﹩\﹩2CT)*\﹩\﹩3S.*?(\﹩|﹩)/﹩2/;

}

4 结 语

国家图书馆二版主题词升级涉及的书目数据替换不但数据量大,而且替换规则繁琐、情况复杂,为了克服这些困难,经过反复的斟酌、讨论与实验,最终针对不同替换条件编写了效率较高的Perl程序,从而实现了大批量数目数据的批修改。笔者将书目数据替换条件、替换规则以及相应的处理程序进行了总结、归纳与整理,希望可以将国家图书馆的成功经验提供给兄弟单位借鉴与参考。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] 卜书庆. 《中国分类主题词表》(第二版)及其电子版使用手册[M]. 北京: 北京图书馆出版社, 2006. [本文引用:1]
[2] 毛慧. 《中国分类主题词表》(第二版)的变化及使用[J]. 图书馆工作与研究, 2008(10): 56-58. [本文引用:1]
[3] ALEPH[EB/OL]. [2011-01-24]. http://www.exlibris.com.cn/product/aleph/index.asp. [本文引用:1]
[4] Schwartz R L, Phoenix T, Foy B D. 《Perl语言入门》[M]. 盛春, 蒋永清, 王晖译. 5版. 南京: 东南大学出版社, 2009. [本文引用:1]