CN112100322B - 一种基于知识图谱的api元素比较结果自动生成方法 - Google Patents

一种基于知识图谱的api元素比较结果自动生成方法 Download PDF

Info

Publication number
CN112100322B
CN112100322B CN202010785731.7A CN202010785731A CN112100322B CN 112100322 B CN112100322 B CN 112100322B CN 202010785731 A CN202010785731 A CN 202010785731A CN 112100322 B CN112100322 B CN 112100322B
Authority
CN
China
Prior art keywords
api
knowledge
concept
similarity
graph
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.)
Active
Application number
CN202010785731.7A
Other languages
English (en)
Other versions
CN112100322A (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.)
Fudan University
Original Assignee
Fudan 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 Fudan University filed Critical Fudan University
Priority to CN202010785731.7A priority Critical patent/CN112100322B/zh
Publication of CN112100322A publication Critical patent/CN112100322A/zh
Application granted granted Critical
Publication of CN112100322B publication Critical patent/CN112100322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/313Selection or weighting of terms for indexing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/367Ontology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/374Thesaurus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于软件工程技术领域,具体为一种基于知识图谱的API元素比较结果自动生成方法。本发明基本步骤为:从API参考文档中抽取API结构知识作为知识图谱的骨架;从API结构知识中以及API元素对应的描述性句子中抽取出8种不同类型的知识;通过引入通用词典、通用知识图谱外部知识实现概念和关系的扩展,将从不同来源抽取出来的表达方式有差异的API知识进行融合;利用对齐的方式为给定的一对API元素生成一个表格形式的比较结果。本发明为软件开发人员提供了一种从API功能、特性、概念等不同维度进行API元素比较的方式,开发人员能够快速地了解API元素的共性和差异,从而能更快速准确地选择满足当前开发需求的API元素和学习API相关知识。

Description

