# 用VBA实现文献计量分析研究中的数据预处理技术

(中国科学技术信息研究所    北京 100038)
（发表于《现代图书情报技术》2007年第3期）
【摘要】 首先对网页数据的特点进行简单分析，针对网页数据的特点设计统计分析的预处理流程，对每一步处理过程都用几种不同的算法进行实验，以期得到最优的解决方案。实验证明，通过减少IO操作、提高处理粒度、适当使用词表等方法可以提高程序运行速度与准确率。
【关键词】　 计量分析　实现技术　预处理技术　算法　excel VBA
【分类号】　TP311，G35
Implementation of preprocess technology in bibliometric and analytic research via VBA
Hua Bolin
(Institute of Scientific and Technical Information of China, Beijing 100038, china)
Abstract  Process of statistic is designed in accordance with character of web data after analyzing them. Each stage is experimented with some different algorithms in order to achieve optimal solution. According to experiment, efficiency and effectiveness can be improved by decreasing IO operation, increasing process granularity and using lexicon.
Keywordsbibliometric, implement technology, preprocess technology, arithmetic, excel, VBA
1　引言

2 数据来源格式分析

1　重庆维普期刊全文数据库检索结果全记录显示示例图
3 行列转换与过滤

 1: For i = 1 To iRowCount 2: sTemp = Trim(Worksheets(sSrce).Cells(i, 1)) '如果整除就换行，不整除就放在当前行相应的列里 3: If i Mod iFieldCount = 0 Then 4: Worksheets(sDest).Cells(k, iFieldCount) = sTemp 5: k = k + 1 6: Else 7: Worksheets(sDest).Cells(k, i Mod iFieldCount) = sTemp 8: End If 9: Next

 1: For i = 1 To iRowCount step iFieldCount 2: k = k + 1 3: For j=1 to iFieldCount 4: sTemp = Trim(Worksheets(sSrce).Cells(i-j, 1)) 5: Worksheets(sDest).Cells(k, j) = sTemp 6: Next 7: Next

 1: For i = 1 To iRecCount 2: sTemp = Trim(Worksheets(sSrce).Cells(i, 1)) 3: Worksheets(sDest).Cells(i / iFieldCount + 1, (i - 1) Mod iFieldCount + 1) = sTemp 4: Next

2　行列转换后的数据格式示例图
4 拆分

 1: For i = 1 To iRecCount 2: sTemp = Worksheets(sSrce).Cells(i, iCol) 3: For j = 1 To 20 4: iFind= InStr(1, sTemp, sFlag) 5: ‘如果含标记符就析取 6: If iFind> 0 Then 7: Worksheets(sDest).Cells(i, j) = Mid(sTemp, 1, iFind - 1) 8: sTemp = Mid(sTemp, iFind+ iFlagLen) 9: Else 10: Worksheets(sDest).Cells(i, j) = sTemp 11: Exit For 12: End If 13: Next 14: Next

 1: For i = 1 To iRecCount 2: sTemp = Worksheets(sSrce).Cells(i, iCol) 3: For j = 1 To len(sTemp) 4: If mid(sTemp, j, 1) =sFlag Then 5: Worksheets(sDest).Cells(i, j) =sSplit 6: sSplit=”” 7: Else 8: sSplit=sSplit & mid(sTemp, j, 1) 9: End If 10: Next 11: Next

5 提取

 类别 特征描述 举例 问题责任者 项目齐全、内容完整、格式规范 单位与城市名间加逗号，城市与邮编中间加空格的形式 武汉大学信息资源研究中心，武汉430072 正常 项目齐全、内容完整、格式不规范 单位与城市名中间缺少逗号，或者地名与邮编中间缺少空格 南京理工大学经济管理学院南京210094 编辑部或数据加工商 项目齐全、内容完整、格式规范、地名表述不规范 城市名后带有“市”标记城市名前加省名，直接用省名代替城市名 河北工业大学图书馆，天津市300130  江汉石油学院，湖北荆州434102 聊城大学图书馆，山东252059 编辑部或数据加工商 一人多单位情况 单位之间用双斜杠加以区分 河北大学管理学院，保定071002／／中科院研究生院，北京100039， 正常 项目不齐全、内容完整 缺少邮编 缺少城市和邮编 美国密苏里大学，美国 江苏理工大学图书馆 编辑部 项目不齐全、内容不完整 单位名称不完整，或城市名不完整，或邮编不是6位 数据加工商

 ‘邮编处理 1: If Asc(Right(sTemp, 1)) > 47 And Asc(Right(sTemp, 1)) < 58 Then 2: sPostcode = Right(sTemp, 6) 3: sTemp = Mid(sTemp, 1, Len(sTemp) - 6) 4: End If ‘串中含标记符，如分号、逗号等 5: If InStr(1, sTemp, sFlag) > 1 Then 6: sAffiliation = Left(sTemp, InStr(1, sTemp, sFlag) - 1) 7: sCity = Mid(sTemp, Len(sAffiliation) + 2) 8: Else ‘单位与地名之间无标记符，可以利用定义好的数组进行处理，如系、学院、所等 9: For m = 1 To Ubound(sIdentify) 10: If InStr(1, sTemp, sIdentify(m)) > 0 Then 11: sAffiliation = Left(sTemp, InStr(1, sTemp, sIdentify(m)) + Len(sIdentify(m)) - 1) 12: sCity = Mid(sTemp, Len(sAffiliation) + 1) 13: Exit For 14: End If 15: Next 16: End If

 1: For i = 1 To iRecCount 2: sTemp = Worksheets(sSrce).Cells(i, iCol) 3: Worksheets(sDest).Cells(i, 1) = Mid(sTemp, 1, InStr(1, sTemp, "-") - 1) 4: Worksheets(sDest).Cells(i, 2) = Mid(sTemp, InStr(1, sTemp, "-") + 1, 4) 5: Next
6 总结

数据的预处理流程比较简单，技术实现也比较简单，无非就是行列转换、数据过滤、拆分与提取等几个步骤，所有的步骤只用了for循环、条件判断与常用字符串处理函数。实验中，对关键的处理都采取了几种不同的算法，并从执行速度、程序复杂度等方面对算法进行了比较，总结如下：涉及反复操作一定要读到内存，减少IO读写；循环内的处理过程越简单越好，能放在循环外的尽量往外放；数据处理的粒度尽可能地大，在不影响准确度的情况下，数据处理粒度越大，效率就会越高。
地名与机构等信息的内容提取有相当的难度，准确率也难以保证，但通过复杂情况的归类以及支撑资源的不断更新，然后回溯分析，可以渐渐地提高准确率，尤其是一级单位与二级单位的划分开始涉及自然语言处理的浅层次问题。在实验中用重庆维普的数据时发现作者统计结果可信度也非常低，简单记录和详细记录的作者信息差别非常大，似乎从不同的数据表里取出来一样，这个问题不是算法本身的问题，没有好的算法能解决数据遗漏的问题。在涉及自然语言处理的问题上，资源的支撑显得相当重要，回溯分析也会提高准确度。

1 陈涛武警学院学术论文统计系统开发及功能实现武警学院学报2005(3)：94-96
2 张守胜．基于Web的科技论文统计信息系统的应用研究．安徽理工大学学报(自然科学版) 2004(01)59-63
3 袁通路．基于ASP的学术论文信息检索统计系统．微机发展，2004(02)57-60

http://blog.sciencenet.cn/blog-91591-43850.html

## 相关博文

GMT+8, 2021-1-24 09:02