CN113849163B - 基于api文档图谱的操作***智能编程方法及装置 - Google Patents

基于api文档图谱的操作***智能编程方法及装置 Download PDF

Info

Publication number
CN113849163B
CN113849163B CN202111174889.1A CN202111174889A CN113849163B CN 113849163 B CN113849163 B CN 113849163B CN 202111174889 A CN202111174889 A CN 202111174889A CN 113849163 B CN113849163 B CN 113849163B
Authority
CN
China
Prior art keywords
entity
adg
api
relationship
document map
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
CN202111174889.1A
Other languages
English (en)
Other versions
CN113849163A (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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN202111174889.1A priority Critical patent/CN113849163B/zh
Publication of CN113849163A publication Critical patent/CN113849163A/zh
Application granted granted Critical
Publication of CN113849163B publication Critical patent/CN113849163B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于API文档图谱的操作***智能编程方法及装置,包括根据从源***及目标***的API文档中提取的所需信息,分别构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2;分别向量化API文档图谱ADG1与API文档图谱ADG2,构建节点表示矩阵
Figure DDA0003295016210000011
及节点表示矩阵
Figure DDA0003295016210000012
基于节点表示矩阵
Figure DDA0003295016210000013
与节点表示矩阵
Figure DDA0003295016210000014
进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务,得到API映射结果。本发明避免了API文档中有效信息丢失,解决了已有的基于代码的API映射方法存在的代码库不可用、不准确等问题,以及基于文档的API映射方法的信息利用不充分等问题,为后续通过智能编程实现应用程序的跨***迁移的过程提供支持。

Description

基于API文档图谱的操作***智能编程方法及装置
技术领域
本发明属于计算机技术领域,涉及一种基于应用程序编程接口(applicationprogramming interface,API)文档图谱的操作***智能编程方法及装置。
背景技术
随着计算机和网络技术的发展,应用程序已经成为了人们日常生活和工作中必不可少的存在。无论是在社交、购物、娱乐,还是教育、运动、出行等方面,应用程序都可以为人们提供极大的便利。不过,由于目前市场上具有众多品牌的电子产品供消费者选择,为了尽可能覆盖到更多的***用户群,同一个应用程序往往需要发布在不同的操作***平台上。然而,在不同操作***的环境下重复编写具有相同功能的代码会对人力物力产生极大的浪费。因此,如何能够通过智能化的编程方法来实现这一需求就成为了一个值得研究的具有实际意义的问题。
由于在功能开发的过程中,通常需要对各种不同的API进行调用,以实现对许多现成的软件库的重用,因此如果能够建立两个不同操作***的API之间的映射关系,就可以智能化的完成从一个***到另一个***环境下的应用程序迁移。因而,本发明将针对操作***的智能化的编程方法的探究转化为了如下问题:在将代码从A***迁移到B***的过程中,如何能够智能化地建立起A***已有代码中所使用的API与B***API之间的映射关系,实现具有相同能力的API的等价替换。
目前已经有了不少与API映射相关的研究。例如,Zhong等在ICSE 2010会议上介绍的使用两种编程语言中相似的类名及相似的API用法来挖掘语言迁移的API映射规则;Nguyen等在ASE 2014会议上介绍的StaMiner旨在通过从两种编程语言的API的客户端代码的并行语料库中对API用法之间的映射进行统计学习来挖掘API映射;Bui等在FSE 2019会议上介绍的名为SAR的域适应方法可以自动转换和对齐两种不同编程语言和API的向量空间,在对抗性学习前后,分别使用播种和细化方法调整代码嵌入技术。然而,这些基于代码的方法在使用上存在一定的限制,因为包含API用法的代码库可能并不可用,且难以保证它们的准确性;同时,仅通过源代码是无法获取某些有效信息的,例如Swift API的绑定类型。其他也有一些基于API文档的方法,例如,Pandita等在SCAM 2015中提出的TMAP:首先从API文档中提取必要的信息;然后为每个API构建一个索引器,并使用术语频率-逆文档频率(term frequency–inverse document frequency,TF-IDF)提取前k个关键字构建查询;最终,搜索器会查询所有关键字相同的API,并根据余弦相似度对结果进行排名。但这些方法并未对文档中的丰富信息加以充分利用。
发明内容
本发明的技术解决问题:克服现有技术的不足,提供一种基于API文档图谱的操作***智能编程方法及装置,在代码迁移过程中,分别以两个不同的操作***为源和目标***,提高对API文档中信息的利用率,进而提高API映射的准确率以及智能化编程的效率。
为了实现上述发明目的,本发明采用如下技术方案:
一种基于API文档图谱的操作***智能编程方法,其步骤包括:
1)根据从源***及目标***的API文档中提取的所需信息,分别构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2
2)分别向量化API文档图谱ADG1与API文档图谱ADG2,构建节点表示矩阵
Figure BDA0003295016190000021
及节点表示矩阵
Figure BDA0003295016190000022
3)基于节点表示矩阵
Figure BDA0003295016190000023
与节点表示矩阵
Figure BDA0003295016190000024
进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务,得到API映射结果;
4)若映射结果为存在映射关系,则利用源***环境下的代码Sc,生成在目标***环境下实现同一功能的代码Tc。
进一步地,构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2之前,对所需信息进行预处理。
进一步地,预处理包括:规范化数据类型和去除无用的标点符号。
进一步地,通过以下步骤构建API文档图谱ADG1
1)获取源***的API文档中的实体,其中所述实体包括:包级实体集合Pk、类级实体集合C、方法级实体集合M和参数级实体集合Pr
2)提取各实体的名称属性及实体类型;
3)分别提取包级实体与类级实体之间的包含关系、类级实体与类级实体之间继承关系及嵌套关系、类级实体与方法级实体之间的包含关系及引发关系、方法级实体与方法级实体之间的继承关系、方法级实体与包级实体之间的包含关系,得到关系集合;
4)将各实体的名称属性、实体类型及所述关系集合存储为json文件;
5)对json文件中不同层级的键值进行遍历,基于实体类型与名称属性在图数据库中进行节点的创建;
6)以名称属性为键值在json文件中查找节点所具有的其他属性及属性值,并补充至节点信息中;
7)依据json文件中定义的键值层级,依次将实体与类级实体之间的包含关系、类级实体与方法级实体之间的包含关系及引发关系、及方法级实体与包级实体之间的包含关系,创建于图数据库中;
8)在json文件中,分别以类级实体的名称为键值进行继承关系及嵌套关系,及以方法级实体名称为键值进行继承关系及引发关系进行查找,并将未存在于现有图数据库中的继承关系、嵌套关系及引发关系,创建于图数据库中;
9)将步骤8)创建好的图数据,作为API文档图谱ADG1
进一步地,通过以下步骤构建节点表示矩阵
Figure BDA0003295016190000031
1)对API文档图谱ADG1中的每一个节点进行编号,并将编号结果作为节点属性值;
2)利用自然语言处理预训练模型对节点属性进行向量化,构建节点表示矩阵
Figure BDA0003295016190000032
进一步地,通过以下步骤进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务:
1)以API文档图谱ADG1与API文档图谱ADG2共同作为原始图
Figure BDA0003295016190000033
构建对偶关系图
Figure BDA0003295016190000034
2)将原始图
Figure BDA0003295016190000035
对偶关系图
Figure BDA0003295016190000036
节点表示矩阵
Figure BDA0003295016190000037
及节点表示矩阵
Figure BDA0003295016190000038
输入训练好的关系感知双图卷积网络,进行实体对齐任务。
进一步地,通过以下步骤构建对偶关系图
Figure BDA0003295016190000039
1)利用原始图
Figure BDA00032950161900000310
中的边,构建对偶关系图
Figure BDA00032950161900000311
中的顶点;
2)若原始图
Figure BDA00032950161900000312
中任两条边共享的头实体或尾实体,则在对偶关系图
Figure BDA00032950161900000313
中进行相应边的创建。
进一步地,通过以下步骤训练关系感知双图卷积网络:
1)将已知等效实体对作为正面实例;
2)将已知等效实体对中的一个替换为其K最邻近实体,并将替换后的实体对作为负面实例;
3)通过最小化正面实例的实体间距离且最大化负面实例的实体间距离,进行关系感知双图卷积网络的训练。
进一步地,通过以下步骤生成在目标***环境下实现同一功能的代码Tc:
1)遍历代码Sc的每一行,判断是否存在API调用的情况:若存在,则在API文档图谱ADG1的实体中搜索相应的实体E1(a),其中a为API调用的名称;
2)依据映射结果,在API文档图谱ADG2中找到与API文档图谱ADG1存在映射关系的实体;
3)基于存在映射关系的实体,对代码Sc的API调用进行名称替换,生成在目标***环境下实现同一功能的代码Tc。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行以上所述方法。
一种电子装置,包括存储器和处理器,其中存储器存储执行以上所述方法的程序。
与现有技术相比,本发明具有以下优势:
1、本发明提出了API文档图谱的概念,以及构建不同操作***的API文档图谱并针对其进行实体对齐以获得API映射进而实现智能化编程的方法,从而解决了已有的基于代码的API映射方法存在的代码库不可用、不准确等问题,以及基于文档的API映射方法的信息利用不充分等问题;
2、本发明可以在避免API文档中有效信息丢失的情况下将其转化为知识图谱形式的数据,作为实体对齐神经网络模型的输入,为后续通过智能编程实现应用程序的跨***迁移的过程提供支持。
附图说明
图1是基于API文档图谱的操作***智能编程方法的流程图;
图2是从源和目标***的API文档中提取信息的流程图;
图3是生成源和目标***的ADG的流程图;
图4是向量化源和目标***的ADG节点的流程图;
图5是利用RDGCN方法对源和目标***的ADG进行实体对齐的流程图;
图6是在目标***环境下生成与在源***环境下实现的代码具有相同功能的代码的流程图。
具体实施方式
下面结合附图,对本发明作进一步的说明。
本实施例基于API文档图谱的操作***智能编程方法,其总体流程如图1所示,主要包括以下步骤:
1)从源和目标***的API文档中提取所需信息,包括包级实体集合Pk、类级实体集合C、方法级实体集合M及参数级实体集合Pr的所有属性、类型及彼此之间的关系,其流程图如图2所示,具体说明如下:
1a)对源和目标***的API文档进行预处理,规范化数据类型并去除无用的标点符号,以降低冗余或特殊的数据类型对后续计算过程的影响,提高API信息提取的质量。例如,将特定的数组数据类型整理为“数组”,通用类型参数换成根类等。转到1b)。
1b)根据对API文档图谱(API Documentation Graph,ADG)的定义,利用XPath、正则表达式、BeautifulSoup等方式对预处理后的API文档中的Pk,C,M,Pr四级实体的所有属性、类型及彼此之间的关系等信息进行提取,并按照定义好的json格式进行存储。
其中,ADG的定义如下:
ADG由节点和带有信息的有向边组成,是一种将API文档中的内容以图的形式进行存储的语义网络,其形式化表述为:
ADG=(E,R,T)
其中:
(1)E为ADG中所有实体的集合;
(2)R为ADG中所有关系的集合;
(3)T为ADG中所有(实体-关系-实体)三元组的集合。
上述ADG中所有实体的集合E满足以下条件:
E={Pk,C,M,Pr}
其中:
<1>Pk为包级实体的集合,满足以下条件:
TP(Pk)=Pkg
A(Pk)={N,D}
TP(*)为类型函数,TP(Pk)表示文档中所有包级实体类型,Pkg即为包。A(*)为属性函数,A(Pk)表示文档中所有包级实体属性,N为实体名称,D为文本描述,即包含了文档中所有包的名称及描述信息。
<2>C为类级实体的集合,满足以下条件:
TP(C)={Cl,IF,En,Ex,Er,AT}
A(C)={N,D,Mod}
TP(C)表示文档中所有类级实体类型,Cl为类,IF为接口,En为枚举,Ex为异常,Er为错误,AT为注解。A(C)表示文档中所有类级实体属性,Mod为修饰符,即包含了文档中所有类、接口、枚举、异常、错误及注解的名称、描述及修饰符类型信息。
<3>M为方法级实体的集合,满足以下条件:
TP(M)={Mtd,F,Cst,Ct}
A(M)={N,D,Dl,Θ(Mtd)}
TP(M)表示文档中所有方法级实体类型,Mtd为方法,F为字段,Cst为构造函数,Ct为常数。A(M)表示文档中所有方法级实体属性,Dl为声明,Θ(Mtd)为Mtd独有的信息,满足以下条件:
Θ(Mtd)=RT
RT表示返回值。即包含了文档中所有方法、字段、构造函数、常数的名称、描述、声明及方法特有的返回值信息。
<4>Pr为参数级实体的集合,满足以下条件:
TP(Pr)=Param
A(Pr)={N,D,Tp}
TP(Pr)表示文档中所有参数级实体类型,Param为参数。A(Pr)表示文档中所有参数级实体属性,Tp为数据类型,例如整型、浮点型、字符类型等。即包含了参数的名称、描述及数据类型信息。
上述ADG中所有关系的集合R满足以下条件:
R={<Pk,C>,<C,C>,<C,M>,<M,M>,<M,Pr>}
其中:
<1><Pk,C>表示由Pk指向C的有向信息边,满足以下条件:
TP(<Pk,C>)=cr
TP(<Pk,C>)表示由Pk指向C的边类型,cr为包含关系,即对于
Figure BDA0003295016190000072
使得c包含于pk。
<2><C,C>表示C内部存在的有向信息边,满足以下条件:
TP(<C,C>)={hr,nr}
TP(<C,C>)表示C内部的边类型。hr为继承关系,例如,
Figure BDA0003295016190000073
c1是c2的子类,c2是c1的超类。nr为嵌套关系,例如,
Figure BDA0003295016190000074
c1是c2的外部类,c2是c1的嵌套类。即C内部存在继承、嵌套关系。
<3><C,M>表示由C指向M的有向信息边,满足以下条件:
TP(<C,M>)={cr,tr}
TP(<C,M>)表示由C指向M的边类型。cr含义同上,即对于
Figure BDA0003295016190000075
使得m包含于c。tr为引发关系,例如,
Figure BDA0003295016190000076
m可能会因出现错误而引发、抛出c。即C与M之间存在包含、引发关系。
<4><M,M>表示M内部存在的有向信息边,满足以下条件:
TP(<M,M>)=hr
TP(<M,M>)表示M内部的边类型。hr含义同上(子类会从其超类继承字段、方法等),例如,
Figure BDA0003295016190000077
m1,m2分别为包含于c1,c2中的方法,c1是c2的子类,m1可以重写m2
<5><M,Pr>表示由M指向Pr的有向信息边,满足以下条件:
TP(<M,Pr>)=cr
TP(<M,Pr>)表示由M指向Pr的边类型。cr含义同上,即对于
Figure BDA0003295016190000078
使得pr包含于m。
此外,利用XPath、正则表达式、BeautifulSoup等方式对预处理后的API文档进行信息提取。由于在Pk,C,M,Pr这四级实体中,前者依次包含后者,因此将提取好的信息按照如下json格式进行存储:
Figure BDA0003295016190000071
Figure BDA0003295016190000081
Figure BDA0003295016190000091
其中,pk,c,m,pr分别为Pk,C,M,Pr四级实体的实例;N(x),D(x),TP(x),x∈{pk,c,m,pr}分别表示这些实例的名称、描述及类型;hr(y),y∈{c,m}表示与实例c或m存在继承关系的其他同级实例;Mod(c),nr(c)分别表示实例c的修饰符类型及与c存在嵌套关系的其他同级实例;Dl(m),tr(m)分别表示实例m的声明及与m存在引发关系的类级实体;只有在m=Mtd时,才提取的到Θ(m),即方法的返回值;Tp(pr)表示实例pr的数据类型。
2)将提取好的信息进行进一步处理并导入Neo4j图数据库中,生成可视化的源和目标***的ADG,生成过程中采取“先实体,后关系”的创建策略,防止三元组产生混乱,其流程图如图3所示,具体说明如下:
2a)编写代码对1b)中生成的json文件中不同层级的键值进行遍历,依次获取所有Pkg、Cl、IF、En、Ex、Er、AT、Mtd、F、Cst、Ct及Param类型的实体的名称,并通过实体类型TP与名称属性N在Neo4j图数据库中创建相应的节点,转到2b)。
2b)以实体名称属性N为键值在1b)生成的json文件中查找实体所具有的其他属性及属性值。例如,对于类型为Cl的实体cli而言,可以通过其名称属性N(cli)查找到其描述属性D(cli)及修饰符类型Mod(cli)。将查找到的属性与属性值以键值对的形式补充至每一个实体的节点信息,转到2c)。
2c)依据1b)生成的json文件中定义的键值层级,在Neo4j中依次创建<Pk,C>、<C,M>及<M,Pr>,即Pk,C,M,Pr四个层级的实体之间的包含关系,转到2d)。
2d)在1b)生成的json文件中依次以C级实体c的名称N(c)为键值查找与之具有hr、nr关系的其他实体hr(c)、nr(c),以M级实体m的名称N(m)为键值查找与之具有hr、tr关系的其他实体hr(m)、tr(m),转到2e)。
2e)判断2d)中查找到的关系是否已经存在于Neo4j中。以(c-hr-c′),c′∈hr(c)三元组为例,若该三元组已经存在,则无需再在c和c′之间添加hr这一关系,跳过判断下一对实体间的关系是否存在;若该三元组不存在,则在c和c′之间创建这一关系。
3)向量化源和目标***的ADG中的节点信息,输出为Xe_init矩阵其流程图如图4所示,具体说明如下:
3a)分别为ADG1与ADG2中的每一个节点从0开始进行编号,并将编号结果存储为节点的一个属性值,转到3b)。
3b)利用自然语言处理预训练模型对ADG中的节点属性进行向量化,以确保长文本属性值的语义信息也都包含在嵌入结果,从而获取ADG1与ADG2的节点表示矩阵
Figure BDA0003295016190000101
以及
Figure BDA0003295016190000102
ADG1与ADG2的每一个节点的向量化表示分别为
Figure BDA00032950161900001031
Figure BDA00032950161900001030
Figure BDA0003295016190000106
其中,
Figure BDA0003295016190000107
Figure BDA0003295016190000108
分别为ADG1与ADG2中的节点数量,
Figure BDA0003295016190000109
分为
Figure BDA00032950161900001010
以及
Figure BDA00032950161900001011
的行向量。
4)将一些已知的源和目标***的API映射关系,即两个ADG中已知的少量等效实体对作为对齐种子,利用其与关系感知双图卷积网络(Relation-aware Dual-GraphConvolutional Network,RDGCN)对源和目标***的ADG进行实体对齐,其流程图如图5所示,具体说明如下:
4a)构造以ADG1与ADG2为原始图
Figure BDA00032950161900001012
的对偶关系图
Figure BDA00032950161900001013
转到4b)。
在本步骤中,定义源和目标***的ADG分别为ADG1与ADG2,它们共同作为原始图
Figure BDA00032950161900001014
其中,ve=E1∪E2,E1、E2分别为ADG1与ADG2中所有的实体,εe=T1∪T2,T1、T2分别为ADG1与ADG2中所有的三元组。定义原始图
Figure BDA00032950161900001015
的对偶关系图为
Figure BDA00032950161900001016
满足:
i.对于
Figure BDA00032950161900001017
中的每种关系r,都有顶点
Figure BDA00032950161900001032
可得
Figure BDA00032950161900001033
(R1、R2分别为ADG1与ADG2中所有的关系)。
ii.如果关系ri与rj共享头实体或尾实体,则在
Figure BDA00032950161900001018
中创建边
Figure BDA00032950161900001019
连接节点
Figure BDA00032950161900001020
Figure BDA00032950161900001021
根据共享头、尾实体的情况,为
Figure BDA00032950161900001022
定义权重
Figure BDA00032950161900001023
Figure BDA00032950161900001024
Figure BDA00032950161900001025
其中,
Figure BDA00032950161900001026
Figure BDA00032950161900001027
分别对应关系ri的头、尾实体集合。
4b)将
Figure BDA00032950161900001028
以及
Figure BDA00032950161900001029
作为RDGCN的输入,转到4c)。
RDGCN是一个可用于异构知识图谱上实体对齐的方法,整个模型可以先获取原始顶点表示矩阵Xe及对偶顶点表示矩阵Xr,进而对经过对偶注意力层及原始注意力层后的表示矩阵
Figure BDA0003295016190000111
Figure BDA0003295016190000112
进行计算,再在对双层图卷积网络信息整合后得到实体表示
Figure BDA0003295016190000113
及两个ADG彼此实体间的距离d(e1,e2)。
4c)基于已知的等效实体对集合S获取不等效实体对集合S′,将S与S′用作RDGCN的训练数据,训练时分别最小化和最大化实体对的距离,转到4d)。
即将已知的等效实体对用作对齐种子,训练时最小化它们的实体间距离。同时,替换等效实体中的一个为其K最邻近实体,并将此作为负面实例,尽可能最大化它们的实体间距离。训练的目标函数为:
Figure BDA0003295016190000114
其中,(p,q)为一对等效实体,γ>0为边缘超参数,S和S′分别为一组正面实例(等效实体),一组负面实例
4d)利用训练好的RDGCN完成ADG1与ADG2中以M级实体为核心的实体对齐任务,能对齐的即可判定为存在映射关系的API。由此甚至同时发现极为相似的C级、Pk级实体。
5)利用获得的源和目标***的API映射关系,在目标***环境下生成与在源***环境下实现的代码具有相同功能的代码,其流程图如图6所示,具体说明如下:
5a)将源***环境下需要迁移的具有功能Func的代码Sc输入目标***的环境中。遍历Sc的每一行,判断是否存在API调用的情况,若存在,例如存在对名称为a的API的调用,则在ADG1的实体中搜索相应的实体E1(a),转到5b)。
5b)根据4d)中得到的等效实体的结果,在ADG2中找到与5a)中遍历后得到的所有实体具有映射关系的实体,并将这些实体对应的API在代码Sc中替换为相应的名称。例如,在ADG2中找到的与E1(a)具有映射关系的实体为E2(f(a)),将代码Sc中的a替换为f(a)。其中,f(a)为与a具有映射关系的目标***的API的名称。全部替换完成后即可初步生成在目标***环境下同样能够实现功能Func的代码Tc。
总之,为了解决已有的基于代码的API映射方法存在的代码库不可用、不准确等问题,以及基于文档的API映射方法的信息利用不充分等问题,本发明提出了API文档图谱的概念,以及构建不同***的API文档图谱并针对其进行实体对齐以获得API映射进而实现智能化编程的方法。本发明可以在避免API文档中有效信息丢失的情况下将其转化为知识图谱形式的数据,作为实体对齐神经网络模型的输入,为后续通过智能编程实现应用程序的跨***迁移的过程提供支持。本发明已在OpenHarmony***环境下进行了应用。
以上虽然描述了本发明的具体实施方法,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明原理和实现的前提下,可以对这些实施方案做出多种变更或修改,因此,本发明的保护范围由所附权利要求书限定。

Claims (9)

1.一种基于API文档图谱的操作***智能编程方法,其步骤包括:
1)根据从源***及目标***的API文档中提取的所需信息,分别构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2,所述API文档图谱ADG1的构建过程包括:
1.1)获取源***的API文档中的实体,其中所述实体包括:包级实体集合Pk、类级实体集合C、方法级实体集合M和参数级实体集合Pr
所述包级实体集合Pk的实体类型包括:包,所述包级实体集合Pk的实体属性包括:实体名称和文本描述;
所述类级实体集合C的实体类型包括:类、接口、枚举、异常、错误和注解,所述类级实体集合C的实体属性包括:实体名称、文本描述和修饰符;
所述方法级实体集合M的实体类型包括:方法、字段、构造函数和常数,所述方法级实体集合M的实体属性包括:实体名称、文本描述、声明和方法独有的信息;
所述参数级实体集合Pr的实体类型包括:参数,所述参数级实体集合Pr的实体属性包括:实体名称、文本描述和数据类型;
1.2)分别提取包级实体与类级实体之间的包含关系、类级实体与类级实体之间继承关系及嵌套关系、类级实体与方法级实体之间的包含关系及引发关系、方法级实体与方法级实体之间的继承关系、方法级实体与包级实体之间的包含关系,得到关系集合;
1.3)将实体各属性及所述关系结合存储为json文件;
1.4)对json文件中不同层级的键值进行遍历,基于实体类型与实体属性在图数据库中进行节点的创建;
1.5)依据所述json文件中定义的键值层级,在图数据库中创建各层级的实体之间的包含关系;
1.6)以类级实体的名称为键值查找具有继承关系与嵌套关系的其他同级实例,以方法级实体的名称为键值查找具有继承关系与引发关系的其他同级实例,并判断查找的关系是否存在与现有图数据库中;
1.7)将未存在于现有图数据库中的继承关系、嵌套关系及引发关系,创建于图数据库中,并将创建好的图数据作为API文档图谱ADG1
2)分别向量化API文档图谱ADG1与API文档图谱ADG2,构建节点表示矩阵
Figure FDA0003765393650000011
及节点表示矩阵
Figure FDA0003765393650000012
3)基于节点表示矩阵
Figure FDA0003765393650000013
与节点表示矩阵
Figure FDA0003765393650000014
进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务,得到API映射结果;
4)若映射结果为存在映射关系,则利用源***环境下的代码Sc,生成在目标***环境下实现同一功能的代码Tc。
2.如权利要求1所述的方法,其特征在于,构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2之前,对所需信息进行预处理;预处理包括:规范化数据类型和去除无用的标点符号。
3.如权利要求1所述的方法,其特征在于,通过以下步骤构建节点表示矩阵
Figure FDA0003765393650000021
1)对API文档图谱ADG1中的每一个节点进行编号,并将编号结果作为节点属性值;
2)利用自然语言处理预训练模型对节点属性进行向量化,构建节点表示矩阵
Figure FDA0003765393650000022
4.如权利要求1所述的方法,其特征在于,通过以下步骤进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务:
1)以API文档图谱ADG1与API文档图谱ADG2共同作为原始图
Figure FDA0003765393650000023
构建对偶关系图
Figure FDA0003765393650000024
2)将原始图
Figure FDA0003765393650000025
对偶关系图
Figure FDA0003765393650000026
节点表示矩阵
Figure FDA0003765393650000027
及节点表示矩阵
Figure FDA0003765393650000028
输入训练好的关系感知双图卷积网络,进行实体对齐任务。
5.如权利要求4所述的方法,其特征在于,通过以下步骤构建对偶关系图
Figure FDA0003765393650000029
1)利用原始图
Figure FDA00037653936500000210
中的边,构建对偶关系图
Figure FDA00037653936500000211
中的顶点;
2)若原始图
Figure FDA00037653936500000212
中任两条边共享的头实体或尾实体,则在对偶关系图
Figure FDA00037653936500000213
中进行相应边的创建。
6.如权利要求4所述的方法,其特征在于,通过以下步骤训练关系感知双图卷积网络:
1)将已知等效实体对作为正面实例;
2)将已知等效实体对中的一个替换为其K最邻近实体,并将替换后的实体对作为负面实例;
3)通过最小化正面实例的实体间距离且最大化负面实例的实体间距离,进行关系感知双图卷积网络的训练。
7.如权利要求1所述的方法,其特征在于,通过以下步骤生成在目标***环境下实现同一功能的代码Tc:
1)遍历代码Sc的每一行,判断是否存在API调用的情况:若存在,则在API文档图谱ADG1的实体中搜索相应的实体E1(a),其中a为API调用的名称;
2)依据映射结果,在API文档图谱ADG2中找到与API文档图谱ADG1存在映射关系的实体;
3)基于存在映射关系的实体,对代码Sc的API调用进行名称替换,生成在目标***环境下实现同一功能的代码Tc。
8.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-7中任一所述方法。
9.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-7中任一所述方法。
CN202111174889.1A 2021-10-09 2021-10-09 基于api文档图谱的操作***智能编程方法及装置 Active CN113849163B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111174889.1A CN113849163B (zh) 2021-10-09 2021-10-09 基于api文档图谱的操作***智能编程方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111174889.1A CN113849163B (zh) 2021-10-09 2021-10-09 基于api文档图谱的操作***智能编程方法及装置

