发明名称 一种基于服务聚合与功能信息的API推荐方法
摘要 本发明公开了一种基于服务聚合与功能信息的API推荐方法,其利用了用户的历史调用记录信息,API的功能描述信息以及API的聚合Mashup信息三个方面,来为不同的用户进行API的推荐。现有的方法要么只考虑了API的功能信息而没有考虑API的聚合信息,要么只利用了API的聚合信息而未考虑API的功能信息,而本发明方法将这两者进行融合并通过图模型统一的建模所有的信息,因此本发明方法实施的API推荐的效果比现有方法有了显著的提升。
申请公布号 CN106250391A 申请公布日期 2016.12.21
申请号 CN201610561815.6 申请日期 2016.07.15
申请人 浙江大学 发明人 吴健;高维;陈亮;梁婷婷;万瑶;应豪超;韩玉强;王皓然;邓水光;李莹;尹建伟;吴朝晖
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 杭州天勤知识产权代理有限公司 33224 代理人 胡红娟
主权项 一种基于服务聚合与功能信息的API推荐方法,其特征在于:首先,从API和Mashup的文本描述信息中抽取一定数目的主题形成主题集合,进而根据用户集合、API集合、Mashup集合以及主题集合构建关于用户、Mashup、API以及主题的网络关系模型;所述的网络关系模型中每个用户、Mashup、API以及主题均由节点来表征,节点之间若存在关联则通过边进行连接,且节点之间只存在以下五类连接关系:用户节点与Mashup节点的连接关系、用户节点与API节点的连接关系、Mashup节点与API节点的连接关系、Mashup节点与主题节点的连接关系、API节点与主题节点的连接关系;构建用户与Mashup之间的关系矩阵UM、用户与API之间的关系矩阵UA、Mashup与API之间的关系矩阵MA、Mashup与主题之间的关系矩阵MT、API与主题之间的关系矩阵AT;对于目标用户,建立以下目标函数并对其进行优化求解,得到网络关系模型中每个API节点的映射值,进而按映射值从大到小对API进行排序,并向目标用户推荐其未调用过的且排序最前的K个API,K为大于1的自然数;<maths num="0001"><math><![CDATA[<mrow><munder><mi>min</mi><mrow><mi>F</mi><mi>u</mi><mo>,</mo><mi>F</mi><mi>m</mi><mo>,</mo><mi>F</mi><mi>a</mi><mo>,</mo><mi>F</mi><mi>t</mi></mrow></munder><mfenced open = "{" close = "}"><mtable><mtr><mtd><mrow><msub><mi>&alpha;</mi><mn>1</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>u</mi></msub></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>m</mi></msub></munderover><msub><mi>UM</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><msup><mrow><mo>(</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub></msqrt></mfrac><mo>-</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>m</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>m</mi><mi>j</mi></mrow></msub></msqrt></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msub><mi>&alpha;</mi><mn>2</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>u</mi></msub></munderover><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>a</mi></msub></munderover><msub><mi>UA</mi><mrow><mi>i</mi><mi>k</mi></mrow></msub><msup><mrow><mo>(</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub></msqrt></mfrac><mo>-</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>a</mi><mi>k</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>a</mi><mi>k</mi></mrow></msub></msqrt></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mrow><mo>+</mo><msub><mi>&alpha;</mi><mn>3</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>m</mi></msub></munderover><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>a</mi></msub></munderover><msub><mi>MA</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><msup><mrow><mo>(</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>m</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>m</mi><mi>j</mi></mrow></msub></msqrt></mfrac><mo>-</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>a</mi><mi>k</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>a</mi><mi>k</mi></mrow></msub></msqrt></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msub><mi>&alpha;</mi><mn>4</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>m</mi></msub></munderover><munderover><mo>&Sigma;</mo><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>t</mi></msub></munderover><msub><mi>MT</mi><mrow><mi>j</mi><mi>p</mi></mrow></msub><msup><mrow><mo>(</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>m</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>m</mi><mi>j</mi></mrow></msub></msqrt></mfrac><mo>-</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>t</mi><mi>p</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>t</mi><mi>p</mi></mrow></msub></msqrt></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mrow><mo>+</mo><msub><mi>&alpha;</mi><mn>5</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>a</mi></msub></munderover><munderover><mo>&Sigma;</mo><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>t</mi></msub></munderover><msub><mi>AT</mi><mrow><mi>k</mi><mi>p</mi></mrow></msub><msup><mrow><mo>(</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>a</mi><mi>k</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>a</mi><mi>k</mi></mrow></msub></msqrt></mfrac><mo>-</mo><mfrac><mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>t</mi><mi>p</mi></msub><mo>)</mo></mrow></mrow><msqrt><msub><mi>d</mi><mrow><mi>t</mi><mi>p</mi></mrow></msub></msqrt></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msub><mi>&beta;</mi><mn>1</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>u</mi></msub></munderover><msup><mrow><mo>(</mo><mi>f</mi><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo><mo>-</mo><msubsup><mi>u</mi><mi>i</mi><mn>0</mn></msubsup><mo>)</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mrow><mo>+</mo><msub><mi>&beta;</mi><mn>2</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>m</mi></msub></munderover><mrow><mo>(</mo><mi>f</mi><mo>(</mo><msub><mi>m</mi><mi>j</mi></msub><mo>)</mo><mo>-</mo><msubsup><mi>m</mi><mi>j</mi><mn>0</mn></msubsup><mo>)</mo></mrow><mo>+</mo><msub><mi>&beta;</mi><mn>3</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>a</mi></msub></munderover><msup><mrow><mo>(</mo><mi>f</mi><mo>(</mo><msub><mi>a</mi><mi>k</mi></msub><mo>)</mo><mo>-</mo><msubsup><mi>a</mi><mi>k</mi><mn>0</mn></msubsup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msub><mi>&beta;</mi><mn>4</mn></msub><munderover><mo>&Sigma;</mo><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>n</mi><mi>t</mi></msub></munderover><msup><mrow><mo>(</mo><mi>f</mi><mo>(</mo><msub><mi>t</mi><mi>p</mi></msub><mo>)</mo><mo>-</mo><msubsup><mi>t</mi><mi>p</mi><mn>0</mn></msubsup><mo>)</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001050573060000011.GIF" wi="1973" he="813" /></maths>其中:u<sub>i</sub>表示第i个用户节点,m<sub>j</sub>表示第j个Mashup节点,a<sub>k</sub>表示第k个API节点,t<sub>p</sub>表示第p个主题节点,f(u<sub>i</sub>)为用户节点u<sub>i</sub>的映射值,f(m<sub>j</sub>)为Mashup节点m<sub>j</sub>的映射值,f(a<sub>k</sub>)为API节点a<sub>k</sub>的映射值,f(t<sub>p</sub>)为主题节点t<sub>p</sub>的映射值,UM<sub>ij</sub>为关系矩阵UM中第i行第j列的元素值,UA<sub>ik</sub>为关系矩阵UA中第i行第k列的元素值,MA<sub>jk</sub>为关系矩阵MA中第j行第k列的元素值,MT<sub>jp</sub>为关系矩阵MT中第j行第p列的元素值,AT<sub>kp</sub>为关系矩阵AT中第k行第p列的元素值,n<sub>u</sub>为用户集合中用户的总数量,n<sub>m</sub>为Mashup集合中Mashup的总数量,n<sub>a</sub>为API集合中API的总数量,n<sub>t</sub>为主题集合中主题的总数量,d<sub>ui</sub>为用户节点u<sub>i</sub>所连边的条数,d<sub>mj</sub>为Mashup节点m<sub>j</sub>所连边的条数,d<sub>ak</sub>为API节点a<sub>k</sub>所连边的条数,d<sub>tp</sub>为主题节点t<sub>p</sub>所连边的条数,α<sub>1</sub>~α<sub>5</sub>以及β<sub>1</sub>~β<sub>4</sub>分别为对应约束项的权值,<img file="FDA0001050573060000021.GIF" wi="190" he="83" /><img file="FDA0001050573060000022.GIF" wi="58" he="75" />和<img file="FDA0001050573060000023.GIF" wi="43" he="79" />分别为用户节点u<sub>i</sub>、Mashup节点m<sub>j</sub>、API节点a<sub>k</sub>以及主题节点t<sub>p</sub>的先验值且所有主题节点的先验值均为0;若目标用户对应为用户节点u<sub>i</sub>,则<img file="FDA0001050573060000024.GIF" wi="147" he="74" />其余用户节点的先验值均为0,且与用户节点u<sub>i</sub>相连的Mashup节点和API节点的先验值为1,其余Mashup节点和API节点的先验值为0,Fu为由所有用户节点映射值所组成的向量,Fm为由所有Mashup节点映射值所组成的向量,Fa为由所有API节点映射值所组成的向量,Ft为由所有主题节点映射值所组成的向量。
地址 310027 浙江省杭州市西湖区浙大路38号
您可能感兴趣的专利