王 磊 張仁瓊
(合肥工業(yè)大學圖書館,安徽合肥230009)
利用VBA技術(shù)和EndNote軟件建立查新報告數(shù)據(jù)庫
王 磊 張仁瓊
(合肥工業(yè)大學圖書館,安徽合肥230009)
〔摘 要〕針對查新報告中各種有效信息未被整理、利用的現(xiàn)狀,提出了一種利用VBA技術(shù)和EndNote軟件建立查新報告數(shù)據(jù)庫的方法。首先,利用Word VBA技術(shù),依據(jù)文本特征從Word文檔里抽取查新報告元數(shù)據(jù)項,之后利用Excel VBA技術(shù)將Word中的元數(shù)據(jù)項變?yōu)镋xcel數(shù)據(jù),同時將Excel數(shù)據(jù)轉(zhuǎn)換為EndNote可識別的文本文檔從而建立了基于EndNote軟件的查新報告數(shù)據(jù)庫。
〔關(guān)鍵詞〕查新報告;數(shù)據(jù)抽??;VBA技術(shù);EndNote
查新報告是查新機構(gòu)根據(jù)查新委托書的要求,通過查新項目的查新點與所查文獻范圍內(nèi)的文獻信息進行比較分析,對查新點做出新穎性判別后,以書面形式撰寫的客觀、公正的技術(shù)文件[1]。作為一種針對新穎性的鑒定報告,與其它科技類數(shù)據(jù)源相比,具備創(chuàng)新技術(shù)路線清晰、創(chuàng)新主題明確、創(chuàng)新結(jié)論對比客觀、有序等優(yōu)點,并客觀反映出了創(chuàng)新主體、創(chuàng)新內(nèi)容、創(chuàng)新領(lǐng)域、創(chuàng)新程度等各類信息。但現(xiàn)實中查新報告經(jīng)常僅作為一次性鑒定材料,用完即廢,其包含的各種創(chuàng)新信息并未被有效地挖掘、利用[2]。其實,自2001年1月1日開始實施的國家科技部制定的《科技查新規(guī)范》就規(guī)定每個查新項目的《科技查新報告》需登記著錄到國家查新工作數(shù)據(jù)庫[3]。但是,到目前為止國家查新工作數(shù)據(jù)庫還沒有建立,各查新站的查新報告存放方式還是以紙質(zhì)加電子文檔形式存放為主。雖然有個別查新機構(gòu)使用查新數(shù)據(jù)庫管理[4],但是購進一個數(shù)據(jù)庫系統(tǒng)價格較為昂貴,且不同系統(tǒng)導出的數(shù)據(jù)文檔都不統(tǒng)一,極難共享,這不利于今后全國查新報告統(tǒng)一數(shù)據(jù)庫的建立。同時這些系統(tǒng)需要手動輸入各種字段信息,如項目名稱、委托人、委托單位、檢索詞等等,這不但費時費力,還很容易出錯。針對這一問題,本文提出一種利用VBA技術(shù)和End-Note軟件建立科技查新報告數(shù)據(jù)庫的簡易方法,與此同時還可以利用這些數(shù)據(jù)方便地實現(xiàn)對查新報告的統(tǒng)計和深度挖掘。
目前,幾乎所有科技查新機構(gòu)都選擇用Word軟件編寫查新報告。Word文檔易于編輯、修改、呈現(xiàn)文件內(nèi)容,但其本身不包括語義信息,不易于數(shù)據(jù)信息的查詢和交換。介于此筆者設(shè)計了采用Word VBA技術(shù)和EndNote軟件實現(xiàn)構(gòu)建科技查新報告數(shù)據(jù)庫的簡易方法。具體設(shè)計方案如圖1所示。
圖1 查新報告數(shù)據(jù)庫設(shè)計方案
查新報告數(shù)據(jù)庫設(shè)計具體流程如下:
(1)根據(jù)查新報告Word文檔中分析出的固定文本特征,利用Word VBA技術(shù)抽取查新報告元數(shù)據(jù)項,得到包含元數(shù)據(jù)項內(nèi)容的Word文檔。
(2)利用Excel VBA技術(shù)將Word中的元數(shù)據(jù)項抽取、轉(zhuǎn)換為Excel工作表中數(shù)據(jù),此時的Excel工作表可實現(xiàn)元數(shù)據(jù)項統(tǒng)計、基于共現(xiàn)與耦合的元數(shù)據(jù)項深度挖掘,同時Excel數(shù)據(jù)表格可以方便轉(zhuǎn)換為各種數(shù)據(jù)類型,如XML數(shù)據(jù)、CSV數(shù)據(jù)、DIF數(shù)據(jù)交換格式、SYLK符號鏈接格式,從而可以導入各種主流數(shù)據(jù)庫和數(shù)據(jù)分析軟件。
(3)依據(jù)絕大多數(shù)科技查新站都在使用EndNote軟件的現(xiàn)狀,以及EndNote軟件創(chuàng)建數(shù)據(jù)庫的特點,本文將Excel數(shù)據(jù)轉(zhuǎn)換為EndNote可識別的文本文檔。
(4)將數(shù)據(jù)導入EndNote,建立基于EndNote軟件的查新報告數(shù)據(jù)庫,數(shù)據(jù)庫可實現(xiàn)各種統(tǒng)計和檢索功能。
2.1查新報告中元數(shù)據(jù)項的抽取
對一篇正規(guī)的查新報告本身來說,雖然不同部委(教育部、科技部)的查新報告撰寫規(guī)范略有不同,但都嚴格遵循其定義的格式,具有嚴格的編排結(jié)構(gòu)。如查新報告編號、委托項目名稱、查新委托人等待抽取的數(shù)據(jù)內(nèi)容在查新報告Word文檔中都有固定的文本特征,且多數(shù)待抽取的數(shù)據(jù)內(nèi)容有可參照定位的文本信息。為此,筆者針對不同特征的數(shù)據(jù)內(nèi)容項編寫了對應的元數(shù)據(jù)項抽取規(guī)則。同時為了使查新報告抽取時更加準確、智能化,在窗體控件中增加了分子式下標修正、添加字段、中文數(shù)據(jù)庫日期修正、簽字日期修正、生成查新費用等,并編寫了相應的程序。圖2為窗體界面。
要使查新報告中的元數(shù)據(jù)項被Word VBA精確抽取,就要針對元數(shù)據(jù)項設(shè)計準確的抽取規(guī)則。其核心工作就是尋找待抽取Word文檔中的文本特征、位置特征以及排除元數(shù)據(jù)項中空格、換行符、非顯示字符對精確抽取的干擾。
如字符串“報告編號:”之后就是數(shù)據(jù)項“報告編號”的內(nèi)容,例1就是基于“報告編號:”文本特征所編寫的程序代碼。
例1:
Public arr(14)as String
……
ActiveDocument.Range.Select
With Selection.Find
.ClearFormatting
.Text=″報告編號:″
.MatchWholeWord=True
.Execute
End With
Selection.Collapse wdCollapseEnd
Set myRange=Selection.Range
str=Trim(Mid(myRange.Paragraphs(1),6))
Set regx=CreateObject(″vbscript.regexp″)
With regx
.Global=True
.Pattern=″201436000L310([0-9]{3,})″
Set Mat=.Execute(str)
For Each m In Mat
arr(0)=m.Value
Next
End With
If arr(0)=″″Then MsgBox″報告編號可能有錯誤!″
If Len(arr(0))>16 Then MsgBox″報告編號可能有錯誤!-太長了″
……
以上代碼定義了一個大小為15的數(shù)組,其作用是保存各元數(shù)據(jù)項內(nèi)容。通過對“selection”對象里的“Find”方法在文檔里查找到“報告編號:”對應的行,將其設(shè)定為工作區(qū),之后通過“mid”函數(shù)取該行字符串第五位后的所有字符,該字符串就是報告編號與換行符。為了使抽取的報告編號完整、準確,筆者使用了正則表達式,其格式為“201436000L310([0-9]{3,})”,這樣就可以將完整、準確的報告編號寫入數(shù)組“arr(0)”中,同時該方法具備一定的報錯功能,可以提示報告編號錯誤種類。
例2是基于“審核員(簽字):”文本特征所編寫的程序代碼。
例2:
……
ActiveDocument.Range.Select
With Selection.Find
.ClearFormatting
.Text=″審核員(簽字)″
.MatchWholeWord=True
.Execute
End With
Selection.Collapse wdCollapseEnd
Set myRange=Selection.Range
a=Trim(myRange.Paragraphs(1))
Set regx=CreateObject(″vbscript.regexp″)
With regx
.Global=True
.Pattern=″審核員(簽字):|審核員職稱:|\s+″
Mat=.Replace(a,″-″)
arr(9)=Mid(Mat,2,Len(Mat)-2)
End With
……
以上代碼首先定位到“審核員(簽字):”所在行所有字符,之后利用正則表達式中的“replace”替換方法將“審核員(簽字):”、“審核員職稱:”、“結(jié)尾換行符”替換為“-”,利用mid函數(shù)取該行字符串第二位到倒數(shù)第三位的所有字符。這樣可以將審核員姓名與職稱準確的寫入數(shù)組“arr(9)”中。其余數(shù)據(jù)如查新項目名稱、委托日期、查新目的、查新機構(gòu)、查新點等所對應抽取規(guī)則基本等同以上兩列,本文不再贅述。
之后繼續(xù)利用Word VBA技術(shù)在查新報告Word文檔開始處插入表格,將數(shù)組中數(shù)據(jù)一一寫入表格。最終抽取結(jié)果如圖3所示。
圖3 查新報告元數(shù)據(jù)項抽取結(jié)果
2.2利用Excel VBA技術(shù)提取Word中數(shù)據(jù)信息
因為Excel數(shù)據(jù)表格可以方便轉(zhuǎn)換為各種數(shù)據(jù)類型[5-6],如XML數(shù)據(jù)、CSV數(shù)據(jù)、DIF數(shù)據(jù)交換格式、SYLK符號鏈接格式,從而導入各種主流數(shù)據(jù)庫和數(shù)據(jù)分析軟件,所以將從Word文檔插入表格中抽取元數(shù)據(jù)項并將元數(shù)據(jù)項填寫在Excel表格中相應的位置。具體見下面的程序代碼。
……
j=Cells(Rows.Count,1).End(xlUp).Row+1
On Error Resume Next
Dim wdapp As Word.Application
Dim wddoc As Document
Set wdapp=New Word.Application
wdapp.Documents.Open Filename:=ThisWorkbook.Path&″\科技查新報告-試用版(元1.0).doc″
With wdapp.Documents(1).Tables(1).Range
For i=1 To.Cells.Count
u=Left(.Cells(i).Range,Len(.Cells(i).Range)
-1)
Cells(j,i)=u
Next
End With
With wdapp.Documents(1).Tables(2).Tables(3).Range
For i=1 To.Cells.Count
u=Left(.Cells(i).Range,Len(.Cells(i).Range)
-1)
m=m&″|″&u
Next
Cells(j,16)=m
m=″″
End With
wdapp.Quit
……
以上代碼首先通過Excel中VBA技術(shù)建立對Word訪問的連接,之后提取Word插入表格中的元數(shù)據(jù)項,得到Excel數(shù)據(jù)表格。結(jié)果見圖4。
圖4 查新報告元數(shù)據(jù)項Excel表格
2.3將Excel數(shù)據(jù)轉(zhuǎn)換為EndNote可識別的文本文檔
經(jīng)過以上數(shù)據(jù)處理,得到了指定順序的數(shù)據(jù)項及對應的內(nèi)容,如第一列對應的是報告編號,第二列對應的是項目中文名稱。之后的工作是將Excel表格中內(nèi)容按順序?qū)懭胛谋疚臋n,包括三方面的工作:①確定EndNote導入格式的字段標識符(利用CNKI導出的EndNote格式標識系統(tǒng)),并按照順序?qū)⒆侄螛俗R符在另一個Excel表格“Worksheets(″endnote轉(zhuǎn)換″)”中寫成第一行;②按字段標識要求將Excel表格中相應內(nèi)容寫入字段標識下;(3)生成EndNote軟件識別的文本文檔。這一過程的實現(xiàn)具體見下面的程序。
……
Worksheets(″sheet1″).Activate
i=Cells(Rows.Count,1).End(xlUp).Row
arry=Range(Cells(2,1),Cells(i,16))
Worksheets(″endnote轉(zhuǎn)換″).Activate
For j=1 To i-1
Cells(j+1,1)=″Report″
Cells(j+1,2)=arry(j,4)
Cells(j+1,3)=Mid(arry(j,9),1,InStr(1,arry(j,9),″-″,1)-1)
Cells(j+1,4)=arry(j,2)
Cells(j+1,5)=arry(j,8)
Cells(j+1,6)=arry(j,7)
Cells(j+1,7)=″″
Cells(j+1,8)=arry(j,11)
Cells(j+1,9)=arry(j,13)
Cells(j+1,10)=arry(j,10)
Cells(j+1,11)=arry(j,5)
Cells(j+1,12)=arry(j,1)
Cells(j+1,13)=Mid(arry(j,15),9)
Next
Worksheets(″endnote轉(zhuǎn)換″).Activate
Set fs=CreateObject(″Scripting.FileSystemObject″)
Set a=fs.CreateTextFile(″C:\Documents and Settings\Administrator\桌面\Endnote格式.txt″,True)
V=Cells(Rows.Count,1).End(xlUp).Row
For j=2 To V
For i=1 To 14
l=Trim(Cells(1,i).Text)&″″&Trim(Cells(j,i))
a.WriteLine(l)
Next
Next
a.Close
……
以上代碼首先將Excel表格“Worksheets(″sheet1″)”中的各數(shù)據(jù)項寫入數(shù)組“arry()”,之后按照Excel表格“Worksheets(″endnote轉(zhuǎn)換″)”中字段標識符將數(shù)組中相應數(shù)據(jù)寫入字段標識符下。最后將生成文本文檔“Endnote格式.txt”,該文本類似CNKI導出的EndNote數(shù)據(jù)格式。圖5為生成的EndNote軟件可識別的文本文檔。
圖5 查新報告元數(shù)據(jù)項文本文件
2.4利用EndNote軟件建立查新報告數(shù)據(jù)庫
EndNote軟件作為參考文獻目錄的管理工具是由美國科學信息所(ISI)所開發(fā)研制的SCI(Thomson Scientific公司)的官方軟件[7]。目前絕大多數(shù)科技查新站為了提高文獻題錄著錄的效率都在使用該款軟件輔助查新。我們選用End-Note軟件來管理查新報告主要考慮到以下幾點:①EndNote能管理的數(shù)據(jù)沒有上限,至少能管理數(shù)十萬條數(shù)據(jù);②科技查新機構(gòu)的廣泛使用,避免了購買成本和學習時的時間成本;③可以根據(jù)個人需要重新排列并顯示數(shù)據(jù)信息,可以對貯存的信息數(shù)據(jù)庫進行檢索;④EndNote的系統(tǒng)資源占用??;(5)EndNote有很強的功能擴展,如果默認安裝的EndNote不能滿足要求,能很方便地擴展功能,同時其導出數(shù)據(jù)格式可以被目前大多數(shù)信息分析軟件識別,有利于查新報告數(shù)據(jù)庫的深度信息挖掘。
將數(shù)據(jù)導入EndNote軟件后可以根據(jù)實際情況來設(shè)置各種功能,如利用智能分組功能實現(xiàn)查新報告?zhèn)€人完成情況實時統(tǒng)計、委托單位實時統(tǒng)計等,因為操作完全等同于利用EndNote軟件管理個人文獻,在此不做贅述。設(shè)置完成后數(shù)據(jù)庫界面如圖6所示。
2.5利用Excel VBA深度挖掘查新報告元數(shù)據(jù)項
得到查新報告Excel元數(shù)據(jù)項數(shù)據(jù)表后可以利用Excel VBA技術(shù)來實現(xiàn)很多功能,如校內(nèi)查新數(shù)量統(tǒng)計、國內(nèi)外查新數(shù)量統(tǒng)計、查新目的統(tǒng)計、每個查新員查新數(shù)量統(tǒng)計等,下面我們利用Excel VBA技術(shù)統(tǒng)計查新員與查新員查新所用檢索詞的共現(xiàn)關(guān)系[8],然后以可視化的方式呈現(xiàn)出來。數(shù)據(jù)源為本校已經(jīng)做好的12份查新報告Excel元數(shù)據(jù)項數(shù)據(jù)表,表1為利用VBA技術(shù)自編軟件所生成的共現(xiàn)多值矩陣。
圖6 查新報告數(shù)據(jù)庫界面圖
表1 查新員檢索詞共現(xiàn)矩陣(部分)
將該矩陣導入Ucinet軟件并利用NetDraw可視化軟件繪制查新員檢索詞共現(xiàn)網(wǎng)絡(luò),見圖7。
圖7 查新員檢索詞共現(xiàn)網(wǎng)絡(luò)圖譜
圖中圓點與方塊間的連線表示查新員與其所用的檢索詞之間關(guān)聯(lián)。通過共現(xiàn)多值矩陣、共現(xiàn)網(wǎng)絡(luò)圖譜可以清楚知道查新員所做查新的具體領(lǐng)域,最重要的是可以對新來查新項目分配時做到有的放矢。
本文根據(jù)查新報告中不同的元數(shù)據(jù)項的格式特點,利用Word VBA技術(shù)實現(xiàn)了查新報告元數(shù)據(jù)項抽取,之后利用Excel VBA技術(shù)將Word中的元數(shù)據(jù)項變?yōu)镋xcel數(shù)據(jù),建立了基于EndNote軟件的查新報告數(shù)據(jù)庫,實現(xiàn)了Excel元數(shù)據(jù)項的深度挖掘功能,也為今后全國查新報告的入庫、匯總和更深層次挖掘利用提供了數(shù)據(jù)源基礎(chǔ)。同時該方案也可以應用到所有固定格式Word文檔的元數(shù)據(jù)項建庫。http:∥kjcx.nuist.edu.cn/research/2013-07-10-07-04-37,2014-03-21.
[2]黃如花,王小瓊.我國科技查新機構(gòu)的分布及特點[J].情報理論與實踐,2005,(3):255-259.
[3]科技查新規(guī)范[S].國科發(fā)計字[2000]544號.
[4]鄒藝.科技查新服務(wù)管理保障體系建設(shè)[J].圖書館,2008,(1):92-93.
[5]儲節(jié)旺,郭春俠.共詞分析法的基本原理及EXCEL實現(xiàn)[J].情報科學,2011,(6):931-934.
[6]董英斌,韓冰.LabVIEW中利用ActiveX技術(shù)訪問Excel的接口研究[J].微計算機信息,2006,(4):165-166,36.
[7]趙飛.常用文獻管理軟件功能比較[J].現(xiàn)代圖書情報技術(shù),2012,(3):67-72.
[8]王磊.國內(nèi)圖書館學科服務(wù)現(xiàn)狀可視化分析[J].圖書情報工作,2013,(2):136-142.
(本文責任編輯:馬 卓)
參考文獻
[1]教育部科技查新工作站查新報告撰寫規(guī)范(發(fā)文版)[S/OL].
·業(yè)務(wù)研究·
·業(yè)務(wù)研究·
Development of Sci-tech Novelty Retrieval Report Database by Using Excel VBA and EndNote
Wang Lei Zhang Rengqiong
(Library,Hefei University of Technology,Hefei 230009,China)
〔Abstract〕A new approach was proposed to establish Sci-tech Novelty Retrieval Report Database by using VBA technology and Endnote software due to all the effective information of Sci-tech Novelty Retrieval Report was not effectively organized and utilized in status quo.First of all,metadata items of the S&T Novelty Search Report were extracted from the word file based on text features.Secondly,metadata items of the Word file were converted to Excel data,whichwere also transformed into text file.Finally,this paper load the recognized text file into the EndNote software.Thus the Sci-tech Novelty Retrieval Report Database was established based on EndNote software and VBA technology.
〔Key words〕S&T novelty search report;data extraction;VBA technology;EndNote
作者簡介:王 磊(1981-),男,館員,博士研究生,研究方向:信息計量、學科服務(wù)。
基金項目:本文系安徽省高等學校圖書情報工作委員會基金項目“MOOC環(huán)境下高校圖書館角色定位與服務(wù)創(chuàng)新研究”(項目編號:TGW14A02)與合肥工業(yè)大學校級教學研究項目(項目編號:XJ201333)的研究成果之一。
收稿日期:2014-04-11
〔中圖分類號〕G250.7
〔文獻標識碼〕B
〔文章編號〕1008-0821(2015)08-0131-06
DOI:10.3969/j.issn.1008-0821.2015.08.025