Publications (2)

Publication Number Publication Date
CN113849163A CN113849163A (zh) 2021-12-28
CN113849163B true CN113849163B (zh) 2022-10-14

Family

ID=78977776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111174889.1A Active CN113849163B (zh) 2021-10-09 2021-10-09 基于api文档图谱的操作***智能编程方法及装置

Country Status (1)

Country Link
CN (1) CN113849163B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159425A (zh) * 2019-12-30 2020-05-15 浙江大学 一种基于历史关系和双图卷积网络的时态知识图谱表示方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739994B (zh) * 2018-12-14 2023-05-02 复旦大学 一种基于参考文档的api知识图谱构建方法
CN112100322B (zh) * 2020-08-06 2022-09-16 复旦大学 一种基于知识图谱的api元素比较结果自动生成方法
CN112395884B (zh) * 2020-11-15 2022-04-12 复旦大学 一种基于代码文档的安卓api语义关系图谱构建方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159425A (zh) * 2019-12-30 2020-05-15 浙江大学 一种基于历史关系和双图卷积网络的时态知识图谱表示方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向开源软件项目的软件知识图谱构建方法;李文鹏等;《计算机科学与探索》;20171130(第06期);第852-860页 *

Also Published As

Publication number Publication date
CN113849163A (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
Sevilla Ruiz et al. Inferring versioned schemas from NoSQL databases and its applications
US9904729B2 (en) System, method, and computer program for a consumer defined information architecture
Davies et al. Semantic Web technologies: trends and research in ontology-based systems
US11520800B2 (en) Extensible data transformations
US7860817B2 (en) System, method and computer program for facet analysis
US20240028607A1 (en) Facilitating data transformations
US20210011926A1 (en) Efficient transformation program generation
US11809223B2 (en) Collecting and annotating transformation tools for use in generating transformation programs
Pattuelli et al. Ontology building for linked open data: A pragmatic perspective
CN106528648B (zh) 结合Redis内存数据库的分布式RDF关键词近似搜索方法
EP3671526B1 (en) Dependency graph based natural language processing
EP3732587B1 (en) Systems and methods for context-independent database search paths
JP2004362563A (ja) 非構造化情報管理および自動テキスト分析を実行するためのシステム、方法、およびコンピュータ・プログラム記録媒体
Shvaiko Iterative schema-based semantic matching
Balsmeier et al. Automated disambiguation of us patent grants and applications
Goguen Data, schema, ontology and logic integration
Drakopoulos et al. A semantically annotated JSON metadata structure for open linked cultural data in Neo4j
CN113849163B (zh) 基于api文档图谱的操作***智能编程方法及装置
Janev Semantic intelligence in big data applications
Angelis et al. Generating and exploiting semantically enriched, integrated, linked and open museum data
Jouanot et al. Context comparison for object fusion
Hoi et al. Manipulating Data Lakes Intelligently With Java Annotations
CN113962549A (zh) 一种基于电网运行知识的业务流程编排方法及***
Gujral et al. Knowledge Graphs: Connecting Information over the Semantic Web
Ivkovic et al. Towards automatic establishment of model dependencies using formal concept analysis

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