一种基于知识图谱的API元素比较结果自动生成方法
技术领域
本发明属于软件工程技术领域,具体涉及一种基于知识图谱的API元素比较结果自动生成方法。
背景技术
框架和库通常提供具有相似功能但是又细微差别的API元素,忽视相似API元素的差异可能会导致一些编程错误,例如JDK提供了两个具有相似功能的API类,java.lang.StringBuffer和java.lang.StringBuilder, 前者可以在多线程情况下使用而后者不能。因此开发者经常关心于相似API元素的比较,比如截至2019年5月3日,编程问答网站Stack Overflow有13,228个带有java标签的问题,其中38%的问题没有接受答案。实际上API参考文档包含了丰富的关于API元素不同方面的知识,如API的功能,API的特性,API的概念分类等,可以用来直接用来回答API比较的问题。但是自动地获取和利用这些API知识并且用来解决API元素比较问题是一个挑战。首先API知识散布在API参考文档地不同地方,即使是同一个API的知识也可能会跨越多个API的文档,并且API知识隐藏在非结构化的描述文本中,甚至API的命名和API结构关系中,难以直接获取到;相似的API知识可能用不同方式在API参考文档里面表达,如何将这些API知识规范化结构化是一个难题;以及需要一个方法能基于API知识自动推导出API元素的共性和差异。
知识图谱(Knowledge Graph)于2012年5月17日由Google正式提出,其初衷是为了提高搜索引擎的能力,改善用户的搜索质量以及搜索体验。知识图谱希望将真实世界中间存在的各种实体和概念,以及它们之间的关联关系用图的方式描述出来,从而让计算机能够理解的文本背后丰富的知识关联。由于知识图谱强大的语义处理能力、开放组织能力与易于扩展的特性,发展迅猛。目前已经有着大量通用知识图谱,如FreeBase、Yogo、Wikidata等,规模已经达到千万级别。而面向特定领域的知识图谱,如金融、电商、医疗等也纷纷涌现,在实际的应用中发挥巨大的作用。比如金融知识图谱来进行金融里面的反欺诈检测,电商知识图谱进行电商平台的管控上,医疗知识图谱辅助的医疗决策支持系统。随着人工智能的技术发展和应用,知识图谱作为关键技术之一,已被广泛应用于智能搜索、智能问答、个性化推荐、内容分发等领域。由于知识图谱具有的强大的语义处理能力等优势,我们能够将API文档中的API知识自动抽取出来,然后通过构建一个API知识图谱,将API知识规范化结构化地储存起来用来支持API元素比较结果自动生成。
目前现有的和相似API的研究更多集中在API迁移上,并且都是黑盒的方法。如基于大量的代码仓库,基于模式挖掘自动挖掘可以迁移替换的API对;或者通过预先标注好的可迁移的API对作为训练数据训练深度学习模型,自动预测一个API在其他库或者其他编程语言中可以迁移的API。他们没有特别关注于API的具体的共性和差异,为迁移给出合理的解释。特别地,基本没有利用API参考文档中丰富的API知识。本发明基于通用API(如JDK、Android API)的参考文档自动化地构造API知识图谱,从而通过API知识图谱中的结构化的知识表示来支持API元素比较结果的自动生成。这是一个白盒的方法,大量有意义的API知识从API参考文档中抽取出来,作为API比较共性和差异的解释。
发明内容
本发明的目的在于提供一种基于知识图谱的API元素比较结果自动生成方法,为软件开发人员提供一种自动从API功能、特性、概念等不同维度进行API元素比较的方式,开发人员根据生成的结构化的比较结果,能够快速地了解API元素的共性和差异,从而能更加快速准确地选择满足当前开发需求的API元素和学习API相关知识。
本发明基于通用API(如JDK、Android API)的参考文档自动化地构造API知识图谱,通过API知识图谱中的结构化规范化表示的API知识来支持API元素比较结果的自动生成,具体步骤为:
首先,从API参考文档中抽取API结构知识,作为知识图谱的骨架,API结构知识包括API包、类、接口、方法等API元素的定义声明和API元素之间的包含、实现等结构关系。
然后,从API结构知识中以及API元素对应的描述性句子中,抽取出可以用来回答API比问题的8种不同类型的知识,这8种不同类型的API知识是:概念分类、成员关系、功能说明、表现说明、功能比较、特性说明、特性比较和约束。这8种API知识类型是通过对编程问答网站(即Stack Overflow)上采样的API比较类型的问题和对应的答案进行调研总结出来的。8种类型的API知识的高层概念模型如图1所示。
接着,通过引入通用词典、通用知识图谱等外部知识来实现概念和关系的扩展,将从不同来源抽取出来的表达方式有差异的API知识进行融合,以便在API比较的时候,相似的API知识能够进行更好地对齐。
最后,在所构建的API知识图谱基础上,针对给定的一对API元素(API方法或者API类)的各种描述内容进行对齐,生成一种表格形式的比较结果,用于展示两个API元素的共性和差异。其流程如图2所示。
概括来说,本发明包括两个主要部分,一个离线的API知识图谱的构建,一个在线的API比较服务。
(一)离线PI知识图谱的构建,是根据API库的参考文档,构建得到API知识图谱,具体步骤为:
(1)API结构抽取;
(2)API描述性句子抽取;
(3)API知识抽取;
(4)概念和关系扩展。
(二)在线API比较服务,是根据一对要比较的API类/方法和构建好的API知识图谱,得到API比较结果表格,具体步骤为:
(1)API知识对齐;
(2)API比较及结果生成。
下面具体介绍API知识图谱构建和API服务比较的每个步骤:
(1)API结构抽取
首先,定义API知识图谱中包含的API元素和这些元素之间的结构关系。API元素包括API包、类、接口、方法、属性、异常、方法参数与返回值等,API元素结构关系包括继承、实现、包含等关系;
然后,开发网页爬虫自动化地爬取API参考文档。基于API参考文档,我们设计了一个网页包装器,自动化地从网页结构中抽取我们想要的API元素和API元素之间结构关系,从而得到API知识图谱的骨架。
(2)API描述性句子抽取
对于API参考文档中的API描述文本,首先经过分词、分句等预处理,得到原始的描述性句子的集合;然后为了减少噪音,少于三个词的句子或者包含代码片段的句子会被过滤掉。之后,用一个自然语言处理工具来识别不完整的句子,如果其缺少主语,将句子属于的API元素的权限定名补全在句子的开头,如果同时缺少谓语,则在主语后面补充一个默认谓语“is”。为了更好地将句子和对应的API关联起来,让句子的语义更加完整,在识别句子里面以各种别名形式对于API元素的指代,将其替换成API的全限定名,如“StringBuffer”替换成“java.lang.StringBuffer”,以及利用自然语言处理工具中的指代消解模块来将指代API元素的代词替换成指代的API元素的全限定名。
(3)API知识抽取
利用设计的一系列启发式规则来从API描述性句子和从API结构中抽取API知识。
针对API描述性句子,定义一系列模板,每个模板描述了某种特定的语言学描述模式,与一种API知识对应。并且每个模板有对应的代码来按照API知识的高层概念模型提取API知识的组成成分。对于一个API描述性句子,首先将其解析成简单句,对于每个简单句,识别其匹配的模板,然后用匹配的模板提取对应的API知识。
针对API结构,根据以下规则对API元素的名称及其继承、实现关系进行分析并抽取功能说明、特性说明、概念分类、成员关系等API知识,然后加入到API知识图谱中并与对应的API元素建立关系。
规则1:从类/接口名称中抽取功能说明:如果一个类/接口C的名称是一个名词N1加上一个可以转变成动词V的名词N2,那么为C抽取一个功能说明,其动作是由名词N2转变成的动词V,对象是起始的名词N1(例如为java.lang.StringBuilder 抽取了“buildstring”);
规则2:从方法名称中抽取功能说明:如果一个方法M的名称是一个动词V加上一到多个名词N,那么为M抽取一个功能说明,其动作动词V,对象是一到多个名词N(例如为java.lang.StringBuilder.setLength(int)抽取了“set length”);
规则3:从类/接口名称中抽取特性说明:如果一个类/接口C的名称包含形容词,那么就为C抽取一个特性说明,其特性表达式是这个形容词(例如为javafx.scene.image.WritableImage 抽取了“writable”);
规则4:从继承实现关系中抽取特性说明:如果一个类/接口C1继承或者实现了另外一个接口/类C2,并且C2的名称是以形容词结尾的,那么为C1抽取一个特性说明,特性表达式为C2的名称(例如为java.lang.StringBuilder 从实现关系java.io.Serializable抽取了“serializable”);
规则5:从继承实现关系中抽取概念分类:如果一个类/接口C1继承或者实现了另外一个接口/类C2,并且C2的名称是名词N,那么为C1抽取一个概念分类,概念是为C2的名称(例如为java.lang.StringBuilder 从实现关系java.lang.CharSequence抽取了“charsequence”)。
(4)概念和关系扩展
不同的API知识可能用不同的语言进行描述,使得不同的API知识存在了语义的鸿沟。实际上某些API知识是可以通过概念和概念之间的关系关联起来的,比如两个API类的概念分类的概念是相同概念的不同别名,或者涉及的概念实际上是具有上下位关系的概念。为了解决这种概念语义的鸿沟,本发明明确地对概念和关系进行扩展,在API知识图谱添加新的概念和关系,从而使得API知识图谱中原本没有联系的API知识,能够通过概念和概念之间的关系,建立关联,把不同来源的API知识被融合在一起,从而能够更好对齐相似的API知识。
具体通过三种方式来进行扩充:
(a)基于外部词典资源的关系扩展。外部词典资源(WordNet 和Thesaurus)可以获取到很多常见能够表示特性的形容词、副词的同义词和反义词关系,从而为API特性说明建立等价或者相反关系,例如“mutable” and “modifiable”是两个API类的特性说明,并且他们在外部词典资源Thesaurus中具体同义词关系,因此,会将这两个API特性说明建立等价关系。
(b)基于名词概念的词形特征的上下位关系扩展。很多API知识都会涉及名词概念(如功能说明);其中名词概念本身的名称可能就暗示了其在概念分类关系。给定两个API知识抽取过程中抽取出来的名词概念,1)如果其中的一个名称是另外一个名称的前缀,建立一个属于关系,例如<character sequence length, 属于, character sequence>;2)如果其中的一个名称是另外一个名称的后缀,我们建立一个是关系,例如<buffered writer,is, writer>。
(c)基于通用知识图谱的概念和关系扩展。由于通用知识图谱中包含了大量的通用概念,实际上与API知识涉及的名词概念时部分重合的,为了进一步弥补API知识之间语义鸿沟,将API知识涉及的名词概念链接到通用知识图谱中的相关的通用概念上,然后将其在通用知识图谱中直接邻居概念及关系都引入API知识图谱中。具体的名词概念链接到通用知识图谱概念的技术如下。给定一个名词概念(来自于API知识中涉及的名词概念),首先通过名称匹配,从通用知识图谱,也就是Wikidata中找到一系列名称匹配的候选通用概念,对于这个名词概念和每个候选通用概念,计算一个链接得分,这个链接得分考虑了候选通用概念的上下文和整个API文档的主题相似度以及名词概念和候选通用概念的上下文相似度两个因素来进行加权求和得到,最后链接得分最高的一个候选通用概念就是最终的链接结果。其中主题相似度的计算需要收集整个API文档所有的描述性句子,然后利用词向量平均的方式得到主题向量。候选概念的上下文文本就是它自己本身的描述文本和周围实体的描述文本组成,将候选概念的上下文文本用词向量平均的方法得到候选实体的上下文向量。名词概念的上下文文本由其在API知识图谱的所有邻居概念和它自己本身的描述文本和别名组成,基于这个描述文本同样可以得到名词概念的上下文向量。基于这三个向量,可以计算主题相似度和上下文相似度。主题相似度由主题向量和候选通用实体计算余弦相似度得到,上下文相似度由名词概念的和候选通用实体的上下文向量计算余弦相似度得到。两个相似度的加权的权重通过在测试数据上进行网格搜索得到。
(5)API知识对齐
对于两个给定的要比较的API元素,从知识图谱中搜集他们全部的API知识来进行对齐。对齐只会发生在分别来自于两个API元素的相同类型的API知识中。对于两个任意的API知识,本发明会联合考虑文本语义相似度和基于知识图谱的概念相关性来计算API知识对的相似度,作为对齐的依据;其中:
文本相似度是通过获取API知识的描述文本,然后利用词向量平均技术将API知识的描述文本转换成向量,两个向量的余弦相似度作为API知识的文本语义相似度。
概念相似度的计算公式是1/(d+1),其中,d是两个API知识涉及核心实体在知识图谱里面最短距,如两个功能说明的API知识的最短距离就是对应的功能实体在API知识图谱中的最短距离。两个API知识的核心实体在图里面越近,则概念相关性越高。
文本相似度和概念相关性的加权和就是API知识对的相似度。
在对齐的时候,首先生成所有的可能API知识的对齐对,然后为每一对API知识计算相似度,按照相似度从高到低对可能的API知识对齐对进行排序。最终按照相似度从高到低选取API知识对作为最终的对齐结果,相似度小于一定阈值的API知识对会被过滤掉。在预先标注好的理想API对齐结果的测试数据上,对这个阈值和文本语义相似度、概念相关性的权重三个超参数进行网格搜索,确定一个在测试数据上表现最好的参数取值。
(6)API比较及结果生成
将对齐的API知识对整理成一个表格,形成API比较结果。表格有两列,分别对应来自于API的知识;其中,每一行就是一个对齐的API知识对,并且对每一行对齐的API知识进行检查,如果两个AI知识涉及的成分都一样,则标注它们为两个API元素的共性,合并展示。否则,分开在两列展示。进一步的,为了减少冗余,来自于同一个API元素的API知识如果是重复的,则进行合成同一行进行展示。
本发明方法的特点如下:
(1)通过对Stack Overflow上的API比较问题进行调研,得到能够用来回答API比较问题的8种API知识和它们的高层模型图,为API知识的规范化结构化提供指导;
(2)设计了一种从API参考文档中自动地构建一个API知识图谱的方法,构建的过程中同时利用API结构和API描述性文本,从中抽取出8种不同类型的API知识;
(3)设计了一种通过概念和关系扩展融合不同来源的API知识的方法。同时显示地对概念和关系进行扩展,从而建立API知识之间的概念关系,将不同来源的API知识被融合在一起,从而能够更好对齐API知识。包括利用外部词典资源,基于规则的名词上下位关系建立,名词概念到通用知识图谱的概念链接等;
(4)设计了一种白盒的、基于API知识图谱的API知识对齐的方法;
(5)设计了一种基于对齐的API知识生成API比较结果表格的方法。利用对齐的方式来为给定的一对API元素(两个API方法或者两个API类)生成一个表格形式的比较结果,整个比较结果展示两个API的共性和差异,并且比较结果都有对应的API参考文档出处作为解释。
本发明为软件开发人员提供了一种自动从API功能、特性、概念等不同维度进行API元素比较的方式,根据生成的结构化的比较结果,开发人员能够快速地了解API元素的共性和差异,从而使开发者能更加快速准确地选择满足当前开发需求的API元素和学习API相关知识。
附图说明
图1为本发明的总体流程图。
图2为本发明的所涉及的API知识的高层概念模型图。
具体实施方式
针对JDK1.8和Android API27的API库的一个具体实施例,具体如下。
(1)API结构抽取。利用Python库Scrapy来自动爬取对于JDK1.8与Android API27的参考文档网页作为数据源,之后利用Python库Beautiful Soup开发了解析API参考文档的网页包装器抽取API结构知识。
(2)API描述性句子抽取与补全技术。我们选择了Python库Spacy来对文本进行各种NLP分析和处理,包括分词、分句、词性标注、依赖解析等。利用Spacy,从API描述文本抽取出API描述句子,并且基于词性标注和依赖解析的结果判断句子是否完整,对不完整的进行补全。选择Python库NeuralCoref来进行指代消解,把API的指代消解成对应的全限定名。
(3)基于模板的从API描述性句子中的API知识抽取技术。我们手动分析JDK的两个API包的文本,尝试总结出API知识在文本中的描述模式。经过不断返回迭代和优化,最终总结出能够抽取出8种API知识的模板,该模板不仅仅只是简单的字符串匹配,而是更加复杂的考虑了语言学上的模式,包括词性标注和依赖解析树上的模式,从而更加准确地匹配出含义API知识的API描述性句子。这里面的NLP分析一样是通过Python库Spacy进行的。所设计的模板能应用到其他API库的参考文档中,抽取对应类型的API知识并且结构化。
(4)基于规则从API结构中的API知识抽取技术.我们手动分析了JDK采样的1000个API类和方法,总结出了功能说明、特性说明、概念分类、成员关系等API知识以及对应在API结构中的出现模式,设计了规则来从中进行抽取,包括对API名称按照驼峰式拆分,然后用NLP库Spacy进行分析;对于继承结构进行分析得到对应的概念分类体系等。所设计的规则能应用到其他API命名规范和组织结构良好的API库中,抽取对应类型的API知识并且结构化。
(5)文本利用词向量平均的方式转化为向量技术。知识图谱构造中比较结果生成中多处利用了这项技术,这是本发明的基础技术之一。具体来说,先收集与文本相关的语料,然后使用谷歌的Word2Vec的技术训练一个词向量的词表。对于每个单词,都能利用这个词表转化成为固定长度的向量表示,并且语义相近的词的词向量表示的余弦相似度较高。之后对于任何一段文本,都能通过将这个文本表示为词袋,然后取词袋中的每个词的对应词向量进行平均,最后得到整个文本的向量表示,整个文本的向量表示蕴含了整段文本的语义信息,可以直接用来计算两段文本的语义相似度。
(6)名词概念链接到通用知识图谱概念的技术。给定一个名词概念,首先通过名称匹配,从通用知识图谱,也就是Wikidata中找到一系列名称匹配的候选通用概念,对于这个名词概念和每个候选通用概念,计算一个链接得分,这个链接得分考虑了候选通用概念的上下文和整个API文档的主题相似度以及名词概念和候选通用概念的上下文相似度两个因素来进行加权求和得到,最后链接得分最高的一个候选通用概念就是最终的链接结果。其中主题相似度的计算需要收集整个API文档所有的描述性句子,然后利用词向量平均的方式得到主题向量。候选概念的上下文文本就是它自己本身的描述文本和周围实体的描述文本组成,将候选概念的上下文文本用词向量平均的方法得到候选实体的上下文向量。名词概念的上下文文本由其在API知识图谱的所有邻居概念和它自己本身的描述文本和别名组成,基于这个描述文本同样可以得到名词概念的上下文向量。基于这三个向量,可以计算主题相似度和上下文相似度。主题相似度由主题向量和候选通用实体计算余弦相似度得到,上下文相似度由名词概念的和候选通用实体的上下文向量计算余弦相似度得到。两个相似度的加权的权重通过在测试数据上进行网格搜索得到。

