论文部分内容阅读
随着大数据与人工智能时代的到来,知识库作为具有层级结构知识集合,已成为智能化应用的知识基础设施。在软件工程领域中,例如软件缺陷预测、语义关联度计算、软件文档相关性分析和开发人员推荐等工作中,知识库也正发挥着越来越重要的作用。然而,现阶段缺乏成熟的软件工程知识库,其主要的来源仍然是从通用知识库中提取、或者临时手工构建,无法达到大规模和丰富语义的标准,同时缺乏规范化。因此,构造大规模软件工程知识库是必要且紧迫的。在此背景下,本文基于Wikipedia和Stackoverflow数据源,使用机器学习的方法,自动挖掘软件工程概念以及概念间的语义关系,构建基于不同数据源的软件工程领域知识库;同时结合本体对齐的方法,对知识库进行对齐与融合,使得最终构建的软件工程领域知识库具有大规模、高精度的特性。本文的主要贡献和创新点包括:1)研究提出了从Wikipedia和Stackoverflow中联合抽取软件工程概念的方法。该方法从Stackoverflow中抽取软件工程领域的标签集合,挖掘问答文本进行领域概念发现,然后使用标签传播方法在Wikipedia中进行领域概念扩充。该方法使所构建的软件工程知识库保持了Wikipedia大规模的特性,同时具有较高的准确度。2)研究提出了根据Wikipedia和Stackoverflow结构特征和软件工程领域的语义特征,自动发现概念间关系的方法。该方法基于Wikipedia和Stackoverflow,根据不同数据源结构分别设计了软件工程领域上下位关系的结构特征,并结合词汇的语义相似度计算方法,使用机器学习方法完成概念的关系抽取。3)研究提出了迭代式的半监督学习方法。为解决训练数据缺失、数据准确度提升的问题,本文基于规则进行关系过滤,对数据集进行错误和冗余处理,通过迭代式的半监督学习,提高了抽取关系结果的准确度。作为研究成果,本文构建和发布了知识库SETaxonomy,一个具有大规模和规范化特性的软件工程领域知识库,该知识库包含了247,638个软件工程领域知识,以及429,445个上下位关系、26,443个同义词关系、36,037个关联关系。相比于通用知识库如DBpedia,Yago,BabelNet等所包含的软件工程领域知识,SETaxonomy具有更大的规模、更丰富的语义关系以及更高的领域概念准确度。