APP下载

利用VBA技术和EndNote软件建立查新报告数据库

2015-07-20张仁琼

现代情报 2015年8期

王 磊 张仁琼

(合肥工业大学图书馆,安徽合肥230009)

利用VBA技术和EndNote软件建立查新报告数据库

王 磊 张仁琼

(合肥工业大学图书馆,安徽合肥230009)

〔摘 要〕针对查新报告中各种有效信息未被整理、利用的现状,提出了一种利用VBA技术和EndNote软件建立查新报告数据库的方法。首先,利用Word VBA技术,依据文本特征从Word文档里抽取查新报告元数据项,之后利用Excel VBA技术将Word中的元数据项变为Excel数据,同时将Excel数据转换为EndNote可识别的文本文档从而建立了基于EndNote软件的查新报告数据库。

〔关键词〕查新报告;数据抽取;VBA技术;EndNote

查新报告是查新机构根据查新委托书的要求,通过查新项目的查新点与所查文献范围内的文献信息进行比较分析,对查新点做出新颖性判别后,以书面形式撰写的客观、公正的技术文件[1]。作为一种针对新颖性的鉴定报告,与其它科技类数据源相比,具备创新技术路线清晰、创新主题明确、创新结论对比客观、有序等优点,并客观反映出了创新主体、创新内容、创新领域、创新程度等各类信息。但现实中查新报告经常仅作为一次性鉴定材料,用完即废,其包含的各种创新信息并未被有效地挖掘、利用[2]。其实,自2001年1月1日开始实施的国家科技部制定的《科技查新规范》就规定每个查新项目的《科技查新报告》需登记著录到国家查新工作数据库[3]。但是,到目前为止国家查新工作数据库还没有建立,各查新站的查新报告存放方式还是以纸质加电子文档形式存放为主。虽然有个别查新机构使用查新数据库管理[4],但是购进一个数据库系统价格较为昂贵,且不同系统导出的数据文档都不统一,极难共享,这不利于今后全国查新报告统一数据库的建立。同时这些系统需要手动输入各种字段信息,如项目名称、委托人、委托单位、检索词等等,这不但费时费力,还很容易出错。针对这一问题,本文提出一种利用VBA技术和End-Note软件建立科技查新报告数据库的简易方法,与此同时还可以利用这些数据方便地实现对查新报告的统计和深度挖掘。

1 建设查新报告数据库的设想

目前,几乎所有科技查新机构都选择用Word软件编写查新报告。Word文档易于编辑、修改、呈现文件内容,但其本身不包括语义信息,不易于数据信息的查询和交换。介于此笔者设计了采用Word VBA技术和EndNote软件实现构建科技查新报告数据库的简易方法。具体设计方案如图1所示。

图1 查新报告数据库设计方案

查新报告数据库设计具体流程如下:

(1)根据查新报告Word文档中分析出的固定文本特征,利用Word VBA技术抽取查新报告元数据项,得到包含元数据项内容的Word文档。

(2)利用Excel VBA技术将Word中的元数据项抽取、转换为Excel工作表中数据,此时的Excel工作表可实现元数据项统计、基于共现与耦合的元数据项深度挖掘,同时Excel数据表格可以方便转换为各种数据类型,如XML数据、CSV数据、DIF数据交换格式、SYLK符号链接格式,从而可以导入各种主流数据库和数据分析软件。

(3)依据绝大多数科技查新站都在使用EndNote软件的现状,以及EndNote软件创建数据库的特点,本文将Excel数据转换为EndNote可识别的文本文档。

(4)将数据导入EndNote,建立基于EndNote软件的查新报告数据库,数据库可实现各种统计和检索功能。

2 查新报告数据库的具体建立过程

2.1查新报告中元数据项的抽取