Claims (8)

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的共性和差异。
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元素的全限定名。
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的名称是以形容词结尾的,那么为C1抽取一个特性说明,特性表达式为C2的名称;
规则5:从继承实现关系中抽取概念分类:如果一个类/接口C1继承或者实现了另外一个接口/类C2,并且C2的名称是名词N,那么为C1抽取一个概念分类,概念是为C2的名称。
6.根据权利要求5所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,所述概念和关系扩展,是对API知识图谱添加新的概念和关系,使得API知识图谱中原本没有联系的API知识,通过概念和概念之间的关系,建立关联,把不同来源的API知识被融合在一起,从而能够更好对齐相似的API知识;
对概念和关系进行扩展有三种方式:
(1)基于外部词典资源的关系扩展;利用外部词典资源获取到很多常见能够表示特性的形容词、副词的同义词和反义词关系,从而为API特性说明建立等价或者相反关系;
(2)基于名词概念的词形特征的上下位关系扩展;很多API知识会涉及名词概念;其中名词概念本身的名称可能就暗示其在概念分类关系;给定两个API知识抽取过程中抽取出来的名词概念,1)如果其中的一个名称是另外一个名称的前缀,则建立一个属于关系;2)如果其中的一个名称是另外一个名称的后缀,则建立一个是关系;
(3)基于通用知识图谱的概念和关系扩展;由于通用知识图谱中包含大量的通用概念,实际上与API知识涉及的名词概念是部分重合的,将API知识涉及的名词概念链接到通用知识图谱中的相关的通用概念上,然后将其在通用知识图谱中直接邻居概念及关系都引入API知识图谱中;
具体的名词概念链接到通用知识图谱概念的方法如下:给定一个名词概念,首先通过名称匹配,从通用知识图谱,也就是Wikidata中找到一系列名称匹配的候选通用概念,对于这个名词概念和每个候选通用概念,计算一个链接得分,这个链接得分根据候选通用概念的上下文和整个API文档的主题相似度以及名词概念和候选通用概念的上下文相似度两个因素来进行加权求和得到,最后链接得分最高的一个候选通用概念就是最终的链接结果;其中主题相似度的计算需要收集整个API文档所有的描述性句子,然后利用词向量平均的方式得到主题向量;候选概念的上下文文本就是它自己本身的描述文本和周围实体的描述文本组成,将候选概念的上下文文本用词向量平均的方法得到候选实体的上下文向量;名词概念的上下文文本由其在API知识图谱的所有邻居概念和它自己本身的描述文本和别名组成,基于这个描述文本同样可以得到名词概念的上下文向量;根据这三个向量,计算主题相似度和上下文相似度;主题相似度由主题向量和候选通用实体计算余弦相似度得到,上下文相似度由名词概念的和候选通用实体的上下文向量计算余弦相似度得到;两个相似度的加权的权重通过在测试数据上进行网格搜索得到。
7.根据权利要求6所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,所述API知识对齐,是对于两个给定的要比较的API元素,从知识图谱中搜集他们全部的API知识来进行对齐;对齐只会发生在分别来自于两个API元素的相同类型的API知识中;对于两个任意的API知识,根据文本语义相似度和基于知识图谱的概念相关性来计算API知识对的相似度,作为对齐的依据;其中:
文本相似度是通过获取API知识的描述文本,然后利用词向量平均技术将API知识的描述文本转换成向量,两个向量的余弦相似度作为API知识的文本语义相似度;
概念相似度的计算公式是1/(d+1),其中,d是两个API知识涉及核心实体在知识图谱里面最短距,如两个功能说明的API知识的最短距离就是对应的功能实体在API知识图谱中的最短距离;两个API知识的核心实体在图里面越近,则概念相关性越高;
文本相似度和概念相关性的加权和就是API知识对的相似度;
在对齐的时候,首先生成所有的可能API知识的对齐对,然后为每一对API知识计算相似度,按照相似度从高到低对可能的API知识对齐对进行排序;最终按照相似度从高到低选取API知识对作为最终的对齐结果,过滤掉相似度小于阈值的API知识对;在预先标注好的理想API对齐结果的测试数据上,对这个阈值和文本语义相似度、概念相关性的权重三个超参数进行网格搜索,确定一个在测试数据上表现最好的参数取值。
8.根据权利要求7所述的基于知识图谱的API元素比较结果自动生成方法,其特征在于,所述API比较及结果生成,是将对齐的API知识对整理成一个表格,形成API比较结果;表格有两列,分别对应来自于API的知识;其中,每一行就是一个对齐的API知识对,并且对每一行对齐的API知识进行检查,如果两个API知识涉及的成分都一样,则标注它们为两个API元素的共性,合并展示;否则,分开在两列展示;来自于同一个API元素的API知识如果是重复的,则合成同一行进行展示。
CN202010785731.7A 2020-08-06 2020-08-06 一种基于知识图谱的api元素比较结果自动生成方法 Active CN112100322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010785731.7A CN112100322B (zh) 2020-08-06 2020-08-06 一种基于知识图谱的api元素比较结果自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010785731.7A CN112100322B (zh) 2020-08-06 2020-08-06 一种基于知识图谱的api元素比较结果自动生成方法

