文献题名自动抽词——分类标引系统,本文主要内容关键词为:文献论文,系统论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
分类号 G254—39 G354.43
1 文献题名自动抽词和粗略分类标引的可行性
自然语言检索是直接利用文献文本中的关键词的。文献文本可分为题名、文中标题、文摘和正文几种构成部分。其中,文献题名中的关键词虽然检全率较低,但检准率相对而言是最高的。由于利用文献题名抽取关键词最为简便,所以,从题名抽取关键词作为文献检索标识的方法在自然语言检索中具有重要意义。如果对从题名抽出的关键词进行粗略分类,也可具备一定的分类检索功能。从已经建成的“文献题名自动抽词—分类标引系统”看,它虽然比不上用人工语言标引准确率高,但比对题名的模糊检索好得多,既可进行关键词的任意一致匹配,也可进行前方一致匹配和完全一致匹配;分类检索时则可进行前方一致匹配和完全一致匹配,所有的检索结果都可将相同关键词集中并排序后输出到屏幕或检索结果文件。
2 文献题名自动抽词—分类标引系统概述
该系统由三个子系统组成,即:自动抽词子系统(CHC-CC.PRG)、抽词词典增补子系统(CHC-ZB.PRG)和检索子系统(CHC-JS.PRG)。
自动抽词子系统包括五个文件,即:
(1)题名库(TMK.DBF)。该库存放将被处理的题名,包括两个字段:WXH(文献号,8字符)和TM(题名,65字符)。这个文件实际上是从主库中复制出来,经过预处理后生成的,不需专门编制;
(2)词典库(CDK.DBF)。这可以说是该系统的核心, 是自动抽词和分类的工具。它的质量,决定着整个系统的质量。它包括四个字段:A(分类号,6字符),C(词长,2字符,是数字型字段),CI(词,48字符);
(3)词块库(CKK.DBF)。这是一个过渡文件,将抽词词典中与待抽题名中词的首字相同的一块暂存(复制)到该文件中,以方便与题名匹配。所以,抽词过程实际上并不是题名库与词典库直接匹配。该文件的字段与词典库相同;
(4)索引库(SYK.DBF)。在抽词过程中若匹配成功,则将词从题名或其剩余部分的前部切下(抽出)存放到该文件中。该文件包括WXH2(文献号,8字符),A2(分类号,6字符),CI2(词,48 字符)三个字段;
(5)待处理库(DCLK.DBF)。在抽词过程中若匹配失败, 则将题名的被切剩部分存放到该文件中。该文件包括WXH2(文献号,8 字符),TM2(题名,65字符)。
抽词词典增补子系统是将待处理库中题名的被切剩部分与题名库进行核对改正,将新词追加到词典库的尾部,或在核对改正后,将题名的被切剩部分在WPS下用手工切断,然后全部追加到词典库的尾部。 再启动抽词词典增补子程序进行删重和排序。由于抽词词典要求按词的首字集中排序,同首字的词按词长的倒序排,因此要利用多个过渡文件,其中有两个过渡文件必须列出空库。即:(1)CDK-A.DBF文件,包括四个字段:A(分类号,6字符),C(词长,2字符,数字型字段),D (词的首字,2字符),CI(词,46字符);(2)CDK-C.DBF文件, 包括四个字段:A(分类号,6字符),C(词长,2字符,注意要改为字符型字段),CI(词,48字符),O(1字符,数字型字段,此字段为进行删重的特殊需要而设)。
检索子系统的操作对象是索引库和主库。先从索引库中用复制法筛选出需要的文献并排序,构成检索结果文件,然后将检索结果文件的文献号与主库的文献号进行匹配,将文献记录填入检索结果文件。检索结果文件包括如下字段:WXH2(文献号,8字符),TZC(题名著者出处,61字符),O(空字段,10字符),XX(题名著者出处续,67字符), O2(空字段,11字符),A2(分类号,10字符),CI2(关键词,48 字符)。检索结果文件既可浏览,也可用WPS打印。应当指出, 此文件结构是按主库的结构和所需的输出格式设计的,若主库结构和所需输出格式不是这样,也可改变,同时修改P88.PRG子程序。
该系统可在FOXPRO下运行。
3 题名的预处理和抽词词典的最初积累
对题名进行预处理是使自动抽词能顺利进行的极为重要的环节。所谓预处理,是将题名中的外文字母、数字、符号等与汉字对齐。即当外文字母、数字、符号等所占字符长度成奇数时,补1个字符的空格。 因为词长字段是按汉字计算的,如果不对齐就会产生乱码使抽词失败。例如:
题名:DDC分类法
须改成:DDC分类法
题名:第3版
须改成:第3版
题名:体系—组配分类法
须改成:体系—组配分类法
题名中的其它空格则应取消。例如:
题名:第二分册 情报工作
须改成:第二分册情报工作
对题名的预处理在文本文件中进行最方便。可以将文献号和题名两个字段从主库中复制出来,并转换成文本文件,在WPS下进行预处理。 一条题名不得超过64字符,当题名超过64字符时,可将题名拆成两条,填上相同文献号,但注意不要把一个整词拆开。经预处理的题名套入题名库结构,即成为正式的题名库。
我所采用的是无剩余抽词法,抽词词典中的词必须是在题名中实际使用的,这样才能把题名抽得一字不剩。所以,抽词词典最合理的编制法是:用按回车键的方法将足够数量的题名全部切断,然后套入题名库,利用抽词词典增补子程序进行删重和排序,再添加分类号和词长两项,即成为抽词词典初稿,以后在使用过程中不断增补。
4 抽词子程序
该子程序全部语句如下(注:为节省版面,几个语句写在一行,用“ㄧ”分隔,实际使用时应恢复每句占一行,并删去“ㄧ”号):
程序名:CHC-CC.PRG
clear allㄧclose allㄧsele 1ㄧuse tmkㄧ
sele 2ㄧuse cdkㄧsele 3ㄧuse dclkㄧ
sele 5ㄧuse sykㄧsele tmkㄧgo 1ㄧ
do while.not .eof ()ㄧvarwxh=wxhㄧ
vartm=tmㄧdo while.t.ㄧ
if len(trim(subs(vartm,1,2)))=0ㄧ
exitㄧelseㄧif dbf (4)="ckk.dbf"ㄧ
sele4ㄧuseㄧdele file ckk.dbfㄧ
endifㄧsele cdkㄧ
copy to ckk for ci =subs(vartm,1,2)ㄧ
sele 4ㄧuse ckkㄧgo topㄧif recc()=0ㄧ
sele dclkㄧappe blankㄧ
repl wxh2 with varwxhㄧ
repl tm2 with wartmㄧsele ckkㄧ
useㄧdele file ckk .dbfㄧexitㄧelseㄧ
go topㄧk=0ㄧdo while.not,eof ()ㄧ
tempa=aㄧ tempc=cㄧ
temptm=subs(vartm,1,tempc*2)ㄧ
sele ckkㄧif temptm=trim(ci)ㄧ
k=1ㄧsele sykㄧappe blankㄧ
repl wxh2 with varwxhㄧ
repl a2 with tempaㄧ
repl ci2 with temptmㄧ
vartm=subs(vartm,tempc*2+1)ㄧ
exitㄧelseㄧsele ckkㄧskipㄧendifㄧ
enddoㄧsele ckkㄧuseㄧ
dele file ckk.dbfㄧif k=0ㄧsele dclkㄧ
appe blankㄧrepl wxh2 with varwxhㄧ
repl tm2 with vartmㄧexitㄧendifㄧ
endifㄧendifㄧenddoㄧsele tmkㄧskipㄧ
enddoㄧclose allㄧclear all
抽词结果形成索引库和待处理库两个文件。
5 题名剩余部分的处理及抽词词典增补子程序
在抽词过程中,遇到某种原因导致抽词失败,就将题名的剩余部分存放到待处理库中去。
为了弄清抽词失败的原因,必须将待处理库的题名剩余部分依据文献号与题名库进行核对(在抽词过程中题名库并未被破坏)。这项工作做起来比较麻烦,可用如下几种办法解决:
(1)先对乱码用把光标放在第一个整字后半个字的位置, 然后按一下空格键,此时除第一个汉字外,其它汉字都会复原。然后将待处理库和题名库都转换成文本格式,在WPS 下用开两个窗口的方法进行核对修改,修改后的待处理库内容追加到题名库的尾部,并将待处理库清空;
(2)先对待处理库中的乱码仿照上法复原,再打印出来, 然后把打印本与题名库核对,在打印本上修改,最后照打印本修改待处理库,再将待处理库的内容追加到题名库的尾部,并将待处理库清空;
(3)把题名库复制到另一台计算机中, 用两台计算机进行核对和修改,再将修改好的待处理库内容追加到题名库的尾部,并将待处理库清空。
经过核对修改后,把所发现的应增补进词典库的词抄下来追加到词典库的尾部,或将全部题名的剩余部分在WPS下用手工切断, 然后追加到词典库的尾部。再启动抽词词典增补子程序进行删重和排序。
打开自动抽词子程序,修改起始记录号为题名库中追加部分的第一个记录号(第一个GO后面的数字),就可继续对待处理库的内容(此时已转移到题名库尾部)进行抽词处理了。
抽词失败的原因,主要有下列几种:(1 )题名预处理遗漏(尚有字符不对齐的地方);(2)题名有输入错误;(3)词典缺词。
抽词词典增补子程序全部语句如下:
程序名:CHC-ZB.PRG
use cdkㄧcopy to sdfrs sdfㄧuse cdk-cㄧ
append from sdfrs.txt sdfㄧ
index on ci to cdk-oㄧ
total on ci to cdk-ooㄧuse cdk-ooㄧ
copy to sdfrs sdfㄧuse cdk-aㄧ
append from sdfrs.txt sdfㄧ
sort to cdk-b on d/a,c/dㄧuse cdk-bㄧ
copy to sdfrs sdfㄧuse cdkㄧzapㄧ
append from sdfrs.txt sdf
6 文献检索子程序及检索结果文件的生成
文献检索子程序共提供五种检索功能,其主控程序和五个子程序的全部语句如下:
文献检索主控程序
程序名:CHC-JS.PRG
set talk offㄧdo while.t.ㄧclearㄧ
?space(7)+“文献题名自动抽词-分类标引系统”ㄧ?space(18)+“主控菜单”ㄧ
?space(18)+“”ㄧ
?space(20)+“1--词任意一致检索”ㄧ
?space(20)+“2--分类号前方一致检索”ㄧ
?space(20)+“3--词前方一致检索”ㄧ
?space(20)+“4--分类号完全一致检索”ㄧ
?space(20)+“5--词完全一致检索”ㄧ
?space(20)+“0--退出”ㄧ
?space(20)+“”ㄧ
wait“请选择0-5”to cdㄧ
do caseㄧcase cd=“1”ㄧdo pllㄧ
case cd=“2”ㄧdo p21ㄧcase cd=“3”ㄧ
do p22ㄧcase cd=“4”ㄧdo p31ㄧ
case cd=“5”ㄧdo p32ㄧcase cd=“0”ㄧ
exitㄧotherwiseㄧ
?“输入错误,请重新选择!”ㄧendcaseㄧ
enddoㄧset talk onㄧreturn
第一种检索功能的子程序:
程序名:Pll.PRG
close allㄧclear allㄧset talk onㄧ
use sykㄧaccept“请输入检索式:”to xㄧ
copy to syka for x $ ci2ㄧsele2ㄧ
use sykaㄧsort to sykb on ci2ㄧ
sele 3ㄧuse jsjgㄧappend from sykbㄧ
useㄧdo p88ㄧuseㄧdo p99
第二种检索功能的子程序:
程序名:P21.PRG
close allㄧclear allㄧset talk onㄧ
use sykㄧaccept“请输入检索式:”to xㄧ
copy to syka for a2=xㄧsele2ㄧ
use sykaㄧsort to sykb on a2,ci2ㄧ
sele 3ㄧuse jsjgㄧappend from sykbㄧ
useㄧdo p88ㄧuseㄧdo p99
第三种检索功能的子程序:
程序名:P22.PRG
close allㄧclear allㄧset talk onㄧ
use sykㄧaccept“请输入检索式:”to xㄧ
copy to syka for ci2=xㄧsele2ㄧ
use sykaㄧsort to sykb on ci2ㄧ
sele 3ㄧuse jsjgㄧappend from sykbㄧ
useㄧdo p88ㄧuseㄧdo p99
第四种检索功能的子程序:
程序名:P31.PRG
close allㄧclear allㄧset talk onㄧ
use sykㄧset exact onㄧ
accept“请输入检索式:”to xㄧ
copy to syka for a2=xㄧsele2ㄧ
use sykaㄧsort to sykb on ci2ㄧ
use 3ㄧuse jsjgㄧappend from sykbㄧ
useㄧdoㄧp88ㄧuseㄧdo p99
第五种检索功能的子程序:
程序名:P32.PRG
close allㄧclear allㄧset talk onㄧ
use sykㄧset exact onㄧ
accept“请输入检索式:”to xㄧ
copy to syka for ci2=xㄧsele2ㄧ
use jsjgㄧappend from sykaㄧuseㄧ
do p88ㄧuseㄧdo p99
检索共用子程序(1):
程序名:P88.PRG
close allㄧclear allㄧuse zkㄧ
do while not eof()ㄧttmzzcc=tmzzccㄧ
tx2=x2ㄧtwxh=wxhㄧsele 2ㄧuse jsjgㄧ
go topㄧscanㄧif wxh2=twxhㄧ
repl tzc with ttmzzccㄧ
repl xx with tx2ㄧendifㄧendscanㄧ
sele zkㄧskipㄧenddoㄧsele zkㄧuse
检索共用子程序(2):
程序名:P99.PRG
close allㄧclear allㄧuse jsjgㄧ
do while.not.eof()ㄧdisplay allㄧ
set talk onㄧwaitㄧcontinueㄧ
enddoㄧuseㄧreturn
检索结果清除程序:
程序名:JSJG-QC.PRG
close allㄧclear allㄧuse sykaㄧzapㄧ
use sykbㄧzapㄧuseㄧjsjgㄧzapㄧuseㄧ
return
检索结果另存程序:
程序名:JSJG-LC.PRG
close allㄧclear allㄧuse jsjgㄧ
copy to jsjg-aㄧcopy to sdfrs sdfㄧ
use
以上五种检索功能的检索结果都存入检索结果文件(JSJG .DBF),检索结果都按关键词顺序或分类号-关键词顺序排序。
运行JSJG-QC.PRG小程序段,可清除检索结果及其过渡文件。
运行JSJG-LC.PRG小程序段,可将检索结果另存于JSJG-A.DBF 文件并转换成SDFRS.TXT。
7 关于自动分类部分的讨论
自动分类在该系统中起了一定作用,但是一个比较薄弱的环节。问题在于,有些关键词在脱离题名上下文的情况下,就很难确定其归属。从两篇文章中抽出来的同一关键词,具有不同的含义,应该属于不同的类目,但却不得不归为一类;有些关键词本属形容词性质,但分类时只能作名词看待,诸如此类的情况较多。如何改进,是一个有待研究的问题。这个问题也许具有普遍性,并非在该系统中所特有。
想到的一种办法是给这类词加上?号,在索引库中凡有?号的词,都看一下其上下文再确定其类属(在索引库中,同一题名的词是按切分先后顺序排列的,即是一种上下文语言环境)。
8 致谢
在《文献题名自动抽词—分类标引系统》抽词子系统的程序编写过程中,曾得到曹东同志的帮助,在此谨致谢意!
收稿日期:1998—05—29