CN106875014A - 基于半监督学习的软件工程知识库的自动化构建实现方法 - Google Patents

基于半监督学习的软件工程知识库的自动化构建实现方法 Download PDF

Info

Publication number
CN106875014A
CN106875014A CN201710120880.XA CN201710120880A CN106875014A CN 106875014 A CN106875014 A CN 106875014A CN 201710120880 A CN201710120880 A CN 201710120880A CN 106875014 A CN106875014 A CN 106875014A
Authority
CN
China
Prior art keywords
concept
relation
field
software engineering
wikipedia
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710120880.XA
Other languages
English (en)
Other versions
CN106875014B (zh
Inventor
董翔
沈备军
陈凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201710120880.XA priority Critical patent/CN106875014B/zh
Publication of CN106875014A publication Critical patent/CN106875014A/zh
Application granted granted Critical
Publication of CN106875014B publication Critical patent/CN106875014B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种基于半监督学习的软件工程知识库的自动化构建实现方法,解决软件工程领域知识库现阶段较为匮乏、概念数目难以达到大规模程度、概念间的关系较为稀疏、同时需要投入大量人工精力的问题,本发明通过:一、根据标签传播,采用维基百科和StackOverflow数据源扩充软件工程领域的概念集合;二、构建对软件工程领域概念进行上下位关系抽取的机器学习特征;三、分别采用模版匹配和规则匹配的方法自动化标注关系抽取的正例和反例训练数据;四、根据迭代的半监督的学习方法进行概念间关系的抽取工作,并结合评估规则优化每次迭代的抽取结果;五、采用RDF语言对知识库进行标准化构建得以实现。

Description

基于半监督学习的软件工程知识库的自动化构建实现方法
技术领域
本发明涉及的是一种软件工程领域的技术,具体是一种基于半监督学习的软件工程知识库的自动化构建实现方法。
背景技术
当今社会是以语义万维网(Semantic Web)作为未来发展主要方向的时代,构造能让计算机理解和处理的Web信息成为现阶段非常重要的工作。而知识库(Knowledge Base)作为具有概念、实体、关系所组成的知识集合,使其在信息检索,知识问答等蓬勃发展的环境下,具有越来越重要的应用价值和工业价值。而软件工程领域知识库作为知识库中的一个重要分支,同样凸显着难以替代的作用。尤其是在:缺陷预测、语义关联性计算、文本正确性分析、软件文档相关性监测、软件质量度量等领域的研究,大都基于软件工程领域知识库展开。因此,软件工程领域知识库的质量,很大程度上决定并影响研究的质量与效果。因此,构建高质量、大规模的软件工程领域知识库具有非常重要的意义。
由于现阶段大规模的软件工程知识库尚无完备的构建方法和构建成果,获取软件工程知识库主要通过以下两种方法:
通过一般领域的开源知识库获得软件工程领域知识。
该方法主要通过开源的且为一般领域的知识库,例如:WordNet、YAGO、DBpedia、WikiTaxonomy等知识库,或者通过著名知识搜索计算平台如Google知识图谱、WolframAlpha、Data.gov等平台获取。首先,获得其中一个一般领域的知识库或知识平台,然后通过人工验证、类别验证(根据知识库中标注的类别,选取相关类别抽取知识集)的方式,将其中关于软件工程领域的知识分离出来构造集合,并进行结构化的构建,以此来作为软件领域的知识库。但由于一般领域知识库中关于软件工程领域知识不够全面,同时人工验证和类别验证的准确度不高,得到的软件工程领域知识库存在关系稀疏、构建质量低的问题,同时会投入极大的人工成本。
通过现阶段已有的软件工程领域知识库获得。
该方法是直接使用现阶段已构建的软件工程领域知识库。其相关可供使用的知识库有:Kavi Mahesh等人发布的LOaD-IT,这个知识库致力于帮助软件工程师更快阅读文档而构建,其中的概念的语义关系非常稀疏,难以运用到软件工程的其它领域。Mr.IzzeddinA.O.Abuhassan等人构造的关于软件工程编程语言方面的知识库,该知识库没有涉及到全部的软件工程领域范围。Lexical Views,该知识库通过运用自然语言处理技术从软件工程领域抽取出部分的概念,其概念大多为软件工程中术语,并将其组织成类似于WordNet的树状结构,构建成知识库。上海交通大学的Software.Zhishi.Schema,该知识库主要抽取StackOverflow中的标签作为知识库的概念集合,并抽取标签之间的关系构建知识库,其构建结果局限于StackOverflow的标签范围之内。上述研究成果都具有各自的局限性,其主要特点是缺乏包含较为全面的、大规模的软件工程领域概念,并且其中语义关系的丰富性(如上下位关系的数目与深度),都有待进一步的提高。
发明内容
本发明针对现有技术在关系抽取上难以达到较高的准确度和较大的规模、概念数目难以达到大规模程度、概念间的关系较为稀疏、需要通过人工标注的方法完成样本构建需要投入大量人工精力的问题,提出一种基于半监督学习的软件工程知识库的自动化构建实现方法,通过半监督的自动化构建方式,减小构建软件工程知识库的人工精力和时间成本;使得构建的软件工程领域知识库具有更大的规模和更好的质量,解决现阶段软件领域知识库的匮乏和不足。
本发明是通过以下技术方案实现的:
本发明包括以下步骤:
步骤一、以StackOverflow上提供的软件工程领域标签作为种子词汇,并获得维基百科提供的概念数据集,通过种子词汇标签迭代传播,扩充维基百科上全部软件工程领域概念并得到包含维基结构的软件工程领域知识集合。
步骤二、结合语义及概念在维基百科中的结构特征,对软件工程领域概念构建上下位关系的机器学习特征,即将步骤一得到的软件工程领域知识集合中每一个概念与当前概念在维基百科页面中所有锚链接的软件工程领域概念进行上下位关系的判别。
所述的上下位关系的机器学习特征包括:词干共现度、非对称的公共字串相似度、基于维基结构的锚链接共现度、基于维基结构的结构体信息相似度和基于KL散度的主题分布相似度,其中:
所述的词干共现度是指:对于概念的词义进行相关性计算,通过采用StandfordParser工具提取概念的词干,即中心词,并计算词干的共现度其中:HA,HB为概念A、B的词干,LCA(HA,HB)计算词干HA和HB的最小公共祖先,depth(HA)计算词干HA在WordNet中的深度。
所述的非对称的公共字串相似度是指:由于上下位是一种非对称的关系(当概念A是概念B的上位词,则概念B一定不是概念A的上位词),因此该特征可以有效避免概念间存在关系密切但不为上下位关系的干扰,即计算概念间公共字串的相似值其中:LCS(A,B)计算概念A,B的最长公共子串长度,Len(A)计算概念A的名称长度。
所述的基于维基结构的锚链接共现度是指:由于每一个概念均与维基百科的某一页面相对应,因此,维基百科页面中的结构及结构中的文本信息可以良好地反映概念指代的信息与含义。通过采用NGD(Normalized Google Distance)分别对概念的维基百科页面的各个结构进行共现相似度的分析,相似度其中:N为常量,指代维基百科锚链接的总数目。IA和IB分别指代概念A、B的维基百科页面中某一特定结构(例如:引文、正文、属类)中锚链接的集合。由于维基百科页面中的结构如:引文(Abstract)、正文(Text)、属类(Category)中的锚链接集合均能良好反映概念的含义,因此分别基于上述三种结构进行NGD的计算,得到三个不同的特征值。另外,由于属类(Category)结构能明确表示上下位的关系,若概念A包含在概念B的属类(Category)的锚链接集合中或概念B包含在概念A的属类(Category)锚链接的集合中,则为计算的属类结构NGD值等于当前计算结果加附加系数V,根据NGD在本实施例中的取值范围,设定附加系数V=0.05。
所述的基于维基结构的结构体信息相似度是指:维基百科为每个概念提供了大纲(guideline)和信息框(infobox)两个维基结构,上述两个结构体都通过关键字来体现概念的主要信息,其中大纲(guideline)主要描述当前概念维基页面主要从哪几个方面进行描述,而信息框(infobox)主要描述当前概念所具有的特性和属性。而关联密切的软件工程领域概念往往具有较为相近的大纲(guideline)和信息框(infobox)结构,因此通过如下Jaccard对结构所描述信息的相似度进行计算,其中:KA和KB表示概念A、B分别在结构体(大纲或信息框)中的关键字集合。本实施例分别根据大纲和信息框两种结构,分别进行两次结构体信息相似度的计算。
所述的基于KL散度的主题分布相似度是指:对于存在上下位关系的软件工程领域概念,部分概念不具备完整的维基结构。因此,为了挖掘结构不完整的软件工程领域概念的上下位关系,本实施例通过KL散度进行概念之间关联度的计算。首先采用LDA(LatentDirichlet Allocation)对软件工程领域概念进行主题分布的建模。在判断任意两个概念之间的关系时,首先根据主题分布计算概念分布在不同主题内的概率分布。随后采用KL散度计算两个概念之间的主题分布相似性其中:PwA(n)和PwB(n)分别指代概念A、B分布在第n个主题内的概率。
步骤三、根据机器学习特征,分别采用模版匹配和规则匹配的方法对软件工程领域知识集合中的正例数据和反例数据进行标注,得到基于模板匹配和规则匹配的数据标注。
步骤四、采用半监督的学习方法从包含维基结构的软件工程领域知识集合中进行迭代的关系抽取工作,并建立迭代结果的评估规则以进行优化,具体为:首次迭代采用步骤三得到的基于模板匹配和规则匹配的数据标注进行学习,随后每次迭代均以上次迭代的学习结果为输入,进行新一轮迭代的学习;对于每一次迭代结果,通过优化规则进行迭代结果的判断与过滤,从而通过半监督学习的方式逐渐提高关系抽取结果,即构建的知识库的准确度。
步骤五、对步骤四构建得到的知识库进行RDF标准化,完成最终大规模软件工程领域知识库的构建。
本发明涉及一种实现上述方法的系统,包括:用于解析维基百科的概念数据和StackOverflow的标签数据的数据解析模块、领域数据扩充模块、数据标注模块、关系扩充模块以及RDF格式化模块,其中:数据解析模块与领域数据扩充模块相连并传输解析后的维基百科概念集合以及StackOverflow标签数据集合的信息,领域数据扩充模块基于StackOverflow标签在维基百科概念集合中扩充软件工程领域知识集合,与数据标注模块和关系扩充模块相连并传输软件工程领域知识集合的信息,数据标注模块标注机器学习需要用到的标注数据包括正例、反例数据,该模块与关系扩充模块相连并传输标注数据信息,关系扩充模块采用机器学习的方法构建上下位关系的机器学习特征,并采用软件工程知识集合提取软件工程领域上下位关系的集合后输出至RDF格式化模块,RDF格式化模块将软件工程领域上下位关系的集合进行RDF化,完成软件工程领域知识库的最终构建。
技术效果
与现有技术相比,本发明对提高软件工程领域和一般领域知识库在关于规模和质量的研究上有促进作用。本发明提出的一种基于半监督机器学习的大规模软件工程知识库的自动化构建方法,不仅提高了软件工程知识库的知识规模和质量,同时减少了人工成本的消耗,构建的大规模软件工程知识库弥补了软件工程领域大规模和高质量并存的知识库的匮乏。
本发明通过采用StackOverflow中关于软件工程领域的标签作为种子词汇,以维基百科上的概念词汇作为数据源,通过标签传播的方法,以种子词汇作为标签传播的发起者,并建立传播规则,将标签传播至维基百科中符合规则的相关词汇,完成领域词汇的扩充。该方法扩充的软件工程领域概念既保持了StackOverflow中的准确度,又保持了维基百科的大规模的特性。本发明基于从维基百科扩充的软件工程领域概念,结合词汇语义和当前词汇在维基百科中的结构性质建立机器学习特征,用于扩充软件工程领域概念之间的上下位关系。通过建立机器学习特征提高软件工程领域概念关系扩充的准确性。
本发明中采用自动化的方式进行正例、反例数据的自动化标注。对于正例数据,通过采用模版匹配的方式基于维基百科的文本内容提取满足要求的软件工程领域概念上下位关系;对于反例数据,基于已经建立的概念的上下位关系特征,构建多个判定规则。在对任意两个领域概念进行关系判定时,若违反其中任一规则即标注当前规则为反例,同时规定,对于任意软件工程领域的概念关系,满足所有规则是成为正例标注数据的必要不充分条件。
本发明通过建立半监督学习结果的评估规则,对关系抽取每次迭代的结果进行评估,通过移除不满足评估规则的关系从而提高扩充的准确性。迭代的软件工程领域概念的关系扩充在关系评估结果收敛时停止(迭代次数达到上限或不再出现更多的不满足规则的关系)。
本发明对构建的软件工程领域的知识库进行RDF化,RDF是W3C提出的统一描述万维网中不同种类的信息资源以及资源间的语义关系的规范。通过RDF化使得本方法构建的知识库在软件工程领域具备标准化的特征,同时具有广泛的适用性。
附图说明
图1为本发明方法流程图。
具体实施方式
如图1所示,本实施例包括以下步骤:
步骤一、以StackOverflow上提供的软件工程领域标签作为种子词汇,并获得维基百科提供的概念数据集,通过种子词汇标签迭代传播,扩充维基百科上全部软件工程领域概念并得到包含维基结构的软件工程领域知识集合。
所述的概念数据集是指:基于原始的StackOverflow标签和维基百科概念均以XML数据源的形式存在,本实施例以JAVA为编程语言,通过采用SAX工具分别解析XML文件得到软件工程领域种子词汇和维基百科概念数据集。
所述的标签迭代传播是指:从构建的软件工程领域种子词汇出发,分多次迭代进行传播,每次迭代仅传播至与当前概念相邻步数为1(当前概念的页面包含目标概念的锚链接)并且满足任一传播关系的概念,当迭代收敛(当前迭代没有新的概念被标记)时标签传播结束,得到扩充完成的软件领域知识集合。
所述的传播关系包括:同义关系、上下位关系、关联关系,满足任一关系即可获得被传播的标签。
所述的同义关系,其判定方法具体为:当待定概念(未获得标签的概念)在当前概念(获得标签的概念)中的Redirect结构中出现,或当前概念在待定概念的Redirect结构中出现,则判定为同义概念。上下位关系判定方法:当待定概念在当前概念的Category结构中出现,或当前概念在待定概念的Category中出现,则判定为上下位概念。
所述的关联关系,其判定具体通过归一化Google距离NGD(Normalized GoogleDistance)进行判断:其中:N为常量这里定义为维基百科总的锚链接数(概念名称指向概念主页的链接);f(A)、f(B)分别指代概念A、B页面中的锚链接数目,f(A,B)指代概念A、B在维基百科页面中共同出现的锚链接的数目,当关联关系的NGD值达到限定标准(本实施例设定当NGD值大于0.157),则将其关系判定为关联关系。
步骤二、将步骤一得到的软件工程领域知识集合中每一个概念与当前概念在维基百科页面中所有锚链接的软件工程领域概念进行上下位关系的判别。
所述的机器学习特征包括:词干共现度、非对称的公共字串相似度、基于维基结构的锚链接共现度、基于维基结构的结构体信息相似度和基于KL散度的主题分布相似度。
所述的词干共现度是指:对于概念的词义进行相关性计算,通过采用StandfordParser工具提取概念的词干(中心词),并计算词干的共现度其中:HA,HB为概念A、B的词干,LCA(HA,HB)计算词干HA和HB的最小公共祖先,depth(HA)计算词干HA在WordNet中的深度。
所述的非对称的公共字串相似度是指:由于上下位是一种非对称的关系(当概念A是概念B的上位词,则概念B一定不是概念A的上位词),因此该特征可以有效避免概念间存在关系密切但不为上下位关系的干扰,即计算概念间公共字串的相似值其中:LCS(A,B)计算概念A,B的最长公共子串长度,Len(A)计算概念A的名称长度。
所述的基于维基结构的锚链接共现度是指:由于每一个概念均与维基百科的某一页面相对应,因此,维基百科页面中的结构及结构中的文本信息可以良好地反映概念指代的信息与含义。通过采用NGD(Normalized Google Distance)分别对概念的维基百科页面的各个结构进行共现相似度的分析,相似度其中:N为常量,指代维基百科锚链接的总数目。IA和IB分别指代概念A、B的维基百科页面中某一特定结构(例如:引文、正文、属类)中锚链接的集合。由于维基百科页面中的结构如:引文(Abstract)、正文(Text)、属类(Category)中的锚链接集合均能良好反映概念的含义,因此分别基于上述三种结构进行NGD的计算,得到三个不同的特征值。另外,由于属类(Category)结构能明确表示上下位的关系,若概念A包含在概念B的属类(Category)的锚链接集合中或概念B包含在概念A的属类(Category)锚链接的集合中,则为计算的属类结构NGD值等于当前计算结果加附加系数V,根据NGD在本实施例中的取值范围,设定附加系数V=0.05。
所述的基于维基结构的结构体信息相似度是指:维基百科为每个概念提供了大纲(guideline)和信息框(infobox)两个维基结构,上述两个结构体都通过关键字来体现概念的主要信息,其中大纲(guideline)主要描述当前概念维基页面主要从哪几个方面进行描述,而信息框(infobox)主要描述当前概念所具有的特性和属性。而关联密切的软件工程领域概念往往具有较为相近的大纲(guideline)和信息框(infobox)结构,因此通过如下Jaccard对结构所描述信息的相似度进行计算,其中:KA和KB表示概念A、B分别在结构体(大纲或信息框)中的关键字集合。本实施例分别根据大纲和信息框两种结构,分别进行两次结构体信息相似度的计算。
所述的基于KL散度的主题分布相似度是指:对于存在上下位关系的软件工程领域概念,部分概念不具备完整的维基结构。因此,为了挖掘结构不完整的软件工程领域概念的上下位关系,本实施例通过KL散度进行概念之间关联度的计算。首先采用LDA(LatentDirichlet Allocation)对软件工程领域概念进行主题分布的建模。在判断任意两个概念之间的关系时,首先根据主题分布计算概念分布在不同主题内的概率分布。随后采用KL散度计算两个概念之间的主题分布相似性其中:PwA(n)和PwB(n)分别指代概念A、B分布在第n个主题内的概率。
步骤三、根据机器学习特征,分别采用模版匹配和规则匹配的方法对软件工程领域知识集合中的正例数据和反例数据进行标注,得到基于模板匹配和规则匹配的数据标注。
所述的标注数据是指:给定概念间的关系,标注当前关系是否为上下位关系。
所述的正例数据是指:给定的概念间关系,标注当前关系是上下位关系。
所述的反例数据是指:给定的概念间关系,标注当前关系为非上下位关系。
对于正例数据的标注,本实施例采用以下模版,以维基百科文本为数据源,抽取部分上下位关系标注为正例:
NP1{,}“such as”NPList2;
NP1{,}“and other”NP2;
NP1{,}“including”NPList2;
NP1“is a”NP2;
NP1“is the”NP2“of”NP3。
若匹配任一上述模版,可确定概念之间存在上下位关系,因此具有较高的准确度,满足正例数据标注的要求。抽取正例的上下位关系后进行特征值的计算(参见步骤二),以投入到步骤四的工作中。
对于反例数据的标注,随机抽取部分概念组成概念对(A,B),判断概念对(A,B)是否是上下位关系(概念A是否为B的上位词),首先为概念对(A,B)计算步骤二所述的特征值。
其次,本实施例构造如下规则,判定概念对(X,Y)标注为反例数据当且仅当满足下述任一规则:
WUP(A,B)<M;
Len(A)>Len(B);
Jaccard info=0;
Jaccard gdl=0;
|KL(A,B)-KL(B,A)|<N。
以上规则中,WUP(A,B)计算概念A,B的词干相似度,Len(A)计算概念A的名称长度,Jaccardinfo计算概念A,B之间信息框(infobox)的结构相似度,Jaccardgdl计算概念A,B之间大纲(guideline)的结构相似度。KL(A,B)和KL(A,B)分别计算KL散度。M,N为常量,根据实施结果,设定M=0.4,N=0.03。
步骤四、采用半监督的学习方法从包含维基结构的软件工程领域知识集合中进行迭代的关系抽取工作,并建立迭代结果的评估规则以进行优化,具体为:首次迭代采用步骤三得到的基于模板匹配和规则匹配的数据标注进行学习,随后每次迭代均以上次迭代的学习结果为输入,进行新一轮迭代的学习;对于每一次迭代结果,通过优化规则进行迭代结果的判断与过滤,从而通过半监督学习的方式逐渐提高关系抽取结果,即构建的知识库的准确度。
本实施例中的迭代,设定5次为迭代上限,半监督学习停止当且仅当迭代结果收敛或迭代次数达到迭代上限。
所述的优化规则包括:环状冲突、关系传递冗余和自闭环冲突,满足冲突条件的关系将从迭代结果中删除。
所述的环状冲突具体是指:上下位关系作为非对称关系,不能出现概念之间的关系环路。例如,对于概念“QuickSort”和概念“Sorting Algorithm”,如果同时出现“QuickSort”是“Sorting Algorithm”上位词和“Sorting Algorithm”是“QuickSort”上位词的结果,则将上述两个关系都移除。
所述的关系传递冗余具体是指:结果中会出现下述情况:概念间存在关联关系,但存在跨粒度较大的情况(上位词是较抽象的概念粒度大,下位词是较具体的概念,粒度小)。例如,结果中出现概念“Machine Learning”是概念“Deep Learning”的上位词,概念“DeepLearning”是概念“word2vec”的上位词,同时,出现概念“Machine Learning”是概念“word2vec”的上位词。这里“Machine Learning”是“word2vec”上位词这一关系可通过前两条关系推断出。然而由于概念“Machine Learning”和概念“word2vec”之间跨较大粒度,因此其语义和维基结构特征相似度较小。为避免过拟合,理应将该结果移除。
所述的自闭环冲突具体是指:根据概念不能成为自己的上位词或下位词,进行符合本规则关系的移除。例如,迭代结果中出现概念“Heap”是“Heap”的上位词,则将当前关系移除。
步骤五、对步骤四构建得到的知识库进行RDF标准化,完成最终大规模软件工程领域知识库的构建。
所述的RDF标准化是指:将概念和概念间存在的关系分别采用RDF语言进行描述,例如:概念“.NET Compact Framework controls”和概念“Compact Framework”的上下位关系用RDF语言描述为:
“<rdf:Description rdf:about="http://SETaxonomy/subsumption/4"><page:Hypernym>.NET Compact Framework controls</page:Hypernym><page:Hyponym>CompactFramework</page:Hyponym></rdf:Description>”。其中:“SETaxonomy”为本实施例最终构建的软件工程领域知识库的名称,“4”为当前关系在本知识库中的编号。
通过实施上述步骤后,最终本实施例构建的软件工程领域知识库包含193,593个软件工程领域概念,包含357,662个上下位关系,平均深度7.02,相比现有的软件领域知识库具有更大规模和更高的质量,弥补了软件工程领域知识库的缺乏。同时,通过采用自动化的半监督学习方法,减少了构建软件领域知识库的人工成本,提高了构建效率。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

Claims (10)

1.一种基于半监督学习的软件工程知识库的自动化构建实现方法,其特征在于,包括以下步骤:
步骤一、以StackOverflow上提供的软件工程领域标签作为种子词汇,并获得维基百科提供的概念数据集,通过种子词汇标签迭代传播,扩充维基百科上全部软件工程领域概念并得到包含维基结构的软件工程领域知识集合;
步骤二、结合语义及概念在维基百科中的结构特征,对软件工程领域概念构建上下位关系的机器学习特征;
步骤三、根据机器学习特征,分别采用模版匹配和规则匹配的方法对软件工程领域知识集合中的正例数据和反例数据进行标注,得到基于模板匹配和规则匹配的数据标注;
步骤四、采用半监督的学习方法从包含维基结构的软件工程领域知识集合中进行迭代的关系抽取工作,并建立迭代结果的评估规则以进行优化;
步骤五、对步骤四构建得到的知识库进行RDF标准化,完成最终大规模软件工程领域知识库的构建。
2.根据权利要求1所述的软件工程知识库的自动化构建实现方法,其特征是,所述的上下位关系的机器学习特征包括:词干共现度、非对称的公共字串相似度、基于维基结构的锚链接共现度、基于维基结构的结构体信息相似度和基于KL散度的主题分布相似度,其中:
所述的词干共现度是指:对于概念的词义进行相关性计算,通过采用StandfordParser工具提取概念的词干,即中心词,并计算词干的共现度其中:HA,HB为概念A、B的词干,LCA(HA,HB)计算词干HA和HB的最小公共祖先,depth(HA)计算词干HA在WordNet中的深度;
所述的非对称的公共字串相似度是指:由于上下位是一种非对称的关系(当概念A是概念B的上位词,则概念B一定不是概念A的上位词),因此该特征可以有效避免概念间存在关系密切但不为上下位关系的干扰,即计算概念间公共字串的相似值其中:LCS(A,B)计算概念A,B的最长公共子串长度,Len(A)计算概念A的名称长度;
所述的基于维基结构的锚链接共现度是指:由于每一个概念均与维基百科的某一页面相对应,因此,维基百科页面中的结构及结构中的文本信息可以良好地反映概念指代的信息与含义;通过采用NGD(Normalized Google Distance)分别对概念的维基百科页面的各个结构进行共现相似度的分析,相似度其中:N为常量,指代维基百科锚链接的总数目;IA和IB分别指代概念A、B的维基百科页面中某一特定结构(例如:引文、正文、属类)中锚链接的集合;由于维基百科页面中的结构如:引文(Abstract)、正文(Text)、属类(Category)中的锚链接集合均能良好反映概念的含义,因此分别基于上述三种结构进行NGD的计算,得到三个不同的特征值;另外,由于属类(Category)结构能明确表示上下位的关系,若概念A包含在概念B的属类(Category)的锚链接集合中或概念B包含在概念A的属类(Category)锚链接的集合中,则为计算的属类结构NGD值等于当前计算结果加附加系数V,根据NGD在本实施例中的取值范围,设定附加系数V=0.05;
所述的基于维基结构的结构体信息相似度是指:维基百科为每个概念提供了大纲(guideline)和信息框(infobox)两个维基结构,上述两个结构体都通过关键字来体现概念的主要信息,其中大纲(guideline)主要描述当前概念维基页面主要从哪几个方面进行描述,而信息框(infobox)主要描述当前概念所具有的特性和属性;而关联密切的软件工程领域概念往往具有较为相近的大纲(guideline)和信息框(infobox)结构,因此通过如下Jaccard对结构所描述信息的相似度进行计算,其中:KA和KB表示概念A、B分别在结构体(大纲或信息框)中的关键字集合;本实施例分别根据大纲和信息框两种结构,分别进行两次结构体信息相似度的计算;
所述的基于KL散度的主题分布相似度是指:对于存在上下位关系的软件工程领域概念,部分概念不具备完整的维基结构;因此,为了挖掘结构不完整的软件工程领域概念的上下位关系,本实施例通过KL散度进行概念之间关联度的计算;首先采用LDA(LatentDirichlet Allocation)对软件工程领域概念进行主题分布的建模;在判断任意两个概念之间的关系时,首先根据主题分布计算概念分布在不同主题内的概率分布;随后采用KL散度计算两个概念之间的主题分布相似性其中:PwA(n)和PwB(n)分别指代概念A、B分布在第n个主题内的概率。
3.根据权利要求1所述的方法,其特征是,所述的标签迭代传播是指:从构建的软件工程领域种子词汇出发,分多次迭代进行传播,每次迭代仅传播至与当前概念相邻步数为1,即当前概念的页面包含目标概念的锚链接,并且满足任一传播关系的概念,当迭代收敛,即当前迭代没有新的概念被标记时标签传播结束,得到扩充完成的软件领域知识集合。
4.根据权利要求2所述的方法,其特征是,所述的传播关系包括:同义关系、上下位关系、关联关系,满足任一关系即可获得被传播的标签,其中:
所述的同义关系,其判定方法具体为:当待定概念在当前概念中的Redirect结构中出现,或当前概念在待定概念的Redirect结构中出现,则判定为同义概念。上下位关系判定方法:当待定概念在当前概念的Category结构中出现,或当前概念在待定概念的Category中出现,则判定为上下位概念;
所述的关联关系,其判定具体通过归一化Google距离NGD进行判断:其中:N为常量这里定义为维基百科总的锚链接数;f(A)、f(B)分别指代概念A、B页面中的锚链接数目,f(A,B)指代概念A、B在维基百科页面中共同出现的锚链接的数目,当关联关系的NGD值达到限定标准,则将其关系判定为关联关系。
5.根据权利要求1所述的方法,其特征是,所述的步骤二,即将步骤一得到的软件工程领域知识集合中每一个概念与当前概念在维基百科页面中所有锚链接的软件工程领域概念进行上下位关系的判别。
6.根据权利要求1所述的方法,其特征是,所述的步骤四,具体为:首次迭代采用步骤三得到的基于模板匹配和规则匹配的数据标注进行学习,随后每次迭代均以上次迭代的学习结果为输入,进行新一轮迭代的学习;对于每一次迭代结果,通过优化规则进行迭代结果的判断与过滤,从而通过半监督学习的方式逐渐提高关系抽取结果,即构建的知识库的准确度。
7.根据权利要求6所述的方法,其特征是,所述的优化规则包括:环状冲突、关系传递冗余和自闭环冲突,满足冲突条件的关系将从迭代结果中删除。
8.根据权利要求7所述的方法,其特征是,所述的环状冲突具体是指:上下位关系作为非对称关系,不能出现概念之间的关系环路;所述的自闭环冲突具体是指:根据概念不能成为自己的上位词或下位词,进行符合本规则关系的移除。
9.根据权利要求1所述的方法,其特征是,所述的RDF标准化是指:将概念和概念间存在的关系分别采用RDF语言进行描述。
10.一种实现权利要求1~9中任一所述方法的系统,其特征在于,包括:用于解析维基百科的概念数据和StackOverflow的标签数据的数据解析模块、领域数据扩充模块、数据标注模块、关系扩充模块以及RDF格式化模块,其中:数据解析模块与领域数据扩充模块相连并传输解析后的维基百科概念集合以及StackOverflow标签数据集合的信息,领域数据扩充模块基于StackOverflow标签在维基百科概念集合中扩充软件工程领域知识集合,与数据标注模块和关系扩充模块相连并传输软件工程领域知识集合的信息,数据标注模块标注机器学习需要用到的标注数据包括正例、反例数据,该模块与关系扩充模块相连并传输标注数据信息,关系扩充模块采用机器学习的方法构建上下位关系的机器学习特征,并采用软件工程知识集合提取软件工程领域上下位关系的集合后输出至RDF格式化模块,RDF格式化模块将软件工程领域上下位关系的集合进行RDF化,完成软件工程领域知识库的最终构建。
CN201710120880.XA 2017-03-02 2017-03-02 基于半监督学习的软件工程知识库的自动化构建实现方法 Active CN106875014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710120880.XA CN106875014B (zh) 2017-03-02 2017-03-02 基于半监督学习的软件工程知识库的自动化构建实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710120880.XA CN106875014B (zh) 2017-03-02 2017-03-02 基于半监督学习的软件工程知识库的自动化构建实现方法

Publications (2)

Publication Number Publication Date
CN106875014A true CN106875014A (zh) 2017-06-20
CN106875014B CN106875014B (zh) 2021-06-15

Family

ID=59169291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710120880.XA Active CN106875014B (zh) 2017-03-02 2017-03-02 基于半监督学习的软件工程知识库的自动化构建实现方法

Country Status (1)

Country Link
CN (1) CN106875014B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108280221A (zh) * 2018-02-08 2018-07-13 北京百度网讯科技有限公司 关注点的层次化构建方法、装置和计算机设备
CN108573308A (zh) * 2018-04-11 2018-09-25 湖南女子学院 基于大数据的软件工程知识库的自动化构建方法及系统
CN110392314A (zh) * 2018-04-18 2019-10-29 武汉斗鱼网络科技有限公司 直播间内容标签扩散算法、存储介质、电子设备及系统
CN110569061A (zh) * 2019-09-24 2019-12-13 河北环境工程学院 一种基于大数据的软件工程知识库的自动化构建系统
CN110647320A (zh) * 2019-08-14 2020-01-03 平安普惠企业管理有限公司 项目框架的构建方法、装置、计算机设备和存储介质
CN110795453A (zh) * 2019-10-22 2020-02-14 中国西安卫星测控中心 一种基于关系数据库自动构建rdf的方法
CN111428052A (zh) * 2020-03-30 2020-07-17 中国科学技术大学 一种从多源数据构建具有多重关系的教育概念图方法
CN112487267A (zh) * 2020-12-11 2021-03-12 北京明略软件系统有限公司 基于Word2vec和LPA的领域概念表达方法及系统
WO2021047188A1 (zh) * 2019-09-09 2021-03-18 深圳壹账通智能科技有限公司 知识图谱构建方法、装置、计算机设备及存储介质
CN113689697A (zh) * 2021-08-13 2021-11-23 南京理工大学 一种基于规则匹配和知识图谱的交通事件影响分析方法
US11222166B2 (en) 2019-11-19 2022-01-11 International Business Machines Corporation Iteratively expanding concepts

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458692A (zh) * 2007-12-14 2009-06-17 北京神州数码有限公司 一种战略物资行业知识库的平台及其构建方法
CN102542027A (zh) * 2011-12-22 2012-07-04 北京航空航天大学深圳研究院 一种基于关系模式学习本体的数据集成系统的构建方法
US20130066921A1 (en) * 2011-09-09 2013-03-14 Sri International Adaptive ontology
CN103336852A (zh) * 2013-07-24 2013-10-02 清华大学 跨语言本体构建方法及装置
CN103488724A (zh) * 2013-09-16 2014-01-01 复旦大学 一种面向图书的阅读领域知识图谱构建方法
CN104035975A (zh) * 2014-05-23 2014-09-10 华东师范大学 一种利用中文在线资源实现远程监督人物关系抽取的方法
CN105654144A (zh) * 2016-02-29 2016-06-08 东南大学 一种基于机器学习的社交网络本体构建方法
CN105808525A (zh) * 2016-03-29 2016-07-27 国家计算机网络与信息安全管理中心 一种基于相似概念对的领域概念上下位关系抽取方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458692A (zh) * 2007-12-14 2009-06-17 北京神州数码有限公司 一种战略物资行业知识库的平台及其构建方法
US20130066921A1 (en) * 2011-09-09 2013-03-14 Sri International Adaptive ontology
CN102542027A (zh) * 2011-12-22 2012-07-04 北京航空航天大学深圳研究院 一种基于关系模式学习本体的数据集成系统的构建方法
CN103336852A (zh) * 2013-07-24 2013-10-02 清华大学 跨语言本体构建方法及装置
CN103488724A (zh) * 2013-09-16 2014-01-01 复旦大学 一种面向图书的阅读领域知识图谱构建方法
CN104035975A (zh) * 2014-05-23 2014-09-10 华东师范大学 一种利用中文在线资源实现远程监督人物关系抽取的方法
CN105654144A (zh) * 2016-02-29 2016-06-08 东南大学 一种基于机器学习的社交网络本体构建方法
CN105808525A (zh) * 2016-03-29 2016-07-27 国家计算机网络与信息安全管理中心 一种基于相似概念对的领域概念上下位关系抽取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JIANGANG ZHU等: ""Building a Large-scale Software Programming Taxonomy from Stackoverfloe"", 《SEKE》 *
KAI CHEN等: ""Building a Domain Knowledge Base from Wikipedia: a Semi-supervised Approach"", 《SEKE》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108280221B (zh) * 2018-02-08 2022-04-15 北京百度网讯科技有限公司 关注点的层次化构建方法、装置和计算机设备
CN108280221A (zh) * 2018-02-08 2018-07-13 北京百度网讯科技有限公司 关注点的层次化构建方法、装置和计算机设备
CN108573308A (zh) * 2018-04-11 2018-09-25 湖南女子学院 基于大数据的软件工程知识库的自动化构建方法及系统
CN110392314B (zh) * 2018-04-18 2021-10-15 武汉斗鱼网络科技有限公司 直播间内容标签扩散方法、存储介质、电子设备及系统
CN110392314A (zh) * 2018-04-18 2019-10-29 武汉斗鱼网络科技有限公司 直播间内容标签扩散算法、存储介质、电子设备及系统
CN110647320A (zh) * 2019-08-14 2020-01-03 平安普惠企业管理有限公司 项目框架的构建方法、装置、计算机设备和存储介质
WO2021047188A1 (zh) * 2019-09-09 2021-03-18 深圳壹账通智能科技有限公司 知识图谱构建方法、装置、计算机设备及存储介质
CN110569061A (zh) * 2019-09-24 2019-12-13 河北环境工程学院 一种基于大数据的软件工程知识库的自动化构建系统
CN110795453A (zh) * 2019-10-22 2020-02-14 中国西安卫星测控中心 一种基于关系数据库自动构建rdf的方法
US11222166B2 (en) 2019-11-19 2022-01-11 International Business Machines Corporation Iteratively expanding concepts
CN111428052A (zh) * 2020-03-30 2020-07-17 中国科学技术大学 一种从多源数据构建具有多重关系的教育概念图方法
CN111428052B (zh) * 2020-03-30 2023-06-16 中国科学技术大学 一种从多源数据构建具有多重关系的教育概念图方法
CN112487267A (zh) * 2020-12-11 2021-03-12 北京明略软件系统有限公司 基于Word2vec和LPA的领域概念表达方法及系统
CN112487267B (zh) * 2020-12-11 2024-03-26 北京明略软件系统有限公司 基于Word2vec和LPA的领域概念表达方法及系统
CN113689697A (zh) * 2021-08-13 2021-11-23 南京理工大学 一种基于规则匹配和知识图谱的交通事件影响分析方法
CN113689697B (zh) * 2021-08-13 2022-06-28 南京理工大学 一种基于规则匹配和知识图谱的交通事件影响分析方法、系统、设备、可读存储介质

Also Published As

Publication number Publication date
CN106875014B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
CN106875014A (zh) 基于半监督学习的软件工程知识库的自动化构建实现方法
CN109271529B (zh) 西里尔蒙古文和传统蒙古文双文种知识图谱构建方法
CN113642330B (zh) 基于目录主题分类的轨道交通规范实体识别方法
CN103176963B (zh) 基于crf++汉语句义结构模型自动标注方法
CN108874878A (zh) 一种知识图谱的构建系统及方法
CN106250412A (zh) 基于多源实体融合的知识图谱构建方法
CN104035975B (zh) 一种利用中文在线资源实现远程监督人物关系抽取的方法
CN104199972A (zh) 一种基于深度学习的命名实体关系抽取与构建方法
CN107590219A (zh) 网页人物主题相关信息提取方法
CN112307153B (zh) 一种产业知识库自动构建方法、装置及存储介质
CN103324700A (zh) 一种基于Web信息的本体概念属性学习方法
CN111316296A (zh) 学习层级提取模型的结构
CN112966525B (zh) 一种基于预训练模型和卷积神经网络算法的法律领域事件抽取方法
CN111967267B (zh) 一种基于XLNet的新闻文本地域提取的方法及系统
CN105654144A (zh) 一种基于机器学习的社交网络本体构建方法
CN111709225B (zh) 一种事件因果关系判别方法、装置和计算机可读存储介质
CN115329088A (zh) 图神经网络事件检测模型的鲁棒性分析方法
CN115437952A (zh) 一种基于深度学习的语句级软件缺陷检测方法
CN111368092B (zh) 一种基于可信网页资源的知识图谱构建方法
CN116882402A (zh) 基于多任务的电力营销小样本命名实体识别方法
CN103699568A (zh) 一种从维基中抽取领域术语间上下位关系的方法
CN116304064A (zh) 一种基于抽取式的文本分类方法
CN115982385A (zh) 一种基于知识图谱的关系图神经网络专利质量评估方法
CN104331472B (zh) 分词训练数据的构造方法和装置
CN114528459A (zh) 一种基于语义的网页信息抽取方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant