[发明专利]一种基于软件开发问答网站的API教程汇编生成方法有效
| 申请号: | 202010822260.2 | 申请日: | 2020-08-16 |
| 公开(公告)号: | CN112100314B | 公开(公告)日: | 2022-07-22 |
| 发明(设计)人: | 彭鑫;刘名威 | 申请(专利权)人: | 复旦大学 |
| 主分类号: | G06F16/31 | 分类号: | G06F16/31;G06F16/33;G06F16/35;G06F40/137;G06Q50/20 |
| 代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
| 地址: | 200433 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 软件 开发 问答 网站 api 教程 汇编 生成 方法 | ||
1.一种基于软件开发问答网站的API教程汇编生成方法,其特征在于,以概念模型以及各类API问题场景类型所需的关键信息和API角色定义为基础,从软件开发问答网站中的API问题讨论中抽取API问题场景实例以及描述所需的关键信息的句子和扮演相关角色的API,从而形成API教程汇编所需要的API问题场景结构化描述;
首先,通过对Stack Overflow上带有Java或Android标签的API相关问题讨论进行采样分析,识别并确定8种典型的API问题场景类型,即功能实现、非功能性改进、功能性改进、错误处理、原理性解释、API比较、替代解决方案、API使用方式学习;
同时,通过采样分析确定总体概念模型;其中,每个API讨论都包含一个问题和若干个答案;每个API问题场景类型都定义一组相关的API角色以及所需要的关键信息;抽取自问题描述的每一个API问题场景实例都属于某个API问题场景类型的实例,其中包含一组描述性句子以及相关的API;抽取自问题的描述性句子提供相应的API问题场景类型所需要的关键信息描述;抽取自问题和答案的API提供相应的API问题场景类型所需要的相关API角色;
针对8种典型的API问题场景类型,分别识别出各自所需要的关键信息,共17种,具体如下:
功能实现:所要实现的功能;
非功能性改进:已实现的功能、当前的次优实现方案、期望的改进;
功能性改进:期待结果、实际结果、当前的不正确实现方案;
错误处理:错误类型、错误出现上下文、当前有问题的实现;
原理性解释:原理性问题;
API比较:比较对象、比较场景;
替代解决方案:目前解决方案、期待解决方案描述;
API使用方式学习:使用对象、使用场景;
针对8种典型的API问题场景类型,识别出5种典型的API角色,具体为:上下文API、所建议的API、目前使用的API、错误API、异常类型API。
2.根据权利要求1所述的API教程汇编生成方法,其特征在于,具体步骤如下:
(1)API识别与API问题讨论筛选;
从所有候选的问题讨论中筛选出与目标API库中的API相关的问题讨论;筛选依据为:讨论内容中提及的目标API库中的API,以及问题讨论中是否包含被接受的答案、问题讨论的整体评分;
(2)问题场景及关键信息识别;
对于每一个筛选得到的API问题讨论进行分析,确认其中包含哪些问题场景,同时确定问题中的每个句子属于哪一类关键信息;为此,需要对问题陈述中的文本内容进行预处理,预处理包括分词分句、将代码片段替换为占位符、将句子中的API元素替换为特殊符号;
针对所定义的8种问题场景类型,通过人工标注API问题形成训练数据,利用这些训练数据为每一种问题场景类型训练一个二元文本分类器;给定一个API问题,依次使用每一种问题场景类型分类器对其进行判定,确定是否包含对应类型的问题场景;同一个API问题可以同时包含多种类型的问题场景;
针对所定义的17种关键信息类型,通过人工标注API问题中的句子形成训练数据,利用这些训练数据为每一种关键信息类型训练一个二元文本分类器;给定一个API问题中的每一个句子,根据问题场景类型分类器的判断结果,依次使用API问题包含的问题场景类型对应的每一种关键信息类型分类器对其进行判定,确定是否包含对应类型的关键信息;同一个API问题句子可以同时包含多种类型的关键信息;
(3)基于聚类的问题场景抽取;
针对问题中包含关键信息的句子,通过聚类从问题中抽取出包含的问题场景,每个问题场景由问题中的一到多个句子来描述;为此,根据句子提供的关键信息类型,将属于相同问题场景类型的句子聚合到一起,组成初始的句子团簇;同一个句子可能同时包含多种类型的关键信息,所有可能会同时出现在多个句子团簇中;
API问题可能同时包含多个属于相同类型的问题场景,需要对句子团簇进行进一步细化;对于每一个句子团簇,首先将提供相同关键信息类型的句子使用DBSCAN聚类算法进行聚类,将一个句子团簇细化成多个句子团簇,每个句子团簇对应聚类的一个结果;聚类算法中涉及计算给定的两个句子的相似度;为此,对于每个句子预先用词向量平均技术将其编码为相同的长度的向量表示,然后两个句子的相似度计算转换成两个句子对应向量表示的余弦相似度计算;剩下的句子团簇会被迭代合并,每次合并两个最相似的不包含相同关键信息类型的句子团簇,直到只剩下一个句子团簇或者没有能合并的团簇为止;两个句子团簇的相似度等于其中包含的两个团簇中所有可能匹配的句子对的最大相似度,每个剩下的句子团簇就对应抽取出来的问题场景;
(4)API角色识别
针对每个问题场景进行分析,确定问题场景相关的API及其扮演的相关角色;为此,对于每个问题场景,首先从其对应问题和接受答案识别出的API中筛选出相关的API;如果API满足以下两个条件之一,那么其与问题场景相关:API直接出现为问题场景提供的关键信息的句子中,API描述文本的向量表示与问题场景的所有描述文本的向量表示余弦相似度大于阈值0.8;
(5)API教程汇编生成;
将每个抽取出的问题场景及其来源的问题和接受答案组织成一篇API教程,将所有API教程根据相关的API和问题场景类型组织成API教程的汇编;每篇API教程包括以下信息:问题场景类型、问题标题、提供了关键信息的描述性句子及其关键信息类型、相关API及其扮演的角色、接受答案摘要、原始的问题链接、相关的问题场景、从相同问题中抽取出的问题场景;所有的API教程按照三级目录进行组织:一级目录是API,二级目录是问题场景与一级目录API相关的所有问题场景的类型列表;三级目录是所有与一级目录API相关的属于二级目录类型的问题场景对应的API教程。
3.根据权利要求2所述的API教程汇编生成方法,其特征在于,步骤(4)中,每个相关的API的角色按照以下规则进行判定:
1)上下文API:API出现在被分类为所要实现的功能、已实现的功能、期待结果、实际结果、原理性问题、比较对象、目前解决方案、使用对象的描述性句子中;
2)目前使用的API:API出现在被分类为当前的次优实现方案或当前的不正确实现方案的描述性句子中;
3)错误API:API出现在被分类为错误出现上下文、当前有问题的实现的描述性句子中;
4)错误类型:API出现在被分类为错误类型的描述性句子中并且名字中包含“Error”或者“Exception”;
5)所建议的API:API只出现在答案中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010822260.2/1.html,转载请声明来源钻瓜专利网。





