面向自然语言形式基于讲义和网站的API信息检索方法技术

技术编号:21453975 阅读:30 留言:0更新日期:2019-06-26 04:47
本发明专利技术属于信息检索领域,公开了一种面向自然语言形式的基于讲义和Stack Overflow的API信息检索方法,构建API与知识项的API‑KI库;API‑KI库包含API与讲义段的API‑段对、API与问答帖的API‑Q&A对,并进行提取;对自然语言形式的提问进行分析,获取与问题对应的潜在API;使用相关性鉴别模型TDML对相关的API‑KI对进行鉴别;将潜在API与相关的API‑KI对匹配生成候选列表,并根据排序策略对候选列表进行降序排列,最后返回排序后的API‑KI列表作为问题的解答。本发明专利技术提出的检索方法整合了API讲义和SO的信息,有效提高了检索精度,并能为开发者提供更多更有用的API相关知识。

【技术实现步骤摘要】
面向自然语言形式的基于讲义和StackOverflow的API信息检索方法
本专利技术属于信息检索领域.,尤其涉及一种面向自然语言形式的基于讲义和StackOverflow的API信息检索方法。
技术介绍
目前,业内常用的现有技术是这样的:现有的方法大多基于全文检索,比如利用基于VSM的Lucene全文检索引擎包,直接根据自然语言问题在文档库中进行关键词的检索和匹配,以及使用基于神经网络的Word2Vec词向量模型可以很好的挖掘词之间的上下文关系,因此可以先将问题和文档分别进行词向量表示,再根据两者之间的相似性返回结果。除此之外,CK方法则利用了源码中软件领域的概念知识,通过提取API图谱进行API相关文档推荐。开发者们通常使用API来加速软件开发进程或提高软件质量。但随着API库规模的扩大和API数目的增加,开发者们往往会遇到不熟悉的API或是新的API库。此时,他们需要知道用什么API和怎样使用它们,而现实中一些学习资料和论坛比如API讲义和StackOverflow(SO)能够帮助查找和使用API。前者整合了用于解释API的文字描述和代码实例,并按编程任务进行分组。后者是一个供开发者们学习和分享编程知识的问答(Q&A)网站,汇集的大量问答帖可以被认为是群智的一种,作为官方文档(比如API讲义)的补充。有研究表明,API讲义能够帮助开发者们理解泛型编程环境中API的某些行为,而SO中的问答帖则倾向于对特定编程环境中的API用法进行解释,将两者结合能够提供更多类型的API相关信息。现有的方法不能为开发者们同时提供两种资料上的API相关信息检索。为了尽快的使用多种资料对API进行熟悉,开发者们不得不使用SO自带的搜索引擎检索所需的API或浏览相关的问答帖人工对有用的API进行识别,或是使用先进的API讲义推荐工具(例如FRAPT)查找API相关的讲义片段,两个过程往往不能同步进行。这样的检索方法不仅效率不高,而且将两种资料分开处理可能导致返回的结果不相关。另一个影响检索精度的因素是问题的质量。例如,SO的搜索引擎关于某个问题会返回大量问答帖,问题中包含的API名称和关键词有助于提升问答帖的相关度。但实际应用中,开发者们有可能对能够使用什么API不了解,也不知道具体的API名称,这种情况下,他们会将与API相关的问题用自然语言描述,而SO返回的问答帖和API就需要人工进一步筛选。综上所述,现有技术存在的问题是:(1)现有的方法不能为开发者们同时提供两种资料上的API相关信息检索。比如FRAPT方法只提供API讲义的推荐,或是根据StackOverflow的搜索引擎进行检索。检索方法不仅效率不高,而且将两种资料分开处理可能导致返回的结果不相关。(2)现有的方法没有深入挖掘提问语义层的信息,基于关键字匹配的方法容易造成大量有用信息的丢失,最终导致检索精度的损失。特别是在自然语言形式下,提问可能并不直接包含API名称,直接计算问题和文档之间关键词相关度的方法如VSM只能利用了极少的文字信息。(3)现有的方法不能构建同时包含API讲义和StackOverflow上问答帖知识项库。两种信息之间不但具有互补性,例如讲义提供了更多关于类型,功能等概念类型的信息,而StackOverflow上公布了更多关于控制流、结构和代码示例等信息,而且具有高度的异构性。已有的方法不能将信息进行融合,只能判断单一数据来源与API的相关性,构造单一的知识项库,不能为API提供更全面,准确的信息推荐。解决上述技术问题的难度:对于自然语言形式的提问,如何对语义层次的信息进行深入挖掘,特别是在问题中并未显示提及API名称时,仅根据提问者关于功能或其他特征的描述,得到潜在的相关API。如何同时建立API与两种异构知识项的相关关系。由于讲义和StackOverflow网站上能够较小重叠的对API的相关问题进行解答,意味着两者融合能够为提问的开发者更丰富更全面的API相关信息,因此需要将两种信息来源的知识项作为整体,在同一个检索空间内进行推荐。API相关信息推荐的结果往往是相关文档按照排序结果,依次进行推荐。排序策略对推荐的准确率有着不可忽视的影响,所以应考虑如何设计排序策略使其更好的刻画文档的相似程度。解决上述技术问题的意义:能够更好地理解开发者自然语言形式的关于API的提问,从问题中挖掘语义层次的潜在API,并将其作为连接问题与候选文档库之间相似性的重要中间项。融合了两种API相关信息的知识项,不仅包含API讲义知识,还包含了来自StackOverflow网站上的与API相关的问答帖知识,包含这两类信息的检索空间能够考虑到多种来源上的API相关信息,对知识项进行特征提取,主成分分析,以及度量学习,能够使两者充分融合,更好的解决开发者对于API的疑问。排序策略能够刻画问题与API,问题与知识项,API与知识项三者之间的相似度关系,通过API建立问题与知识项之间的相似度的方法,能够消除两者之间的语义鸿沟。合理的排序规则能够根据提问筛选出更加相关的知识项信息,使得相关度越高的信息排在越靠前的位置,也越早被推荐,从而提升推荐的准确率。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种面向自然语言形式的基于讲义和StackOverflow的API信息检索方法。本专利技术基于迁移的深度度量学习同时利用API讲义和SO问答帖两种不同的学习资料,不仅提高了检索准确率,还能为开发者提供多种API相关的信息。本专利技术是这样实现的,一种面向自然语言形式问题的基于讲义和StackOverflow的API相关信息检索方法包括以下步骤:步骤一,构建API与知识项API-KI的库;API-KI库包含API与讲义段API-段对、API与问答帖API-Q&A知识,并进行提取;步骤二,对自然语言形式的提问进行分析,获取与问题相应的潜在API;步骤三,使用相关性鉴别模型TDML对相关的API-KI对进行鉴别;步骤四,使用步骤二的潜在API在相关的API-KI对中挑选并生成候选列表,候选列表由生成的潜在API和相关的API-KI对匹配得到,选择API与潜在API相同的相关API-KI对作为问题的候选结果。进一步,步骤一中,从API讲义中提取API-段对包括:对API讲义划分为多个段,每段内容紧密相关并集中于某一个主题;采用相同的分段策略,提取<href>标签中的内容来获取该段的API,将API与对应段相连结为API-段对;对于没有被<href>标签链接的API,将段打散为多个标记,并使API与每个词相匹配,从匹配的上下文中根据关键词查找API,同样生成API-段对;从SO问答帖中提取API-Q&A对包括:根据问题的标签收集与API相关的问答帖;构造正例时,挑选的问答对中所提问题包括至少三个回答且有一个被接受的回答作为最终结果;被接受的问题包含代码;将回答中的代码进行分词处理,并与该问题标签类的讲义中的各API进行匹配,得到问答帖对应的API;正例API-Q&A对标记为相关。未被接受的答案中的API由于不能很好地解决该问题,API与问答对组成API-Q&A对的负例;构造负例时,收集含有未接受回答的问题;每个未接受回本文档来自技高网
...

