【技术实现步骤摘要】
一种基于知识图谱的API元素比较结果自动生成方法
本专利技术属于软件工程
,具体涉及一种基于知识图谱的API元素比较结果自动生成方法。
技术介绍
框架和库通常提供具有相似功能但是又细微差别的API元素,忽视相似API元素的差异可能会导致一些编程错误,例如JDK提供了两个具有相似功能的API类,java.lang.StringBuffer和java.lang.StringBuilder,前者可以在多线程情况下使用而后者不能。因此开发者经常关心于相似API元素的比较,比如截至2019年5月3日,编程问答网站StackOverflow有13,228个带有java标签的问题,其中38%的问题没有接受答案。实际上API参考文档包含了丰富的关于API元素不同方面的知识,如API的功能,API的特性,API的概念分类等,可以用来直接用来回答API比较的问题。但是自动地获取和利用这些API知识并且用来解决API元素比较问题是一个挑战。首先API知识散布在API参考文档地不同地方,即使是同一个API的知识也可能会跨越多个API的文档,并 ...
【技术保护点】
1.一种基于知识图谱的API元素比较结果自动生成方法,其特征在于,基于通用API的参考文档自动化地构造API知识图谱,通过API知识图谱中的结构化规范化表示的API知识来支持API元素比较,自动生成结果;具体步骤为:/n首先,从API参考文档中抽取API结构知识作为知识图谱的骨架,API结构知识包括API包、类、接口、方法这些API元素的定义声明和API元素之间的包含、实现的结构关系;/n然后,从API结构知识中以及API元素对应的描述性句子中,抽取出可以用来回答API比问题的8种不同类型的知识,这8种不同类型的API知识是:概念分类、成员关系、功能说明、表现说明、功能比较 ...
【技术特征摘要】
1.一种基于知识图谱的API元素比较结果自动生成方法,其特征在于,基于通用API的参考文档自动化地构造API知识图谱,通过API知识图谱中的结构化规范化表示的API知识来支持API元素比较,自动生成结果;具体步骤为:
首先,从API参考文档中抽取API结构知识作为知识图谱的骨架,API结构知识包括API包、类、接口、方法这些API元素的定义声明和API元素之间的包含、实现的结构关系;
然后,从API结构知识中以及API元素对应的描述性句子中,抽取出可以用来回答API比问题的8种不同类型的知识,这8种不同类型的API知识是:概念分类、成员关系、功能说明、表现说明、功能比较、特性说明、特性比较和约束;
然后,通过引入通用词典、通用知识图谱这些外部知识来实现概念和关系的扩展,将从不同来源抽取出来的表达方式有差异的API知识进行融合,以便在API比较的时候相似的API知识能够进行更好地对齐;
最后,基于API知识图谱,利用对齐的方式来为给定的一对API元素(两个API方法或者两个API类)生成一个表格形式的比较结果,整个比较结果展示两个API的共性和差异。
2.根据权利要求1所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,具体操作分为两个部分:离线的API知识图谱的构建,在线的API比较服务;其中:
离线API知识图谱的构建,是根据API库的参考文档,构建得到API知识图谱,具体流程为:API结构抽取;API描述性句子抽取;API知识抽取;概念和关系扩展;
在线API比较服务,是根据一对要比较的API类/方法和构建好的API知识图谱,得到API比较结果表格,具体流程为:API知识对齐;API比较及结果生成。
3.根据权利要求2所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,所述API结构抽取的流程为:
首先,定义API知识图谱中包含的API元素和这些元素之间的结构关系;API元素包括API包、类、接口、方法、属性、异常、方法参数与返回值,API元素结构关系包括继承关系、实现关系、包含关系;
然后,用网页爬虫自动化地爬取API参考文档;基于API参考文档,通过设计一个网页包装器,自动化地从网页结构中抽取需要的API元素和API元素之间结构关系,从而得到API知识图谱的骨架。
4.根据权利要求3所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,所述API描述性句子抽取的流程为:
对于API参考文档中的API描述文本,首先经过分词、分句预处理,得到原始的描述性句子的集合;然后为了减少噪音,过滤掉少于三个词的句子或者包含代码片段的句子;之后,用一个自然语言处理工具来识别不完整的句子,如果其缺少主语,将句子属于的API元素的权限定名补全在句子的开头,如果同时缺少谓语,则在主语后面补充一个默认谓语“is”;为了更好地将句子和对应的API关联起来,让句子的语义更加完整,在识别句子里面以各种别名形式对于API元素的指代,将其替换成API的全限定名,以及利用自然语言处理工具中的指代消解模块来将指代API元素的代词替换成指代的API元素的全限定名。
5.根据权利要求4所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,所述API知识抽取的流程为:
利用设计的一系列启发式规则,从API描述性句子和从API结构中抽取API知识:
针对API描述性句子,定义一系列模板,每个模板描述某种特定的语言学描述模式,与一种API知识对应;并且每个模板有对应的代码来按照API知识的高层概念模型提取API知识的组成成分;对于一个API描述性句子,首先将其解析成简单句,对于每个简单句,识别其匹配的模板,然后用匹配的模板提取对应的API知识;
针对API结构,根据以下规则对API元素的名称及其继承、实现关系进行分析并抽取功能说明、特性说明、概念分类、成员关系这些API知识,然后加入到API知识图谱中,并与对应的API元素建立关系;
规则1:从类/接口名称中抽取功能说明:如果一个类/接口C的名称是一个名词N1加上一个可以转变成动词V的名词N2,那么为C抽取一个功能说明,其动作是由名词N2转变成的动词V,对象是起始的名词N1;
规则2:从方法名称中抽取功能说明:如果一个方法M的名称是一个动词V加上一到多个名词N,那么为M抽取一个功能说明,其动作动词V,对象是一到多个名词N;
规则3:从类/接口名称中抽取特性说明:如果一个类/接口C的名称包含形容词,那么就为C抽取一个特性说明,其特性表达式是这个形容词;
规则4:从继承实现关系中抽取特性说明:如果一个类/接口C1继承或者实现了另外一个接口/类C2,并且C2的名称是以形容词结尾的,那...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。