对一篇正规的查新报告本身来说,虽然不同部委(教育部、科技部)的查新报告撰写规范略有不同,但都严格遵循其定义的格式,具有严格的编排结构。如查新报告编号、委托项目名称、查新委托人等待抽取的数据内容在查新报告Word文档中都有固定的文本特征,且多数待抽取的数据内容有可参照定位的文本信息。为此,笔者针对不同特征的数据内容项编写了对应的元数据项抽取规则。同时为了使查新报告抽取时更加准确、智能化,在窗体控件中增加了分子式下标修正、添加字段、中文数据库日期修正、签字日期修正、生成查新费用等,并编写了相应的程序。图2为窗体界面。

要使查新报告中的元数据项被Word VBA精确抽取,就要针对元数据项设计准确的抽取规则。其核心工作就是寻找待抽取Word文档中的文本特征、位置特征以及排除元数据项中空格、换行符、非显示字符对精确抽取的干扰。

如字符串“报告编号:”之后就是数据项“报告编号”的内容,例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的数组,其作用是保存各元数据项内容。通过对“selection”对象里的“Find”方法在文档里查找到“报告编号:”对应的行,将其设定为工作区,之后通过“mid”函数取该行字符串第五位后的所有字符,该字符串就是报告编号与换行符。为了使抽取的报告编号完整、准确,笔者使用了正则表达式,其格式为“201436000L310([0-9]{3,})”,这样就可以将完整、准确的报告编号写入数组“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”替换方法将“审核员(签字):”、“审核员职称:”、“结尾换行符”替换为“-”,利用mid函数取该行字符串第二位到倒数第三位的所有字符。这样可以将审核员姓名与职称准确的写入数组“arr(9)”中。其余数据如查新项目名称、委托日期、查新目的、查新机构、查新点等所对应抽取规则基本等同以上两列,本文不再赘述。

之后继续利用Word VBA技术在查新报告Word文档开始处插入表格,将数组中数据一一写入表格。最终抽取结果如图3所示。

图3 查新报告元数据项抽取结果

2.2利用Excel VBA技术提取Word中数据信息

因为Excel数据表格可以方便转换为各种数据类型[5-6],如XML数据、CSV数据、DIF数据交换格式、SYLK符号链接格式,从而导入各种主流数据库和数据分析软件,所以将从Word文档插入表格中抽取元数据项并将元数据项填写在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技术建立对Word访问的连接,之后提取Word插入表格中的元数据项,得到Excel数据表格。结果见图4。

图4 查新报告元数据项Excel表格

2.3将Excel数据转换为EndNote可识别的文本文档

经过以上数据处理,得到了指定顺序的数据项及对应的内容,如第一列对应的是报告编号,第二列对应的是项目中文名称。之后的工作是将Excel表格中内容按顺序写入文本文档,包括三方面的工作:①确定EndNote导入格式的字段标识符(利用CNKI导出的EndNote格式标识系统),并按照顺序将字段标识符在另一个Excel表格“Worksheets(″endnote转换″)”中写成第一行;②按字段标识要求将Excel表格中相应内容写入字段标识下;(3)生成EndNote软件识别的文本文档。这一过程的实现具体见下面的程序。

……

Worksheets(″sheet1″).Activate

i=Cells(Rows.Count,1).End(xlUp).Row

arry=Range(Cells(2,1),Cells(i,16))

Worksheets(″endnote转换″).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转换″).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″)”中的各数据项写入数组“arry()”,之后按照Excel表格“Worksheets(″endnote转换″)”中字段标识符将数组中相应数据写入字段标识符下。最后将生成文本文档“Endnote格式.txt”,该文本类似CNKI导出的EndNote数据格式。图5为生成的EndNote软件可识别的文本文档。

图5 查新报告元数据项文本文件

2.4利用EndNote软件建立查新报告数据库

EndNote软件作为参考文献目录的管理工具是由美国科学信息所(ISI)所开发研制的SCI(Thomson Scientific公司)的官方软件[7]。目前绝大多数科技查新站为了提高文献题录著录的效率都在使用该款软件辅助查新。我们选用End-Note软件来管理查新报告主要考虑到以下几点:①EndNote能管理的数据没有上限,至少能管理数十万条数据;②科技查新机构的广泛使用,避免了购买成本和学习时的时间成本;③可以根据个人需要重新排列并显示数据信息,可以对贮存的信息数据库进行检索;④EndNote的系统资源占用小;(5)EndNote有很强的功能扩展,如果默认安装的EndNote不能满足要求,能很方便地扩展功能,同时其导出数据格式可以被目前大多数信息分析软件识别,有利于查新报告数据库的深度信息挖掘。

将数据导入EndNote软件后可以根据实际情况来设置各种功能,如利用智能分组功能实现查新报告个人完成情况实时统计、委托单位实时统计等,因为操作完全等同于利用EndNote软件管理个人文献,在此不做赘述。设置完成后数据库界面如图6所示。

2.5利用Excel VBA深度挖掘查新报告元数据项

得到查新报告Excel元数据项数据表后可以利用Excel VBA技术来实现很多功能,如校内查新数量统计、国内外查新数量统计、查新目的统计、每个查新员查新数量统计等,下面我们利用Excel VBA技术统计查新员与查新员查新所用检索词的共现关系[8],然后以可视化的方式呈现出来。数据源为本校已经做好的12份查新报告Excel元数据项数据表,表1为利用VBA技术自编软件所生成的共现多值矩阵。

图6 查新报告数据库界面图

表1 查新员检索词共现矩阵(部分)

将该矩阵导入Ucinet软件并利用NetDraw可视化软件绘制查新员检索词共现网络,见图7。

图7 查新员检索词共现网络图谱

图中圆点与方块间的连线表示查新员与其所用的检索词之间关联。通过共现多值矩阵、共现网络图谱可以清楚知道查新员所做查新的具体领域,最重要的是可以对新来查新项目分配时做到有的放矢。

3 结 论

本文根据查新报告中不同的元数据项的格式特点,利用Word VBA技术实现了查新报告元数据项抽取,之后利用Excel VBA技术将Word中的元数据项变为Excel数据,建立了基于EndNote软件的查新报告数据库,实现了Excel元数据项的深度挖掘功能,也为今后全国查新报告的入库、汇总和更深层次挖掘利用提供了数据源基础。同时该方案也可以应用到所有固定格式Word文档的元数据项建库。http:∥kjcx.nuist.edu.cn/research/2013-07-10-07-04-37,2014-03-21.

[2]黄如花,王小琼.我国科技查新机构的分布及特点[J].情报理论与实践,2005,(3):255-259.

[3]科技查新规范[S].国科发计字[2000]544号.

[4]邹艺.科技查新服务管理保障体系建设[J].图书馆,2008,(1):92-93.

[5]储节旺,郭春侠.共词分析法的基本原理及EXCEL实现[J].情报科学,2011,(6):931-934.

[6]董英斌,韩冰.LabVIEW中利用ActiveX技术访问Excel的接口研究[J].微计算机信息,2006,(4):165-166,36.

[7]赵飞.常用文献管理软件功能比较[J].现代图书情报技术,2012,(3):67-72.

[8]王磊.国内图书馆学科服务现状可视化分析[J].图书情报工作,2013,(2):136-142.

(本文责任编辑:马 卓)

参考文献

[1]教育部科技查新工作站查新报告撰写规范(发文版)[S/OL].

·业务研究·

·业务研究·

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-),男,馆员,博士研究生,研究方向:信息计量、学科服务。

基金项目:本文系安徽省高等学校图书情报工作委员会基金项目“MOOC环境下高校图书馆角色定位与服务创新研究”(项目编号:TGW14A02)与合肥工业大学校级教学研究项目(项目编号:XJ201333)的研究成果之一。

收稿日期:2014-04-11

〔中图分类号〕G250.7

〔文献标识码〕B

〔文章编号〕1008-0821(2015)08-0131-06

DOI:10.3969/j.issn.1008-0821.2015.08.025