【技术保护点】
1.一种面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法,其特征在于,所述面向自然语言形式问题的基于讲义和Stack Overflow的API相关信息检索方法包括以下步骤:步骤一,构建API与知识项的API‑KI库;API‑KI库包含API与讲义段的API‑段对、API与问答帖的API‑Q&A对,并进行提取;步骤二,对自然语言形式的提问进行分析,获取与问题相应的潜在API;步骤三,使用相关性鉴别模型TDML对相关的API‑KI对进行鉴别;步骤四,将潜在API与相关的API‑KI对匹配生成候选列表,并根据排序策略对候选列表进行降序排列,最后返回排序后的API‑KI列表作为问题的解答。

【技术特征摘要】
1.一种面向自然语言形式问题的基于讲义和StackOverflow的API相关信息检索方法,其特征在于,所述面向自然语言形式问题的基于讲义和StackOverflow的API相关信息检索方法包括以下步骤:步骤一,构建API与知识项的API-KI库;API-KI库包含API与讲义段的API-段对、API与问答帖的API-Q&A对,并进行提取;步骤二,对自然语言形式的提问进行分析,获取与问题相应的潜在API;步骤三,使用相关性鉴别模型TDML对相关的API-KI对进行鉴别;步骤四,将潜在API与相关的API-KI对匹配生成候选列表,并根据排序策略对候选列表进行降序排列,最后返回排序后的API-KI列表作为问题的解答。2.如权利要求1所述的面向自然语言形式问题的基于讲义和StackOverflow的API相关信息检索方法,其特征在于,步骤一中,从API讲义中提取API-段对包括:对API讲义划分为多个段,每段内容紧密相关并集中于某一个主题;采用相同的分段策略,提取<href>标签中的内容来获取该段的API,将API与对应段相连结为API-段对;对于没有被<href>标签链接的API,将段打散为多个标记,并使API与每个词相匹配,从匹配的上下文中根据关键词查找API,同样生成API-段对;从SO问答帖中提取API-Q&A对包括:根据问题的标签收集与API相关的问答帖;构造正例时,挑选的问答对中所提问题包括至少三个回答且有一个被接受的回答作为最终结果;被接受的问题包含代码;将回答中的代码进行分词处理,并与该问题标签类的讲义中的各API进行匹配,得到问答帖对应的API;正例API-Q&A对标记为相关。未被接受的答案中的API由于不能很好地解决该问题,API与问答对组成API-Q&A对的负例;构造负例时,收集含有未接受回答的问题;每个未接受回答的分数小于0;提取未接受回答中的API,并与问答对组成API-Q&A对的负例;随机选取的负例数目和正例相同,负例API-Q&A对标记为不相关。3.如权利要求1所述的面向自然语言形式问题的基于讲义和StackOverflow的API相关信息检索方法,其特征在于,步骤二中,先将问题转化为数个潜在的API,再用API检索相关文档;使用Javadoc对自然语言问题进行分析并转化为潜在的API,具体包括:Jsoup从在线文档中提取API相应的Javadoc;提取出的API规范包括API全称和API描述;Word2Vec对问题、API全称、API描述三种语料进行训练,得到语料库中每个词的词向量;再分别计算各文档中向量的均值,整个文档的向量,vi表示第i个文档向量;vq作为自然语言形式问题的向量;和分别作为第i个API全称和API描述;表示vq和之间的余弦相似性,表示vq和之间的余弦相似性;将和降序排列,选择API描述和API全称相似性排名前m的API作为初始的API候选,分别用APId和APIn表示;同时出现在这两个集合中的API更有可能成为潜在的API;将API分为子集1、子集2、子集3,然后使用公式(1)为每个候选API打分;子集1为同时出现在APId和APIn中的API,子集2为只出现在的APId中的API,子集3为只出现在APIn中的API;η作为调整因子用来确保子集1的分数要比其他子集高;η为0.1;公式(1)遵循两个规则:子集1中的API要比其他子集中的API排名高;相似度值高的API要比相似度值低的API排名更靠前;对三个子集中的所有API的分数进行排序,选择m个最高的分数对应的API作为潜在API列表;m值为20。4.如权利要求1所述的面向自然语言形式问题的基于讲义和StackOverflow的API相关信息检索方法,其特征在于,步骤三中,基于迁移的深度度量学习方法TDML对相关的API-KI对进行鉴别包括:为API-讲义段对的训练集,xiT为第i个带标签的API-讲义段对样本,NT是API-KI库中API-讲义段对的数目;为API-Q&A对的训练集,包含NS的API-Q&A对,其中xiS为第i个带标签的API-Q&A...

【专利技术属性】
技术研发人员:荆晓远吴迪黄鹤谢宇姚永芳訾璐李云鹤
申请(专利权)人:广东石油化工学院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1