■馮 民 毛善鋒
1)河北科技大學(xué)學(xué)報(bào)編輯部,河北石家莊市裕華東路70號(hào) 050018
2)《東南大學(xué)學(xué)報(bào)(自然科學(xué)版)》編輯部,南京市四牌樓2號(hào) 210096
當(dāng)前,有關(guān)科技期刊元數(shù)據(jù)提取方面的研究已有一些研究成果[1_6],相關(guān)技術(shù)和產(chǎn)品也已較為成熟。例如,文獻(xiàn)[1]提供一種為提取DOI數(shù)據(jù)而在排版模板中預(yù)置標(biāo)簽的方法,這種方法相對(duì)來(lái)說(shuō)提取的元數(shù)據(jù)結(jié)果最準(zhǔn)確,只是要求相關(guān)人員對(duì)排版軟件有一定的了解。文獻(xiàn)[2]提出利用VB讀取方正排版文件以提取元數(shù)據(jù),但技術(shù)相對(duì)復(fù)雜。文獻(xiàn)[3]提出在程序中預(yù)置兩個(gè)刊物的定位標(biāo)簽,使用Excel VBA從方正fbd小樣文件中提取元數(shù)據(jù),其要求人工先選擇一些符號(hào),預(yù)置為定位標(biāo)簽。
本文提出了一種用Excel VBA進(jìn)行期刊元數(shù)據(jù)自動(dòng)提取的程序設(shè)計(jì),理論上可實(shí)現(xiàn)任意數(shù)量期刊元數(shù)據(jù)的提取。程序的創(chuàng)新之處在于無(wú)需預(yù)置定位標(biāo)簽,而是在元數(shù)據(jù)提取程序運(yùn)行過(guò)程中,在人工輔助下,由程序根據(jù)預(yù)置規(guī)則自動(dòng)確定定位標(biāo)簽。本文的研究適用對(duì)象是單刊或期刊集團(tuán)、集群,期望為批量期刊元數(shù)據(jù)的提取提供一種減輕人工勞動(dòng)、提高數(shù)據(jù)采集效率的新思路。
本文的思路是,利用Excel打開fbd等類型的文件后,所有的數(shù)據(jù)都按順序處于第1列單元格內(nèi)(有時(shí)個(gè)別數(shù)據(jù)在第2列)[3],根據(jù)不同的元數(shù)據(jù)前后有不同的“〖”、“〗”、“[”、“]”等符號(hào)對(duì)及特殊文字,由程序采集,作為定位標(biāo)簽使用,然后程序根據(jù)定位標(biāo)簽進(jìn)行元數(shù)據(jù)的定位和提取。最后,將提取的數(shù)據(jù)進(jìn)行處理,提供數(shù)據(jù)下載功能。
期刊元數(shù)據(jù)的提取程序流程如圖1所示,其各步驟的功能介紹如下。
圖1 數(shù)據(jù)提取流程圖
Step1:獲得期刊名。程序開始后,首先彈出用戶窗體(見圖2),各部分實(shí)現(xiàn)的功能如下。
圖2 用戶窗體
a)下拉列表。用戶窗體的初始化程序自動(dòng)從“期刊名錄.txt”文件中提取期刊名,賦值到下拉列表中。點(diǎn)擊下拉列表中的刊名,則會(huì)出現(xiàn)在列表框中;直接在列表框中輸入刊名亦可。容錯(cuò)機(jī)制:若打開“期刊名錄.txt”出錯(cuò),則先建立文件,此時(shí)列表會(huì)顯示為空。
b)確定。對(duì)應(yīng)圖1中的“選擇期刊”。點(diǎn)擊后程序會(huì)將在列表框所獲取的期刊名與“期刊名錄”中的期刊名逐一進(jìn)行對(duì)比,若已有此期刊則置isNewJournal為False;若 “期刊名錄”中沒有,則置isNewJournal為“True”。若沒有選擇期刊而點(diǎn)擊“確定”,則程序提示“還未選擇期刊”。
c)取消。對(duì)應(yīng)圖1中的“取消”。彈出“警告”對(duì)話框,提示已取消操作,并終止程序。
d)新增。對(duì)應(yīng)圖1中的“新增期刊”。點(diǎn)擊“新增”后,彈出輸入對(duì)話框,提示輸入刊物名稱。若輸入為空時(shí)點(diǎn)擊確定或點(diǎn)擊取消則返回到用戶窗體;若輸入的內(nèi)容經(jīng)比對(duì)是新增刊名,則在“期刊名錄.txt”中增加期刊名稱,并置 isNewJournal為“True”;若“期刊名錄”中已有此刊名,則彈出對(duì)話框,提示是否重新確定定位標(biāo)簽,選擇是則置isNewJournal為“True”,但不存入期刊名錄,選擇否則置isNewJournal為False??蓪ⅰ捌诳洝敝械钠诳托略銎诳贓xcel表中排序,然后再寫入,這樣顯示在用戶窗體的下拉列表中的期刊名就是按序排列的了。
Step2:載入fbd數(shù)據(jù)。利用“打開”對(duì)話框獲得fbd文件名及路徑,用Excel打開、載入fbd數(shù)據(jù)。
Step3:確定定位標(biāo)簽。由人工輔助點(diǎn)擊元數(shù)據(jù)所在的單元格,程序就會(huì)自動(dòng)確定定位標(biāo)簽,并存入一個(gè)以期刊名命名的純文本文件中,如河北科技大學(xué)學(xué)報(bào).txt。
Step4:讀取定位標(biāo)簽。根據(jù)從用戶窗體所獲得的期刊名,從當(dāng)前路徑下對(duì)應(yīng)的txt文件中讀取定位標(biāo)簽。若打開出錯(cuò),則轉(zhuǎn)到Step3。
Step5:提取、處理元數(shù)據(jù)。進(jìn)行元數(shù)據(jù)的提取和處理。
Step6:下載數(shù)據(jù)。在數(shù)據(jù)提取完畢后,對(duì)數(shù)據(jù)進(jìn)行處理,滿足諸如勤云采編系統(tǒng)所需的Excel數(shù)據(jù)表,或者COAJ所需的Excel數(shù)據(jù)表等的下載,再者,可考慮增加不同格式的下載功能。
以上流程中,所涉及的編程技術(shù)已較為成熟,這方面本文不再贅述。因?yàn)镾tep3是由程序確定定位標(biāo)簽,其準(zhǔn)確與否直接關(guān)系到元數(shù)據(jù)提取的正確性,是編程的關(guān)鍵點(diǎn)和難點(diǎn),故下文只闡述由程序確定定位標(biāo)簽這方面的內(nèi)容。
本文認(rèn)為,定位標(biāo)簽的提取類似于元數(shù)據(jù)的提取,即定位標(biāo)簽只不過(guò)是一種特殊的數(shù)據(jù),故而可以在用戶的輔助下,由程序依據(jù)一定的規(guī)則采集。
觀察可見,多數(shù)期刊中各篇論文的格式、體例至少在一期中是基本一致的,即各篇論文的相同項(xiàng)元數(shù)據(jù)的定位標(biāo)簽是基本相同的,這就為程序確定定位標(biāo)簽提供了條件。由載入Excel中的方正fbd小樣文件可知,幾乎每一項(xiàng)元數(shù)據(jù)的開始和末尾都有一些標(biāo)志性的、與正文內(nèi)容沒有重合的符號(hào),有的元數(shù)據(jù)前還有特殊的文字字符,如“摘要”“關(guān)鍵詞”等,故定位標(biāo)簽的確定主要是程序?qū)@些特殊文字和“〖”、“〗”以及“[”、“]”符號(hào)的判斷和提取。
自動(dòng)化采集定位標(biāo)簽的程序設(shè)計(jì)說(shuō)明如下。
(1)盡量全面的考慮元數(shù)據(jù)項(xiàng)目
將這些元數(shù)據(jù)以及某些特殊數(shù)據(jù)(如“首頁(yè)頁(yè)眉”)的中文名稱賦值給一個(gè)一維數(shù)組,如
示例中有21個(gè)數(shù)據(jù),這些數(shù)據(jù)項(xiàng)目可根據(jù)需要增減、調(diào)整。
(2)循環(huán)采集定位標(biāo)簽
按上述一維數(shù)組的下標(biāo)順序,由程序彈出對(duì)話框(見圖3),提示用戶點(diǎn)擊某個(gè)元數(shù)據(jù)(如題名)所在的單元格,用戶可根據(jù)具體情況選擇是、否、取消,對(duì)應(yīng)的后續(xù)處理程序分別是采集定位標(biāo)簽、再等3秒以待選中單元格和取消此項(xiàng)數(shù)據(jù)的采集;循環(huán)上述步驟,即可采集所有元數(shù)據(jù)的定位標(biāo)簽。程序在采集定位標(biāo)簽的同時(shí),還采集定位標(biāo)簽所在的行號(hào),以便按元數(shù)據(jù)實(shí)際出現(xiàn)的順序排序,最后可將排序后的定位標(biāo)簽寫入以期刊名命名的txt文件。
圖3 程序提示、人工點(diǎn)擊單元格示例
說(shuō)明:1)為了準(zhǔn)確切分稿件,首頁(yè)頁(yè)眉需與其他頁(yè)眉不同。2)定位標(biāo)簽排序后存儲(chǔ)的目的是按順序定位、采集元數(shù)據(jù)。不同的期刊其定位標(biāo)簽出現(xiàn)的順序可能不同,但都是按照先后出現(xiàn)的順序存儲(chǔ)的。
圖4顯示的是《河北科技大學(xué)學(xué)報(bào)》的定位標(biāo)簽。因?yàn)槭莟xt文件,故可以復(fù)制、移動(dòng),另外,也可以在必要時(shí)編輯txt文件里的定位標(biāo)簽。
圖4 定位標(biāo)簽示例
(1)在采集定位標(biāo)簽的循環(huán)過(guò)程中,一個(gè)重要的子程序是要確定用戶已選中單元格,這是程序采集定位標(biāo)簽的前提,其主要程序語(yǔ)句如下。
(2)另一個(gè)重要的子程序是在用戶選中單元格后,程序如何自動(dòng)確定定位標(biāo)簽。對(duì)于元數(shù)據(jù)前有特殊字符作為先導(dǎo)的,如前面有“文章編號(hào)”“doi”,“摘要”等,依靠特殊字符進(jìn)行定位標(biāo)簽的提?。粚?duì)于無(wú)特殊字符作為先導(dǎo)的,如“題名”“作者姓名”“單位”等,則進(jìn)行另外的統(tǒng)一設(shè)計(jì)。限于篇幅,本文只給出“統(tǒng)一設(shè)計(jì)”部分的程序以供參考。
本文提出了利用Excel VBA在程序運(yùn)行過(guò)程中確定元數(shù)據(jù)的定位標(biāo)簽繼而采集元數(shù)據(jù)的思路,一般只需在首次提取某個(gè)刊物元數(shù)據(jù)時(shí)進(jìn)行定位標(biāo)簽的采集,其后不必重復(fù)采集。這種方式可在較大程度上降低對(duì)人員的技術(shù)要求,減輕人工勞動(dòng),實(shí)現(xiàn)批量期刊自動(dòng)化數(shù)據(jù)提取。對(duì)幾種刊物的初步測(cè)試表明,該方法能較準(zhǔn)確地采集定位標(biāo)簽,較好地實(shí)現(xiàn)元數(shù)據(jù)的提取,證明這種方法有一定的可行性。此種方法理論上可滿足任意數(shù)量期刊元數(shù)據(jù)提取的需要。
本文不足之處是,針對(duì)首頁(yè)頁(yè)眉與其他頁(yè)眉相同、排版較為特殊(如題名、作者姓名、單位等在同一個(gè)單元格內(nèi))、個(gè)別元數(shù)據(jù)定位標(biāo)簽與其他不同(如某篇文章題名的定位標(biāo)簽與其他篇的不同)等等情況還不能進(jìn)行有效的數(shù)據(jù)提取。今后,除針對(duì)上述問(wèn)題進(jìn)行深入研究外,還需對(duì)更多期刊進(jìn)行測(cè)試,以發(fā)現(xiàn)問(wèn)題、改進(jìn)程序。
[1]毛善鋒,田杰,張莞.預(yù)置XML標(biāo)簽 定制DOI元數(shù)據(jù)[J].科技與出版,2009(11):14_16.
[2]楊海亮,徐用吉.利用 VB讀取方正排版文件提取元數(shù)據(jù)[J].中國(guó)科技期刊研究,2015,26(6):612_617.
[3]馮民,高紹強(qiáng).用excel宏程序提取fbd期刊數(shù)據(jù)的簡(jiǎn)易編程[J].中國(guó)科技期刊研究,2015,26(9):969_974.
[4]李朝光,張銘,鄧志鴻,等.論文元數(shù)據(jù)信息的自動(dòng)抽?。跩].計(jì)算機(jī)工程與應(yīng)用,2002(21):189_191.
[5]狄滌,周競(jìng)揚(yáng),潘金貴.基于規(guī)則的 HTML文檔元數(shù)據(jù)提?。跩].計(jì)算機(jī)工程,2004,30(9):85_86.
[6]郭志鑫.基于本體的文檔引文元數(shù)據(jù)信息抽取[J].微計(jì)算機(jī)信息,2006,22(18):304_306.