[发明专利]一种基于词嵌入技术的API推荐方法有效

专利信息
申请号: 201911118507.6 申请日: 2019-11-15
公开(公告)号: CN110990003B 公开(公告)日: 2021-11-23
发明(设计)人: 文万志;张斌;姜文轩;李喜凯;顾晖;李跃华 申请(专利权)人: 南通大学
主分类号: G06F8/36 分类号: G06F8/36;G06F40/216
代理公司: 北京科家知识产权代理事务所(普通合伙) 11427 代理人: 徐思波
地址: 226019 *** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 嵌入 技术 api 推荐 方法
【权利要求书】:

1.一种基于词嵌入技术的API推荐方法,其特征在于,分为两大模块,其中一个是离线训练模块,另一个是在线推荐模块,其中,所述离线训练模块包括如下步骤:

步骤1、数据收集:收集两个目标数据集,其中一部分是Java SE8 的API文档,另一部分是Stack Overflow上关于Java API的问答数据集;

步骤2、对从Stack Overflow上获取的数据进行数据处理:将数据集拆分为问题数据集和答案数据集,收集问题数据集中的所有单词建立单词库,并预处理此单词库,对单词库中的数据进行词嵌入建模,生成单词模型;建立TF-IDF字典,对包含重要信息的单词设置高权重;

所述在线推荐模块包括如下步骤:

步骤3、通过UI界面收集开发者输入的问题,使用步骤2 得到的单词模型和TF-IDF字典对开发者输入的问题和问题数据集进行相似度计算,得到相似度较高的候选问题列表;使用LSA模型过滤候选问题列表,排除具有语义差别的问题;

步骤4、通过LDA模型提取主题词,把主题词设置为开发者此次提问的标签提供给开发者;在数据库中找到对应的API,组成候选API列表;最后通过API文档进一步完善API推荐信息,并把API推荐信息输出到UI界面;

步骤2的具体步骤如下:

2.1)把通过步骤1得到的问答数据集中的数据分为两个部分:问题数据集和答案数据集,分别命名为DataSet_Questions和DataSet_Answers;

2.2)收集DataSet_Questions中所有的单词建立一个单词库,命名为TextCorpus,然后对处理完成的单词库进行词嵌入建模;通过使用word2vec的方法把单词库中的每一个单词转换成单词矩阵;

2.3)使用TF-IDF值为计算单词的相似度加权;使用2.2)步骤得到的数据集TextCorpus计算出TextCorpus中的TF-IDF值;TF-IDF的计算又分为词频的计算和逆向文档频率的计算,其计算公式为:

其中,公式中表示目标词在语料中的出现次数,而分母表示在语料中所有单词的出现次数之和;D是数据集TextCorpus中的语料的总数;是包含目标词的数目;

步骤2.2)的具体步骤如下:

2.2.1)收集问题数据集中所有的单词,需要对单词做分词、删除停词和提取词根的自然语言处理;实现步骤中的三个条件,需按照以下步骤进行:

2.2.1.1)在遍历DataSet_Questions和DataSet_Answers中的数据时,首先需要对TextCorpus数据集进行分词操作,即把TextCorpus数据集中的每一句话分成n个独立的单词存储在列表当中,列表命名为List_word;

2.2.1.2)在2.2.1.1)结束之后,得到一个包含所有单词的列表,使用NTLK库中的corpus包来进行删除停词的操作,当遍历列表List_words时,判断列表中的数据是否在stopwords.words('english')当中;如果存在,则删除该停词;如果不存在,则把数据存入到一个新的列表当中,命名为List_outStopWords;

2.2.1.3)在删除停词的操作结束之后,进行提取词干的操作:对通过步骤2.2.1.2)的列表List_outStopWords再次进行遍历,通过对列表中的每个元素进行词干提取操作,把处理过的新列表命名为List_StemmerWords;

2.2.1.4)得到List_StemmerWords列表之后,通过python内置的set ( )方法来使列表去除重复元素,在对列表中含有的特殊符号的数据进行删除,最终得到单词库KeyCorpus;

2.2.2)在收集完问题数据集中的单词后,选择CBOW算法训练问题数据集;

2.2.3)确定了使用COBW算法之后,设置向量的维度;

步骤3的具体步骤如下:

3.1)通过UI界面收集开发者在开发过程中的提问,称为Query;然后把得到的Query通过步骤2.2.1.1)、步骤2.2.1.2)和步骤2.2.1.3)分别进行分词去重、删除停词和词根转化的处理;

3.2)得到处理过的Query后,通过步骤2.2)的词嵌入模型和步骤2.3)的TF-IDF来计算出与DataSet_Questions的相似度,并以相似度从大到小排列建立Top-N列表,问题数量为N;

3.3)在得到Top-N列表之后,使用LSA模型来排除与其他语义相差过大的问题项;使用LSA模型排除掉n条语义相差的问题,并把剩下的N-n条问题列表命名为DataSet_Question40;其中,LSA模型原理的计算公式为:

其中,是m×m阶矩阵;是半正定m×n阶对角矩阵;是的共轭转置矩阵;

步骤4的具体步骤如下:

4.1)使用LDA模型生成文档主题并将其处理为标签,帮助开发者更轻松地查找API;

4.2)使用步骤2.1)得到的DataSet_Answers,对DataSet_Answers做进一步处理,即从DataSet_Answers中进行数据抽取,抽取得到回答DataSet_Questions中问题的API;

4.3)使用步骤4.2)抽取得到DataSet_Questions中对应问题的API,建立关系型数据库,命名为DatabaseQA;通过数据库DatabaseQA,实现DataSet_SOAPI中DataSet_Questions和DataSet_Answers的映射,把这两个数据集联系起来,在数据库DatabaseQA中,得到某一问题中的单词,可以找到对应问题的序号和问题答案的API;

步骤4.2)的具体步骤如下:

4.2.1)对DataSet_Answers中的数据进行抽取,首先筛选出有效答案,在DataSet_SOAPI中也包含了问题项的答案项;此时判断答案项是否为空,如果是空的话,那么删除这条数据;

4.2.2)DataSet_SOAPI中的每条数据包含question属性和answer 属性,在answer后面有它的引用率,选择保留引用率排名前三的回答进行保留,其余的答案则进行删除;

4.2.3)在使用步骤4.2.2)保留了部分答案之后,使用Jsoup解析器进行API的抽取,从答案中提取所有包含code标记的代码段,提取具有驼峰写法的Java类API;

步骤4.3)的具体步骤如下:

4.3.1)步骤3.3)得到DataSet_Question40之后,在步骤4.3)中得到的DatabaseQA中找到对应的40个问题的答案,解析DataSet_SOAPI中DataSet_Question40的答案的HTML数据;

4.3.2)在HTML中code标签之间的部分和DataSet_Question40的回答者引用的API帮助文档的超链接中包含有API信息,提取API信息,计算API所在的问题平均相似度得到List_RankedAPI;得到的List_RankedAPI后,在数据集DataSet_SE中找到对应的API;

4.3.3)根据需要来设定出推荐API的条数。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南通大学,未经南通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201911118507.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top