论文部分内容阅读
伴随着互联网的普及和软件开源运动的迅速推进,越来越多的开源软件获得了令人瞩目的成功,对开源软件数据的挖掘与分析在软件工程领域受到了广泛重视,并形成了软件资源库挖掘研究方向。然而,互联网开源社区的数据挖掘研究相对起步较晚,当前的开源社区数据挖掘工作由于缺乏统一的数据挖掘平台,不得不重复地实现基础设施,并面临着实验数据储备有限,工作难以对比交流等等困难。为了应对这个挑战,本文开展了如下工作:(1)本文设计了开源社区数据挖掘平台INFLUX。本文将INFLUX平台划分为数据存储、信息抽取、数据挖掘、概念应用四个层次,在此基础上对平台的Web数据爬取、软件实体信息抽取和数据索引三大核心基础设施模块进行了实现。目前INFLUX平台已从五个开源社区获取了近700,000个开源软件的Web数据,对其中510,000个软件提供了跨社区检索,并对多项开源社区数据的分析和挖掘工作提供了支持。(2)本文设计了INFLUX平台软件实体信息抽取模块的核心算法。如果按照传统的人工观察法来实现软件实体信息抽取,必须为每个开源社区设计不同的抽取程序。本文设计了一种开源社区软件实体信息自动抽取算法。该算法利用不同开源社区网站间存在的软件实体属性重复来自动导出新网站的网页模板,并结合标签路径法与属性名验证实现了软件实体信息的准确、自动抽取。本文使用INFLUX平台获取的数据进行了抽取实验,结果表明新算法能够实现高精度的跨社区软件实体信息自动抽取。(3)本文设计了INFLUX平台软件标签层次挖掘服务核心算法。INFLUX平台的软件标签层次挖掘服务旨在通过分析开源社区软件标签数据来导出软件标签分类层次,提供更好的软件标签组织管理方式。本文设计并实现了该服务的核心算法AHCTC。相对于同类标签分类层次生成算法,AHCTC首度采用聚合式层次化聚类框架来生成分类层次,规避了计算标签广义度这一瓶颈。本文使用INFLUX平台获取的数据集将AHCTC与两个同类算法进行了对比实验,通过定性与定量分析论证了AHCTC算法的优势。