Publications (2)

Publication Number Publication Date
CN112100322A CN112100322A (zh) 2020-12-18
CN112100322B true CN112100322B (zh) 2022-09-16

Family

ID=73750273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010785731.7A Active CN112100322B (zh) 2020-08-06 2020-08-06 一种基于知识图谱的api元素比较结果自动生成方法

Country Status (1)

Country Link
CN (1) CN112100322B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699246B (zh) * 2020-12-21 2022-09-27 南京理工大学 基于知识图谱的领域知识推送方法
CN112861538A (zh) * 2021-02-08 2021-05-28 哈尔滨工业大学 一种基于上下文语义关系和文档一致性约束的实体链接方法
CN113255918B (zh) * 2021-04-13 2023-04-25 国家计算机网络与信息安全管理中心 强化聚合知识指导的生成常识推理方法
CN113849163B (zh) * 2021-10-09 2022-10-14 中国科学院软件研究所 基于api文档图谱的操作系统智能编程方法及装置
CN114661872B (zh) * 2022-02-25 2023-07-21 北京大学 一种面向初学者的api自适应推荐方法与系统
CN117687894A (zh) * 2022-09-02 2024-03-12 华为云计算技术有限公司 一种云服务的测试方法及相关设备
CN116756052B (zh) * 2023-08-18 2023-11-14 建信金融科技有限责任公司 一种数据处理方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078844B (zh) * 2018-10-18 2023-03-14 上海交通大学 软件众包的任务型对话系统及方法
CN109739994B (zh) * 2018-12-14 2023-05-02 复旦大学 一种基于参考文档的api知识图谱构建方法
CN110347798B (zh) * 2019-07-12 2021-06-01 之江实验室 一种基于自然语言生成技术的知识图谱辅助理解系统

