劉永強(qiáng),馬昕紅,樊 坤
?
利用VBA一鍵提取Word論文上網(wǎng)元數(shù)據(jù)
劉永強(qiáng),馬昕紅,樊 坤
(西安熱工研究院有限公司熱力發(fā)電編輯部,西安 710054)
為了減少期刊編輯部在每期論文網(wǎng)絡(luò)出版時(shí)上傳元數(shù)據(jù)的工作量,根據(jù)Word論文的標(biāo)題、作者、單位、摘要、關(guān)鍵詞、中圖分類(lèi)號(hào)、文獻(xiàn)標(biāo)識(shí)碼、參考文獻(xiàn)、備注等元數(shù)據(jù)的位置、樣式、標(biāo)注等信息確定提取規(guī)則,提出了一種基于VBA的上網(wǎng)元數(shù)據(jù)一鍵提取方法。采用該提取方法后,《熱力發(fā)電》期刊每期提取元數(shù)據(jù)時(shí)間由4 h縮短至1 h,達(dá)到了預(yù)期效果。該方法對(duì)編輯同行具有一定的借鑒作用。
元數(shù)據(jù);信息提??;VBA;樣式;論文上網(wǎng)
互聯(lián)網(wǎng)時(shí)代,學(xué)術(shù)期刊面臨前所未有的機(jī)遇和挑戰(zhàn),其出版方式和運(yùn)營(yíng)模式都迎來(lái)一場(chǎng)巨大的變革[1]。目前,幾乎所有的期刊均以實(shí)現(xiàn)了網(wǎng)絡(luò)出版,且已有部分期刊開(kāi)始嘗試開(kāi)放存取。如何快速、高質(zhì)量地提取擬發(fā)表論文的元數(shù)據(jù)是實(shí)現(xiàn)期刊網(wǎng)絡(luò)出版的關(guān)鍵。隨著計(jì)算機(jī)的廣泛應(yīng)用以及互聯(lián)網(wǎng)的飛速發(fā)展,眾多提取方法被應(yīng)用到文檔信息提取中[2-8]。
考慮到目前大多數(shù)作者采用Word撰寫(xiě)論文,且不少編輯部采用Word排版,急需一種依托Word文檔的信息提取方法。吳春龍[9]基于C#語(yǔ)言進(jìn)行軟件設(shè)計(jì),實(shí)現(xiàn)了從損壞的Word 97、Word 2003文檔中提取文本。湯克明等[10]在Delphi 7.0平臺(tái)下開(kāi)發(fā)了一個(gè)實(shí)用的Word文檔分析工具,給出了Word文檔常規(guī)屬性的提取方法。文獻(xiàn)[11-13]分別提出了1種Word表格與數(shù)據(jù)庫(kù)數(shù)據(jù)雙向轉(zhuǎn)換的方法,既實(shí)現(xiàn)了從Word表格中采集提取數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,又實(shí)現(xiàn)了從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)導(dǎo)出到Word表格中,該方法轉(zhuǎn)換效率高,實(shí)用可行,但僅限于從Word表格的提取信息。鄭河榮等[14]在對(duì)Word文檔對(duì)象的分析基礎(chǔ)上,介紹了Word文檔信息的智能提取技術(shù),但僅限于表格中的某些特定字段。
在爭(zhēng)奪網(wǎng)絡(luò)首發(fā)權(quán)的戰(zhàn)爭(zhēng)中,采用機(jī)械的復(fù)制粘貼方法提取元數(shù)據(jù)已不能滿(mǎn)足要求。本文基于前人方法和經(jīng)驗(yàn),以《熱力發(fā)電》期刊為例,設(shè)計(jì)出一種針對(duì)Word論文上網(wǎng)元數(shù)據(jù)的一鍵提取方法,對(duì)編輯同行具有一定的借鑒作用。
VBA是Microsoft設(shè)計(jì)的最簡(jiǎn)單的開(kāi)發(fā)工具,能夠很方便地與其他軟件兼容,具有直觀、高速開(kāi)發(fā)等特點(diǎn)[15]。VBA位于Word開(kāi)發(fā)工具中。開(kāi)發(fā)工具提供了大量的指令及其他加載項(xiàng)功能。單擊“文件”—“選項(xiàng)”—“自定義功能區(qū)”—在“主選項(xiàng)卡”列表中,選擇“開(kāi)發(fā)工具”復(fù)選框,單擊“確定”,即可激活該選項(xiàng)卡,如圖1所示。
圖1 開(kāi)發(fā)工具選項(xiàng)卡
根據(jù)Dublin元數(shù)據(jù)標(biāo)準(zhǔn)[16],考慮科技論文的特殊性[17],其元數(shù)據(jù)可歸納為標(biāo)題(副標(biāo)題)、主要責(zé)任人(作者姓名、學(xué)歷、機(jī)構(gòu)、聯(lián)系方法)、主題(關(guān)鍵詞、主題詞、論文分類(lèi)號(hào))、描述(摘要、目次、基金資助)、其他責(zé)任人(姓名、機(jī)構(gòu)、責(zé)任方式)、日期(收稿日期、修改日期、發(fā)布日期)、資源類(lèi)型、格式(期刊名稱(chēng)、期數(shù)、頁(yè)面、頁(yè)面尺寸)、標(biāo)識(shí)符(文章編號(hào)、DOI)、語(yǔ)種、相關(guān)資源(參考文獻(xiàn))、版權(quán)、論文類(lèi)型13個(gè)元數(shù)據(jù)和屬性[6]。
結(jié)合《熱力發(fā)電》期刊實(shí)際情況,本文所討論的論文上網(wǎng)元數(shù)據(jù)是指論文的標(biāo)題、作者、單位、摘要、關(guān)鍵詞、中圖分類(lèi)號(hào)、文獻(xiàn)標(biāo)識(shí)碼、參考文獻(xiàn)、備注等信息。
由于論文的格式一般都是固定的,通常論文的元數(shù)據(jù)一般都會(huì)集中在論文的前幾頁(yè),并且各個(gè)元數(shù)據(jù)都會(huì)按照一定的順序出現(xiàn),比如論文的第一頁(yè)通常會(huì)有論文的標(biāo)題、作者、摘要和關(guān)鍵詞等信息;而論文的每一項(xiàng)元數(shù)據(jù)都有其特定的字體、字號(hào)、行距等樣式,并且同一項(xiàng)元數(shù)據(jù)中的所有文字都會(huì)采用同種樣式;同時(shí)某些特定的元數(shù)據(jù)都會(huì)有關(guān)鍵詞進(jìn)行標(biāo)注,如在摘要的正文前會(huì)加上關(guān)鍵詞“[摘要]”等:結(jié)合這些特點(diǎn)可以提高對(duì)論文有效信息提取的效率和準(zhǔn)確率[4]?!稛崃Πl(fā)電》期刊論文樣式庫(kù)和模板[18]首頁(yè)分別如圖2和圖3所示。
圖3 論文模板
結(jié)合圖2、圖3,根據(jù)元數(shù)據(jù)位置、樣式、標(biāo)注等信息確定提取規(guī)則。
(1) 借助樣式讀取整段。
中文標(biāo)題、英文標(biāo)題、中文姓名、英文姓名等均獨(dú)占一段,可分別借助預(yù)設(shè)的“標(biāo)題中文” “標(biāo)題英文” “作者中文” “作者英文”樣式識(shí)別并提取。
(2) 借助標(biāo)注提取整段。
中文摘要、中文關(guān)鍵詞等均獨(dú)占一段,且分別以“[摘要]” “[關(guān)鍵詞]”作為標(biāo)注。查找這些標(biāo)注定位到元數(shù)據(jù)所在段落,并替換掉這些標(biāo)注即可。
(3) 提取段落的一部分。
中圖分類(lèi)號(hào)、文獻(xiàn)標(biāo)識(shí)碼與文章編號(hào)共居一段,分別以“[中圖分類(lèi)號(hào)]” “[文獻(xiàn)標(biāo)識(shí)碼]” “[文章編號(hào)]”作為標(biāo)注,且已知文獻(xiàn)標(biāo)識(shí)碼和文章編號(hào)位數(shù)確定。此時(shí)可采用從右向左讀取字符數(shù)的方法提取論文的中圖分類(lèi)號(hào)和文獻(xiàn)標(biāo)識(shí)碼。
(4) 讀取多段。
全文一般有多條參考文獻(xiàn),可采用預(yù)設(shè)的“參考文獻(xiàn)”樣式識(shí)別,再借助循環(huán)逐條增加的方式提取。每條參考文獻(xiàn)之間采用換行符chr(13)或回車(chē)符chr(10)分隔。
If InStr(ActiveDocument.Paragraphs(i).Range.Style.NameLocal, "參考文獻(xiàn)") > 0 Then接收表.Cells(行, 11) = 接收表.Cells(行, 11) + Chr(10) + ActiveDocument.Paragraphs(i).Range.Text
(5) 讀取多段并截去首尾。
作者單位可能不止一個(gè),單位首尾用括號(hào)括起來(lái)??刹捎妙A(yù)設(shè)的“單位中文” “單位英文”樣式識(shí)別,借助循環(huán)逐條增加的方式提取,再截去首尾的括號(hào)。
借助宏功能設(shè)置提取快捷鍵或按鈕。具體創(chuàng)建方法為:①單擊“開(kāi)發(fā)工具”選項(xiàng)卡—“代碼”—“錄制宏”,彈出“錄制宏”對(duì)話框,修改宏名為“一鍵提取”;②將宏指定到鍵盤(pán)(也可指定到按鈕),彈出“自定義鍵盤(pán)”對(duì)話框,鼠標(biāo)移至“請(qǐng)按新快捷鍵”,同時(shí)摁下Ctrl+Shift+T,單擊“指定”,接著單擊“關(guān)閉”;③單擊“代碼”—“停止錄制”,到此一鍵提取操作賦予快捷鍵Ctrl+Shift+T。
主程序編輯方法為:①單擊“開(kāi)發(fā)工具”選項(xiàng)卡—“代碼”—“宏”,彈出“宏”對(duì)話框;②選擇“一鍵提取”,單擊“編輯”,打開(kāi)VBA窗口;③在“一鍵提取”程序節(jié)內(nèi)輸入以下程序:
Sub 單個(gè)提取()Dim oApp As ObjectDim oappwork, 接收表Dim MyString1, MyString2, MyString3, MyString4, MyString5Dim m, n As LongSet oApp = CreateObject("Excel.Application")Set oappwork = oApp.Workbooks.AddSet 接收表 = oappwork.Sheets(1)行 = 1接收表.Cells(1, 1) = "中文標(biāo)題"接收表.Cells(1, 2) = "Title"接收表.Cells(1, 3) = "作者"接收表.Cells(1, 4) = "中文單位"接收表.Cells(1, 5) = "Author(s)"接收表.Cells(1, 6) = "英文單位"接收表.Cells(1, 7) = "關(guān)鍵詞"接收表.Cells(1, 8) = "分類(lèi)號(hào)"接收表.Cells(1, 9) = "文獻(xiàn)標(biāo)識(shí)碼"接收表.Cells(1, 10) = "摘要"接收表.Cells(1, 11) = "參考文獻(xiàn)"接收表.Cells(1, 12) = "備注/Memo"For i = 1 To ActiveDocument.Paragraphs.Count ’此處填入2.2節(jié)中所列提取程序Next ioApp.Visible = TrueEnd Sub
采用上述一鍵提取方法能以Excel工作簿的形式輸出單篇論文上網(wǎng)元數(shù)據(jù)。以每期20余篇論文計(jì),可生成20余個(gè)工作簿,將其匯總至1個(gè)工作簿內(nèi),即可得到當(dāng)期網(wǎng)絡(luò)出版所需的元數(shù)據(jù)。同理,可根據(jù)不同編輯部的需求,提取論文中的英文摘要、英文關(guān)鍵詞、DOI編號(hào)等數(shù)據(jù)。
本文設(shè)計(jì)了一種Word論文上網(wǎng)元數(shù)據(jù)一鍵提取方法。該方法在《熱力發(fā)電》期刊網(wǎng)絡(luò)出版中起到了明顯作用,顯著減輕了編務(wù)工作量。采用傳統(tǒng)復(fù)制粘貼方法提取一期論文上網(wǎng)元數(shù)據(jù)約需4 h,采用一鍵提取方法后僅需約1 h。后期可在提取程序精簡(jiǎn)和提取方法智能化方面做深入研究。
[1] 廖坤,崔玉潔.網(wǎng)絡(luò)時(shí)代學(xué)術(shù)期刊數(shù)字出版模式探析[J].編輯學(xué)報(bào),2017,29(2):116-118.
[2] 劉華中.面向PDF文檔的論文元數(shù)據(jù)提取方法研究[D].燕山大學(xué),2012:2;4-6.
[3] 牛永潔,薛蘇琴.基于PDFBox抽取學(xué)術(shù)論文信息的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014(12):61-63.
[4] 任林濤.PDF格式中文科技論文的有效信息提取方法及分類(lèi)研究[D].長(zhǎng)春:吉林大學(xué),2011:9-18.
[5] 趙子浩.基于集成學(xué)習(xí)的OA期刊論文元數(shù)據(jù)提取方法研究[D].秦皇島:燕山大學(xué),2012:1-3.
[6] 錢(qián)建立,吳廣茂,蔣路.基于特征相似度的科技論文元數(shù)據(jù)提取算法研究[J].微電子學(xué)與計(jì)算機(jī),2008,25(8): 129-132.
[7] 楊海亮,徐用吉.利用VB讀取方正排版文件提取元數(shù)據(jù)[J].中國(guó)科技期刊研究,2015,26(6):612-617.
[8] 馮民,毛善峰.一種適合大批量期刊元數(shù)據(jù)自動(dòng)化提取的程序設(shè)計(jì)[J].中國(guó)科技期刊研究,2016,27(10): 1081-1084.
[9] 吳春龍.C#語(yǔ)言實(shí)現(xiàn)從Word文檔中提取文本[J].電腦編程技巧與維護(hù),2013(13):84-87.
[10] 湯克明,陳崚.Word服務(wù)器的接口解析與文檔屬性提取[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(28):79-82.
[11] 黃蔚,張璟,李軍懷,等.非結(jié)構(gòu)化Word數(shù)據(jù)表與RDB間的存儲(chǔ)轉(zhuǎn)換[J].計(jì)算機(jī)工程,2009,35(20):37-40.
[12] 肖剛,王洪恩,王昌建,等.基于Word文檔的數(shù)據(jù)交換策略及其實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(3):34-6.
[13] 林宮.基于OLE和VBA的數(shù)據(jù)庫(kù)與Word數(shù)據(jù)交互研究[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,34(6): 831-835.
[14] 鄭河榮,沈瑛,馬珂絳,等.Word文檔信息的智能提取技術(shù)[J].紹興文理學(xué)院學(xué)報(bào)(自然科學(xué)版),2003,23(9): 33-35.
[15] 王克剛,齊軍.Word文檔的程序控制[J].安康學(xué)院學(xué)報(bào),2002,14(2):45-47.
[16] ANSI/NISOZ 39.85—2001. The Dublin core meta data element set [M]. Maryland: NISO Press, 2001.
[17] 屠彤輝.期刊論文的元數(shù)據(jù)描述探析[J].上海高校圖書(shū)情報(bào)工作研究,2006(4):30-34.
[18] 劉永強(qiáng),李園,馬昕紅,等.學(xué)術(shù)期刊傻瓜式投稿模板設(shè)計(jì)方法[J].編輯學(xué)報(bào),2018,30(2):192-195.