一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种API组合推荐方法、装置、计算机设备以及可存储介质与流程

2022-03-05 04:17:30 来源:中国专利 TAG:

一种api组合推荐方法、装置、计算机设备以及可存储介质
技术领域
1.本发明属于计算机技术领域,尤其涉及一种api组合推荐方法、装置、计算机设备以及可存储介质。


背景技术:

2.应用程序编程接口(api)是app开发人员的基础组件,因为api具备可组合性、可编程性和灵活性的特点,所以选择合适的api可以使app开发人员的开发工作更加便利、更加高效。通常,app开发人员通过向api共享平台输入需求关键字去搜索自己想要的api,但是近年来api的数量越来越多,功能越来越复杂,因此如何向app开发人员推荐合适的api成为了推荐系统一个主要难题。
3.当前,比较热门的api推荐方法是基于关键字的斯坦纳树搜索算法(k-car和wartext)和atd算法。k-car算法首先建立一个api关联图,根据app开发人员输入的需求关键字进行斯坦纳搜索,找到兼容性最好的一组api推荐给用户,但是这种方法,忽略了api的流行度和多样性因素。wartext算法考虑了兼容性和api数量,但也同样没有考虑流行度和多样性。atd算法同时考虑了api的兼容性和多样性,但是它忽视了流行度因素,并且在准确性方面不如斯坦纳树搜索技术。


技术实现要素:

4.本发明实施例的目的在于提供一种api组合推荐方法,旨在解决现有api推荐方法存在推荐结果准确性差以及冗余度大的问题。
5.本发明实施例是这样实现的,一种api组合推荐方法,包括:
6.接收用户输入的功能关键字信息,所述功能关键字信息包含有至少一个功能关键字元素;
7.根据所述功能关键字元素以及预设的api关联图,确定候选api组合;所述预设的api关联图是基于api的功能关键字元素以及历史调用次数进行构建而成;
8.计算所述候选api组合之间的多样性程度,将预设推荐数目内多样性程度最高的api组合推荐给所述用户。
9.本发明实施例的另一目的在于一种api组合推荐装置,包括:
10.功能关键字信息接收单元,用于接收用户输入的功能关键字信息,所述功能关键字信息包含有至少一个功能关键字元素;
11.候选api组合确定单元,用于根据所述功能关键字元素以及预设的api关联图,确定候选api组合;所述预设的api关联图是基于api的功能关键字元素以及历史调用次数进行构建而成;以及
12.推荐单元,用于计算所述候选api组合之间的多样性程度,将预设推荐数目内多样性程度最高的api组合推荐给所述用户。
13.本发明实施例的另一目的在于一种计算机设备,包括存储器和处理器,所述存储
器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述api组合推荐方法的步骤。
14.本发明实施例的另一目的在于一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述api组合推荐方法的步骤。
15.本发明实施例提供的api组合推荐方法,通过基于api的功能关键字元素以及历史调用次数构建新型的api关联图,在向用户进行api推荐过程中,除了考虑了兼容性,还着重考虑了流行度因素,使得所推荐的api具有较高的效能和可用性;另外,本发明所推荐的api组合之间有较高的多样性,有利于拓宽开发人员的选择空间,提高开发人员的满意度,并且减少推荐结果的冗余。
附图说明
16.图1为本发明实施例提供的api组合推荐方法的实现流程图;
17.图2为本发明实施例提供的api关联图以及最优斯坦纳树搜索图;
18.图3为本发明实施例提供的api关联图的构建步骤图;
19.图4为本发明实施例提供的一种优选的api关联图的构建步骤图;
20.图5为本发明实施例提供的一种优选的api组合推荐方法的实现流程图;
21.图6为本发明实施例提供的另一种优选的api组合推荐方法的实现流程图;
22.图7为本发明实施例提供的推荐结果中api组合的平均流行度柱状图;
23.图8为本发明实施例提供的推荐结果中api组合的平均多样性柱状图;
24.图9为本发明实施例提供的推荐结果中api组合所包含功能关键字的覆盖度曲线图;
25.图10为本发明实施例提供的推荐结果中api组合所包含功能关键字的冗余度曲线图;
26.图11为本发明实施例提供的api组合推荐装置的结构框图;
27.图12为本发明实施例提供的api组合推荐装置中的候选api组合确定单元的结构框图;
28.图13为本发明实施例提供的api组合推荐装置中的推荐单元的结构框图;
29.图14为一个实施例中计算机设备的内部结构框图。
具体实施方式
30.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
31.可以理解,本技术所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但除非特别说明,这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本技术的范围的情况下,可以将第一xx脚本称为第二xx脚本,且类似地,可将第二xx脚本称为第一xx脚本。
32.本发明实施例为了解决现有api推荐方法存在推荐结果准确性差以及冗余度大的
问题,提供了一种api组合推荐方法,通过基于api的功能关键字元素以及历史调用次数构建新型的api关联图,在向用户进行api推荐过程中,除了考虑了兼容性,还着重考虑了流行度因素,使得所推荐的api具有较高的效能和可用性;另外,本发明所推荐的api组合之间有较高的多样性,有利于拓宽开发人员的选择空间,提高开发人员的满意度,并且减少推荐结果的冗余。
33.图1为本发明实施例提供的一种api组合推荐方法的实现流程图,详述如下。
34.步骤s101,接收用户输入的功能关键字信息,所述功能关键字信息包含有至少一个功能关键字元素。
35.步骤s102,根据所述功能关键字元素以及预设的api关联图,确定候选api组合。
36.在本发明实施例中,所述预设的api关联图是基于api的功能关键字元素以及历史调用次数进行构建而成,即根据历史api使用记录建立一个具备兼容性和流行度信息的新型api关联图,兼容性代表了api之间的合作程度(越高越好),流行度代表了api被调用的次数,是api质量的体现(越高越好)。本发明通过建立的该新型的api关联图,根据app开发人员输入的需求关键字,进行最优斯坦纳树搜索,可得到候选api组合。
37.在本发明实施例中,如图2的(a)就是一个api关联图,所谓建立关联图,其实就是把数据库中已有的信息形式化。目前数据库中含有的信息包括:各种各样的api;每一个api具有的功能类别;以往app调用api的记录。将每一个api都看作一个点v,把每个api的功能类别当作它的功能关键字,例如在(a)左图中,被看作点v1的api的功能关键字(元素)为k1。
38.在本发明实施例中,所述预设的api关联图的具体构建步骤如图3所示,包括以下步骤:
39.步骤s301,对各api对应各app的历史调用次数进行统计,得到边权重和点权重。
40.在本发明实施例中,如图4所示,所述步骤s301,包括:
41.步骤s401,获取任意两个api被同一个app同时调用的次数,得到边权重。
42.在本发明实施例中,如果任意两个api曾经被同一个app调用过,那么它们对应的点之间就有一条无向边链接,来代表它们具有可合作性和兼容性。其中任意两个api被同一个app调用过的次数,代表它们兼容性的程度,在api关联图中以边的权重值呈现,例如在图2的(a)左图中,v1和v2两个点之间存在一条边链接,则代表这两个api具有兼容性,且边的权重值为5,则说明这两个api被同一个app调用过的次数为5次。
43.步骤s402,统计各api对应各app的调用次数,并对所述调用次数求和,得到点权重。
44.在本发明实施例中,将每个api被所有app调用的总次数作为这个api流行度的值,在关联图中以点的权重值呈现,例如在图2的(a)左图中,v1的点的权重值为1,则说明它被所有app调用的总次数为1。
45.步骤s302,对所述边权重和点权重进行归一化处理。
46.在本发明实施例中,图2的(a)左图是一个建立好的具备兼容性和流行度信息的api关联图,为了将数据归一化,将图中所有权重取倒数得到图2的(a)右图。
47.步骤s303,根据各api的功能关键字元素以及边权重和点权重,以各api为节点构建api关联图。
48.本发明实施例提供的api组合推荐方法,建立了一个新型的api关联图,这个关联
图不仅能反映出每个api的功能关键字,还能反映出api的兼容性和流行度信息,api之间是否具备兼容性,兼容性的程度是多少,以及每个api流行度的强弱,都可以从图中一目了然,并且为下面步骤的实施提供了前提和基础。
49.在本发明实施例中,根据app开发人员输入的需求关键字,在api关联图中运用最优斯坦纳树搜索技术找到具备高兼容性和流行度的候选api组合。以图2进行讲解。斯坦纳树搜索过程主要有树的生长和合并过程。生长过程是指将树的根节点的邻近节点添加到这棵树当中,并且新添加的节点作为树新的根节点,新树的关键字集合要合并上新添加节点的功能关键字。合并过程是指若两棵树为同一根节点,关键字集合的交集为空集,并集的元素数量多于任一个关键字集合的元素数量,则本发明将两棵树的根节点合并为一个根节点,两棵树合并为一棵树。
50.本发明一个优选实施例中,如图5所示,所述步骤s102,具体包括:
51.步骤s501,在预设的api关联图中确定包含有任一所述功能关键字元素的api组合。
52.步骤s502,获取所述api组合对应的功能关键字元素集合以及边权重与点权重总和。
53.步骤s503,根据所述api组合对应的功能关键字元素集合以及边权重与点权重总和,确定候选api组合。
54.在本发明实施例中,以图2为例,假设现在有一个app开发人员输入需求关键字mk={k1,k2,k3},则本发明首先需要找到功能关键字集合中有mk中元素的节点v1,v3,v4,v5,并且以它们作为树的根节点进行树的生长和合并过程,其中本发明设mk’为树的需求关键字集合,mk’只包含这棵树的关键字集合中在mk里存在的元素设m为这棵树的边权重与点权重之和,也就是兼容性与流行度之和,即评测这棵树兼容性与流行度的一个综合数值(因为数值的归一化,所以m的数值越小越好)。图2(c)为(b)的生长结果,本发明把所有的树都放入一个优先级队列,每完成一次生长或合并过程就对队列进行更新,其中针对具有同一根节点且mk’完全相同的树,本发明只保留m值最小的树,其他的树进行删除,m值相同时,如果前面已经保留了相同节点的树,则本发明同样将此树删除。例如在图2(c)中,有两棵树的根节点都是v4,且mk’都等于{k2,k3},则本发明将m=1.7的树删除(叉号),因为m=1.6才是m值最小的树。迭代生长和合并过程,若某棵树的mk’=mk,则本发明将此树放入结果队列,作为本发明的候选结果之一(对勾)。其中,本发明将(f)中的第一棵树删除,原因是,前面已经保留了一颗和它相同根节点,相同mk’和m,且节点完全相同的树,所以将它删除。最终,所有带对勾的树为本发明选出的结果队列中的候选树,以备下一个步骤使用。
55.本发明实施例提供的api组合推荐方法,在进行最优斯坦纳树搜索的过程中,不仅考虑到兼容性最优,还添加了流行度最优的目标,并且将所有满足开发人员需求关键字且具备最优兼容性和流行度的api组合筛选出来。
56.步骤s103,计算所述候选api组合之间的多样性程度,将预设推荐数目内多样性程度最高的api组合推荐给所述用户。
57.在本发明实施例中,simhash算法和汉明距离可以计算两个文档的不相似性,这里本发明用来计算两棵树的功能不相似性。举例说明,假设一棵树的功能关键字集合(这棵树所有api关键字的并集)为{k1,k2}。下面进行simhash和汉明距离的方法讲解。如图6所示,所
述步骤s103,具体包括:
58.步骤s601,对每个候选api组合对应的每个功能关键字元素进行散列函数处理,得到每个功能关键字元素的散列值。
59.在本发明实施例中,simhash的第一步是将文档分词,这里本发明将每棵树的功能关键字集合里面的元素作为分词结果;进而利用hash函数对每个关键字进行hash,并得到相同位数的二进制hash值(散列值),假设这里本发明得到k1和k2的hash值分别为1010和0110。
60.步骤s602,将所述散列值变为散列向量并赋予每个功能关键字元素权重,得到每个关键字元素的权重向量。
61.在本发明实施例中,将每个hash值变为hash向量,原则是1变为1,0变为-1。然后赋予每个关键字权重并得到最终每个关键字的权重向量。例如,k1和k2的hash向量为(1,-1,1,-1)和(-1,1,1,-1)。假设k1和k2被赋予相同的权重1,则它们的权重向量分别为(1,-1,1,-1)*1=(1,-1,1,-1)和(-1,1,1,-1)*1=(-1,1,1,-1)。
62.步骤s603,对每个关键字元素的权重向量进行累加,得到合并结果,并对所述合并结果进行降维处理,获得每个候选api组合的降维结果。
63.在本发明实施例中,因为所有关键字的权重向量位数相同,因此本发明对相同位上的权重值进行累加,得到合并结果,例如k1和k2的合并结果为(0,0,2,-2);进而对该合并结果进行降维处理,降维的原则为某位大于0记为1,小于等于0记为0。则这棵树的降维结果为(0,0,1,0)。
64.步骤s604,根据所述候选api组合的降维结果,计算任意两个候选api组合之间的汉明距离值,并将预设推荐数目内汉明距离值最大的api组合推荐给所述用户。
65.在本发明实施例中,上述为一棵树simhash的全过程,然后针对任意两棵树的simhash结果,本发明利用汉明距离计算其之间的不相似性。汉明距离是表示两个相同长度的字符串对应位不同的数量,例如上面例子中,这棵树的simhash结果为(0,0,1,0),假设另一棵树的simhash结果为(1,0,0,1),则两棵树的汉明距离为3,也可表示两棵树的不相似性为3。本发明最终推荐给开发人员的是k个api组合,也就是k棵树,因此本发明对于结果队列中的树进行排列组合,形成包含k棵树的多组集合,每个集合都计算树与树彼此之间的不相似性,来代表其多样性,最终将多样性最好的集合中的k棵树,也就是k个api组合推荐给开发人员。
66.本发明实施例提供的api组合推荐方法,对于筛选出的api组合又运用了simhash算法和汉明距离,求出api组合之间的多样性程度,并且选出彼此之间具备最高多样性的k个api组合推荐给app开发人员。
67.另外,本发明从api共享平台programmableweb.com上面爬取数据并进行实验,经过和k-car、wartext进行大量的实验比较,可以证明本发明的技术在api组合推荐的流行度和多样性方面具有突出的优势。设为k-car为a,wartext为b,本发明的技术为c(见图7-10)。同时假设app开发人员输入的需求关键字数量为2~6,设最终推荐给用户5个api组合,经过30次的实验,本发明把各个指标取平均值的比较结果用下图7-10列出。
68.如图7所示,比较的是推荐结果中api组合的平均流行度,因为纵坐标取了流行度的倒数,所以数值越低代表流行度越好,从图中可以看出本发明的技术在需求关键字数量
从2到6的情况下,推荐的api组合的流行度都是最佳的。
69.如图8所示,比较的是推荐结果中api组合的平均多样性,本发明用汉明距离代表了api组合的不相似性,即多样性,所以数值越高代表多样性越好,从图中可以看出本发明的技术在需求关键字数量从2到6的情况下,推荐的api组合的平均多样性是最好的。
70.如图9所示,比较的是推荐结果中api组合所包含功能关键字的覆盖度,在满足用户需求的前提下,本发明所推荐api组合包含的功能关键字越多越好,也就是覆盖度的数值越高越好。从图中可以看出本发明的技术在需求关键字数量从2到6的情况下,推荐的api组合的平均覆盖度是最好的,因为本发明的技术注重增加多样性,所以覆盖度也会随之增加。
71.如图10所示,比较的是推荐结果中api组合所包含功能关键字的冗余度,在满足用户需求的前提下,本发明所推荐api组合包含的功能关键字彼此之间越不同越好,因为相似的功能关键字只能提供相似的功能,会产生不必要的冗余,因此冗余度的数值越低越好。从图中可以看出本发明的技术在需求关键字数量从2到6的情况下,推荐的api组合的平均冗余度是最小的,这也是因为本发明的技术注重推荐结果的多样性,彼此之间不相似性大,自然冗余度会小。
72.图11为本发明实施例提供的一种api组合推荐装置的结构框图,详述如下:
73.在本发明实施例中,所述api组合推荐装置,包括:
74.功能关键字信息接收单元1110,用于接收用户输入的功能关键字信息,所述功能关键字信息包含有至少一个功能关键字元素。
75.候选api组合确定单元1120,用于根据所述功能关键字元素以及预设的api关联图,确定候选api组合;所述预设的api关联图是基于api的功能关键字元素以及历史调用次数进行构建而成。
76.在本发明实施例中,如图12所示,所述候选api组合确定单元1120,包括:
77.第一确定模块1121,用于在预设的api关联图中确定包含有任一所述功能关键字元素的api组合。
78.获取模块1122,用于获取所述api组合对应的功能关键字元素集合以及边权重与点权重总和。
79.第二确定模块1123,用于根据所述api组合对应的功能关键字元素集合以及边权重与点权重总和,确定候选api组合。
80.推荐单元1130,用于计算所述候选api组合之间的多样性程度,将预设推荐数目内多样性程度最高的api组合推荐给所述用户。
81.在本发明实施例中,如图13所示,所述推荐单元1130,包括:
82.散列值确定模块1131,用于对每个候选api组合对应的每个功能关键字元素进行散列函数处理,得到每个功能关键字元素的散列值。
83.权重向量确定模块1132,用于将所述散列值变为散列向量并赋予每个功能关键字元素权重,得到每个关键字元素的权重向量。
84.降维结果确定模块1133,用于对每个关键字元素的权重向量进行累加,得到合并结果,并对所述合并结果进行降维处理,获得每个候选api组合的降维结果。
85.推荐模块1134,用于根据所述候选api组合的降维结果,计算任意两个候选api组合之间的汉明距离值,并将预设推荐数目内汉明距离值最大的api组合推荐给所述用户。
86.图14示出了一个实施例中计算机设备的内部结构图。如图14所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现api组合推荐方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行api组合推荐方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
87.本领域技术人员可以理解,图14中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
88.在一个实施例中,本技术提供的api组合推荐装置可以实现为一种计算机程序的形式,计算机程序可在如图14所示的计算机设备上运行。计算机设备的存储器中可存储组成该api组合推荐装置的各个程序模块,比如,图11所示的功能关键字信息接收单元1110、候选api组合确定单元1120和推荐单元1130。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本技术各个实施例的api组合推荐方法中的步骤。
89.例如,图14所示的计算机设备可以通过如图11所示的api组合推荐装置中的功能关键字信息接收单元1110执行步骤s101。计算机设备可通过候选api组合确定单元1120执行步骤s102。计算机设备可通过推荐单元1130执行步骤s103。
90.在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
91.收用户输入的功能关键字信息,所述功能关键字信息包含有至少一个功能关键字元素;
92.根据所述功能关键字元素以及预设的api关联图,确定候选api组合;所述预设的api关联图是基于api的功能关键字元素以及历史调用次数进行构建而成;
93.计算所述候选api组合之间的多样性程度,将预设推荐数目内多样性程度最高的api组合推荐给所述用户。
94.在一个实施例中,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
95.收用户输入的功能关键字信息,所述功能关键字信息包含有至少一个功能关键字元素;
96.根据所述功能关键字元素以及预设的api关联图,确定候选api组合;所述预设的api关联图是基于api的功能关键字元素以及历史调用次数进行构建而成;
97.计算所述候选api组合之间的多样性程度,将预设推荐数目内多样性程度最高的api组合推荐给所述用户。
98.应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例
中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
99.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
100.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
101.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
102.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献