Also Published As

Publication number Publication date
CN112100322A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN112100322B (zh) 一种基于知识图谱的api元素比较结果自动生成方法
Gamallo et al. LinguaKit: a Big Data-based multilingual tool for linguistic analysis and information extraction
Sunilkumar et al. A survey on semantic similarity
Gaeta et al. Ontology extraction for knowledge reuse: The e-learning perspective
Shin et al. A survey of automatic code generation from natural language
CN110609983B (zh) 一种政策文件结构化分解方法
CN113312922B (zh) 一种改进的篇章级三元组信息抽取方法
CN113806563A (zh) 面向多源异构建筑人文史料的建筑师知识图谱构建方法
RU2665261C1 (ru) Восстановление текстовых аннотаций, связанных с информационными объектами
Konys et al. Ontology learning approaches to provide domain-specific knowledge base
CN116108191A (zh) 一种基于知识图谱的深度学习模型推荐方法
CN114491209A (zh) 基于互联网信息抓取的企业业务标签挖掘的方法和系统
Xiao et al. Information extraction from the web: System and techniques
Riza et al. Natural language processing and levenshtein distance for generating error identification typed questions on TOEFL
Malhar et al. Deep learning based Answering Questions using T5 and Structured Question Generation System’
CN117473054A (zh) 基于知识图谱的通用智能问答方法及装置
CN117235138A (zh) 一种代码迁移过程中的跨库api推荐方法
Rajalakshmi et al. Text summarization for news articles using latent semantic analysis technique
Wiśniewski et al. ReqTagger: A rule-based tagger for automatic Glossary of Terms extraction from ontology requirements
CN111753540B (zh) 一种对于文本数据进行收集以进行自然语言处理nlp的方法及系统
Plamada-Onofrei et al. Apollo at semeval-2018 task 9: Detecting hypernymy relations using syntactic dependencies
Ouaddi et al. A sketch of an approach for discovering UML use-case diagrams from textual specifications of systems using a chatbot
Labský et al. Information extraction based on extraction ontologies: Design, deployment and evaluation
Saeed et al. DEEP LEARNING BASED QUESTION ANSWERING SYSTEM (SURVEY)
Ishaq et al. A semi-automatic framework for the development and analysis of selective natural language ontologies

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