CN112100314B - 一种基于软件开发问答网站的api教程汇编生成方法 - Google Patents
一种基于软件开发问答网站的api教程汇编生成方法 Download PDFInfo
- Publication number
- CN112100314B CN112100314B CN202010822260.2A CN202010822260A CN112100314B CN 112100314 B CN112100314 B CN 112100314B CN 202010822260 A CN202010822260 A CN 202010822260A CN 112100314 B CN112100314 B CN 112100314B
- Authority
- CN
- China
- Prior art keywords
- api
- question
- scene
- sentence
- key information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000018109 developmental process Effects 0.000 claims description 18
- 239000013598 vector Substances 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 13
- 238000012549 training Methods 0.000 claims description 13
- 238000012216 screening Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000012935 Averaging Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000005070 sampling Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 2
- 238000007670 refining Methods 0.000 claims 1
- 238000000605 extraction Methods 0.000 abstract description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000013145 classification model Methods 0.000 description 1
- 238000013434 data augmentation Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/313—Selection or weighting of terms for indexing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3347—Query execution using vector based model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/137—Hierarchical processing, e.g. outlines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Educational Technology (AREA)
- Tourism & Hospitality (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- Educational Administration (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于智能化软件开发技术领域,具体为一种基于软件开发问答网站的API教程汇编生成方法。本发明根据软件开发问答网站中API相关的讨论进行分析,识别其中所蕴含的API问题场景和API及其所扮演的角色;根据对应API问题场景模板中的关键信息类型对所涉及的各个句子进行分类,形成API问题场景的结构化描述;在此基础上,对每个API将相关的问题场景根据其结构化描述进行组织,形成一个API教程汇编,为API在不同问题场景下的问题解答及解决方案提供指导。本发明将软件开发问答网站中的API相关讨论按照问题场景进行细粒度和结构化抽取,利用抽取得到的问题场景结构化描述提供API教程汇编,使得相关讨论中所蕴含的API知识能够得到有效利用。
Description
技术领域
本发明属于智能化软件开发技术领域,具体涉及一种API教程汇编生成方法。
背景技术
许多软件开发任务都需要利用API来完成,因此学习并掌握各种API库(如JDK、Android)是软件开发人员的基本技能之一。虽然API参考文档以及API教程等文档为API的定义和使用提供了相关说明,但是这些文档中所描述API知识经常很难被开发人员有效利用。此外,开发人员在日常的软件开发过程中还会碰到各种API文档中没有涉及的问题,需要相关的问题解释或者解决方案建议。因此,API相关的问题讨论在软件开发问答网站(如Stack Overflow)中占据着相当的比例。然而,软件开发问答网站往往只提供非常粗粒度的描述标签(如所涉及的编程语言)以及有限的检索支持(如基于关键字的文本检索),使得这些API问题讨论难以在开发人员需要时被有效收集和利用。
软件开发问答网站中的API讨论大多都是围绕特定的API问题场景进行的。例如,功能实现问题场景关注于实现特定功能所需要的API、功能性(非功能性)改进问题场景关注于当前基于特定API的实现方案分别如何从功能性(非功能性)的角度进行改进、错误处理问题场景关注于当前基于特定API的实现方案中所出现的错误(如异常)如何处理等。如果能够将软件开发问答网站中API相关的讨论中的API问题场景陈述抽取出来并针对每个API以一种结构化的方式进行组织,那么就可以形成基于问题讨论的API教程汇编,使得软件开发问答网站中所蕴含的API知识能够得到有效利用。
发明内容
本发明的目的在于提供一种能够使相关讨论中所蕴含的API知识得到有效利用,且成本开销低的基于软件开发问答网站的API教程汇编生成方法。
本发明针对软件开发问答网站(如Stack Overflow)中与给定的API库(如JDK、Android)中的API相关的讨论(包括问题及其一系列回答)进行分析,识别其中所蕴含的API问题场景(包括功能实现、非功能性改进、功能性改进、错误处理、原理性解释、API比较、替代解决方案、API使用方式学习)以及所涉及的API及其所扮演的角色,同时根据对应API问题场景模板中的关键信息类型定义对所涉及的各个句子进行分类,从而形成一个API问题场景的结构化描述。在此基础上,本发明针对每个API将相关的问题场景根据其结构化描述进行组织,形成一个API教程汇编,提供该API在不同问题场景下的问题解答及解决方案指导。
本方明发明将软件开发问答网站中的API相关讨论按照问题场景进行细粒度和结构化抽取,利用抽取得到的问题场景结构化描述提供API教程汇编,使得相关讨论中所蕴含的API知识能够得到有效利用。
具体地,本发明通过对Stack Overflow上带有Java或Android标签的API相关问题讨论(问题里面或者答案里面出现了JDK或者Android API)进行采样分析,识别并确定了8种典型的API问题场景类型,即功能实现、非功能性改进、功能性改进、错误处理、原理性解释、API比较、替代解决方案、API使用方式学习。同时,还通过采样分析确定了总体概念模型(如图1所示)。其中,每个API讨论都包含一个问题和若干个答案;每个API问题场景类型都定义一组相关的API角色以及所需要的关键信息;抽取自问题描述的每一个API问题场景实例都属于某个API问题场景类型的实例,其中包含一组描述性句子以及相关的API;抽取自问题的描述性句子提供了相应的API问题场景类型所需要的关键信息描述;抽取自问题和答案的API提供了相应的API问题场景类型所需要的相关API角色。
针对8种典型的API问题场景类型,分别识别出各自所需要的关键信息,共17种,具体如下:
功能实现:所要实现的功能;
非功能性改进:已实现的功能、当前的次优实现方案、期望的改进;
功能性改进:期待结果、实际结果、当前的不正确实现方案;
错误处理:错误类型、错误出现上下文、当前有问题的实现;
原理性解释:原理性问题;
API比较:比较对象、比较场景;
替代解决方案:目前解决方案、期待解决方案描述
API使用方式学习:使用对象、使用场景。
针对8种典型的API问题场景类型,识别出5种典型的API角色,具体为:上下文API、所建议的API、目前使用的API、错误API、异常类型API。
本发明所提出的API教程汇编生成方法,以上述所定义的概念模型以及各类API问题场景类型所需的关键信息和API角色定义为基础,从软件开发问答网站中的API问题讨论中抽取API问题场景实例以及描述所需的关键信息的句子和扮演相关角色的API,从而形成API教程汇编所需要的API问题场景结构化描述。具体步骤如下。
(1)API识别与API问题讨论筛选。从所有候选的问题讨论中筛选出与目标API库中的API相关的问题讨论。筛选依据除了讨论内容中提及的目标API库中的API之外,还可以考虑问题讨论中是否包含被接受的答案、问题讨论的整体评分等。
(2)问题场景及关键信息识别。针对每一个筛选得到的API问题讨论进行分析,确认其中包含哪些问题场景,同时确定问题中的每个句子属于哪一类关键信息。为此,需要对问题陈述中的文本内容进行预处理,预处理包括分词分句、将代码片段替换为占位符、将句子中的API元素替换为特殊符号等;
针对所定义的8种问题场景类型,通过人工标注API问题形成训练数据,利用这些训练数据为每一种问题场景类型训练一个二元文本分类器。给定一个API问题,依次使用每一种问题场景类型分类器对其进行判定,确定是否包含对应类型的问题场景。同一个API问题可以同时包含多种类型的问题场景;
针对所定义的17种关键信息类型,通过人工标注API问题中的句子形成训练数据,利用这些训练数据为每一种关键信息类型训练一个二元文本分类器。给定一个API问题中的每一个句子,基于问题场景类型分类器的判断结果,依次使用API问题包含的问题场景类型对应的每一种关键信息类型分类器对其进行判定,确定是否包含对应类型的关键信息。同一个API问题句子可以同时包含多种类型的关键信息。
(3)基于聚类的问题场景抽取。针对问题中包含关键信息的句子,我们通过聚类从问题中抽取出包含的问题场景,每个问题场景由问题中的一到多个句子来描述。为此,根据句子提供的关键信息类型,将属于相同问题场景类型的句子聚合到一起,组成初始的句子团簇。同一个句子可能同时包含多种类型的关键信息,所有可能会同时出现在多个句子团簇中。API问题可能同时包含多个属于相同类型的问题场景,需要对句子团簇进行进一步细化。对于每一个句子团簇,首先将提供相同关键信息类型的句子使用DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法[1]进行聚类,将一个句子团簇细化成多个句子团簇,每个句子团簇对应聚类的一个结果。聚类需要计算给定的两个句子的相似度,为此,每个句子预先用词向量平均技术来将其编码为相同的长度的向量表示,然后两个句子的相似度计算就可以转换成两个句子对应向量表示的余弦相似度计算。剩下的句子团簇会被迭代合并,每次合并两个最相似的不包含相同关键信息类型的句子团簇,直到只剩下一个句子团簇或者没有能合并的团簇为止。两个句子团簇的相似度等于其中包含的两个团簇中所有可能匹配的句子对的最大相似度,每个剩下的句子团簇就对应抽取出来的问题场景。
(4)API角色识别。针对每个问题场景进行分析,确定问题场景相关的API及其扮演的相关角色。为此,对于每个问题场景,首先从其对应问题和接受答案识别出的API中筛选出相关的API。如果API满足以下两个条件之一,那么其与问题场景相关:API直接出现为问题场景的提供关键信息的句子中,API描述文本的向量表示与问题场景的所有描述文本的向量表示余弦相似度大于阈值(阈值通过在标注数据上调试确定,例如取为0.8)。根据预先调研得到的关键信息类型和API相关角色关系,每个相关的API的角色按照以下规则进行判定:
1)上下文API:API出现在被分类为所要实现的功能、已实现的功能、期待结果、实际结果、原理性问题、比较对象、目前解决方案、使用对象的描述性句子中;
2)目前使用的API:API出现在被分类为当前的次优实现方案或当前的不正确实现方案的描述性句子中;
3)错误API:API出现在被分类为错误出现上下文、当前有问题的实现的描述性句子中;
4)错误类型:API出现在被分类为错误类型的描述性句子中并且名字中包含“Error”或者“Exception”;
5)所建议的API:API只出现在答案中。
(5)API教程汇编生成。每个抽取出的问题场景及其来源的问题和接受答案会被组织成一篇API教程,所有API教程根据相关的API和问题场景类型被组织成API教程的汇编。每篇API教程包括了以下信息:问题场景类型、问题标题、提供了关键信息的描述性句子及其关键信息类型、相关API及其扮演的角色、接受答案摘要、原始的问题链接、相关的问题场景、从相同问题中抽取出的问题场景。所有的API教程按照三级目录进行组织:一级目录是API;二级目录是问题场景与一级目录API相关的所有问题场景的类型列表;三级目录是所有与一级目录API相关的属于二级目录类型的问题场景对应的API教程。
本发明方法的特点如下:
(1)通过针对软件开发问答网站上API相关问题讨论的分析,确定了描述API问题场景及其相关概念的高层模型图,以及8种典型问题场景类型和准确描述问题场景需要的17种典型关键信息类型,还有5种典型的API角色。为将API相关讨论中蕴含的问题场景进行规范化结构化提供了指导;
(2)设计了一种基于文本分类和聚类技术从API相关讨论中自动抽取问题场景实例的方法,以及基于规则自动识别问题场景实例的相关API的角色的方法,从而实现了对API相关讨论按照问题场景进行细粒度和结构化抽取;
(3)设计了一种基于软件开发问答网站为给定API库生成API教程汇编的方法。能用非常低的成本为给定API库生成大规模的API教程汇编,使得相关讨论中所蕴含的API知识能够得到有效利用;
(4)设计了一种围绕着API以及问题场景的API教程汇编形式,设计的API教程汇编组织形式,允许开发者从API、问题场景类型、相关问题场景等不同方面去找到有用的API讨论。
附图说明
图1为本发明的所涉及的问题场景及其相关概念的高层概念模型图。
具体实施方式
选择Stack Overflow软件开发问答文档为API讨论来源,针对Java的API库SWT,利用本发明方法生成API库教程汇编,具体实施例如下。
(1)针对Java的API库SWT,利用一个静态解析工具JavaParser来分析他们的源代码来获取API库的API列表。然后利用这个API库和对应的标签带有SWT的2,522个StackOverflow讨论帖子作为生成API库的API教程的输入。
(2)不完整的代码片段中的API识别和链接。Stack Overflow上的代码片段常常是不完整的,而不完整的代码片段无法编译,所以很难获取其中涉及的API和API全限定名。因此,本发明使用目前最先进的针对不完整代码片段的API链接技术Baker[2]。Baker需要一个构建好的API知识库作链接的基础,本发明收集Maven上的32,238个第三方库加上Android27和JDK 1.8,构建一个包含946,325个类和9,711,745个方法的API知识库支持链接。
(3)问题类型分类器和关键信息类型分类器。本发明从Stack Overflow上按照得分从高到低进行采样一定数目的问题,针对问题和问题里面的句子进行标注。对于问题标注其包含的问题场景类型,一个问题可能会同时打上多个问题场景类型。对于问题里面的句子,如果其包含某种关键信息,就给其打上对应关键信息类型的标注,一个句子可能会同时标注为多个关键信息的类型。经过标注,获取了标注数据。然后使用FaceBook开源的文本分类器实现FastText来训练文本分类器。FastText是一种Facebook AI Research在2016年开源的一个文本分类器。 其特点就是相当高效快速,相对于其它文本分类模型,如SVM,Logistic Regression和neural network等模型,FastText在保持分类效果的同时,大大缩短了训练时间,适合工业部署使用。
本发明为每种问题场景类型训练一个二元分类器,判断给定的问题是否包含对应的问题场景类型;本发明为每种关键信息类型训练一个二元分类器,判断给定的句子是否提供了对应类型的关键信息。同时,利用文本数据增强技术(EDA)[3]来自动扩充目前的标注数据,包括同义词替换、随机***、随机交换、随机删除等四种方法,增强模型的泛化能力防止过拟合。
(4)文本利用词向量平均的方式转化为向量。本发明收集与Stack Overflow所有带java标签的问题及其答案作为语料,然后使用谷歌的Word2Vec的技术训练一个词向量的词表。对于每个单词,都能利用这个词表转化成为固定长度的向量表示,并且语义相近的词的词向量表示的余弦相似度较高。之后对于任何一段文本,都通过将这个文本表示为词袋,然后取词袋中的每个词的对应词向量进行平均,最后得到整个文本的向量表示,整个文本的向量表示蕴含了整段文本的语义信息,可以直接用来计算两端文本的语义相似度或用来作为机器学习深度学习的模型训练的特征输入。
(5)文本聚类。聚类算法使用DBSCAN,是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。具体的聚类算法实现来自于一个Python的机器学习库Scikit-Learn。
作为实施例的结果,我们从2,522个Stack Overflow讨论帖子中,自动生成了一个包括5,607个API教程的API库教程汇编,覆盖了这个API库中超过1000个API。通过对生成的API教程进行采样然后在准确性、易读性、相关性、易用性等指标上进行人工评估,评估结果证明了我们生成的API教程的内容相关而且准确、容易理解、易于使用。
参考文献
[1] Schubert E, Sander J, Ester M, et al. DBSCAN revisited,revisited: why and how you should (still) use DBSCAN. ACM Transactions onDatabase Systems (TODS), 2017, 42(3): 1-21.
[2] Subramanian S, Inozemtseva L, Holmes R. Live API documentation.Proceedings of the 36th International Conference on Software Engineering.2014: 643-652.
[3] Wei J, Zou K. Eda: Easy data augmentation techniques for boostingperformance on text classification tasks. arXiv preprint arXiv:1901.11196,2019.。
Claims (3)
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只出现在答案中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010822260.2A CN112100314B (zh) | 2020-08-16 | 2020-08-16 | 一种基于软件开发问答网站的api教程汇编生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010822260.2A CN112100314B (zh) | 2020-08-16 | 2020-08-16 | 一种基于软件开发问答网站的api教程汇编生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100314A CN112100314A (zh) | 2020-12-18 |
CN112100314B true CN112100314B (zh) | 2022-07-22 |
Family
ID=73753682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010822260.2A Active CN112100314B (zh) | 2020-08-16 | 2020-08-16 | 一种基于软件开发问答网站的api教程汇编生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100314B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308486A (zh) * | 2008-03-21 | 2008-11-19 | 北京印刷学院 | 试题自动生成***及方法 |
CN102609512A (zh) * | 2012-02-07 | 2012-07-25 | 北京中机科海科技发展有限公司 | 异构信息知识挖掘与可视化分析***及方法 |
CN105117398A (zh) * | 2015-06-25 | 2015-12-02 | 扬州大学 | 一种基于众包的软件开发问题自动应答方法 |
CN105608232A (zh) * | 2016-02-17 | 2016-05-25 | 扬州大学 | 一种基于图形数据库的bug知识建模方法 |
CN106407208A (zh) * | 2015-07-29 | 2017-02-15 | 清华大学 | 一种城市管理本体知识库的构建方法及*** |
CN107273295A (zh) * | 2017-06-23 | 2017-10-20 | 中国人民解放军国防科学技术大学 | 一种基于文本混乱度的软件问题报告分类方法 |
CN109739994A (zh) * | 2018-12-14 | 2019-05-10 | 复旦大学 | 一种基于参考文档的api知识图谱构建方法 |
CN109933660A (zh) * | 2019-03-25 | 2019-06-25 | 广东石油化工学院 | 面向自然语言形式的基于讲义和Stack Overflow的API信息检索方法 |
WO2019137033A1 (zh) * | 2018-01-12 | 2019-07-18 | 扬州大学 | 面向软件缺陷的领域知识图谱自动化构建方法 |
CN110210413A (zh) * | 2019-06-04 | 2019-09-06 | 哈尔滨工业大学 | 一种基于深度学习的多学科试卷内容检测与识别***及方法 |
CN110309300A (zh) * | 2018-08-23 | 2019-10-08 | 北京慧经知行信息技术有限公司 | 一种识别理科试题知识点的方法 |
CN110866123A (zh) * | 2019-11-06 | 2020-03-06 | 浪潮软件集团有限公司 | 基于数据模型构建数据图谱的方法及构建数据图谱的*** |
CN110874431A (zh) * | 2019-11-20 | 2020-03-10 | 云南财经大学 | 基于JAVA Doc知识图谱的多维评估推荐方法 |
CN111538807A (zh) * | 2020-04-16 | 2020-08-14 | 上海交通大学 | 基于Stack Overflow网站获取Web API知识的***和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528612B2 (en) * | 2017-02-21 | 2020-01-07 | International Business Machines Corporation | Processing request documents |
-
2020
- 2020-08-16 CN CN202010822260.2A patent/CN112100314B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308486A (zh) * | 2008-03-21 | 2008-11-19 | 北京印刷学院 | 试题自动生成***及方法 |
CN102609512A (zh) * | 2012-02-07 | 2012-07-25 | 北京中机科海科技发展有限公司 | 异构信息知识挖掘与可视化分析***及方法 |
CN105117398A (zh) * | 2015-06-25 | 2015-12-02 | 扬州大学 | 一种基于众包的软件开发问题自动应答方法 |
CN106407208A (zh) * | 2015-07-29 | 2017-02-15 | 清华大学 | 一种城市管理本体知识库的构建方法及*** |
CN105608232A (zh) * | 2016-02-17 | 2016-05-25 | 扬州大学 | 一种基于图形数据库的bug知识建模方法 |
CN107273295A (zh) * | 2017-06-23 | 2017-10-20 | 中国人民解放军国防科学技术大学 | 一种基于文本混乱度的软件问题报告分类方法 |
WO2019137033A1 (zh) * | 2018-01-12 | 2019-07-18 | 扬州大学 | 面向软件缺陷的领域知识图谱自动化构建方法 |
CN110309300A (zh) * | 2018-08-23 | 2019-10-08 | 北京慧经知行信息技术有限公司 | 一种识别理科试题知识点的方法 |
CN109739994A (zh) * | 2018-12-14 | 2019-05-10 | 复旦大学 | 一种基于参考文档的api知识图谱构建方法 |
CN109933660A (zh) * | 2019-03-25 | 2019-06-25 | 广东石油化工学院 | 面向自然语言形式的基于讲义和Stack Overflow的API信息检索方法 |
CN110210413A (zh) * | 2019-06-04 | 2019-09-06 | 哈尔滨工业大学 | 一种基于深度学习的多学科试卷内容检测与识别***及方法 |
CN110866123A (zh) * | 2019-11-06 | 2020-03-06 | 浪潮软件集团有限公司 | 基于数据模型构建数据图谱的方法及构建数据图谱的*** |
CN110874431A (zh) * | 2019-11-20 | 2020-03-10 | 云南财经大学 | 基于JAVA Doc知识图谱的多维评估推荐方法 |
CN111538807A (zh) * | 2020-04-16 | 2020-08-14 | 上海交通大学 | 基于Stack Overflow网站获取Web API知识的***和方法 |
Non-Patent Citations (3)
Title |
---|
和晓健.基于实体识别的软件开发问答网站中的API讨论主题分析.《计算机应用与软件》.2019, * |
张静宣.API文档挖掘研究.《中国优秀博士学位论文全文数据库 信息科技辑》.2019, * |
彭鑫.what help do developers seek,when and how?.《IEEE》.2013, * |
Also Published As
Publication number | Publication date |
---|---|
CN112100314A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及*** | |
CN109635171B (zh) | 一种新闻节目智能标签的融合推理***和方法 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN112528034B (zh) | 一种基于知识蒸馏的实体关系抽取方法 | |
CN111639171A (zh) | 一种知识图谱问答方法及装置 | |
CN113191148B (zh) | 一种基于半监督学习和聚类的轨道交通实体识别方法 | |
WO2022226716A1 (zh) | 基于深度学习的Java程序内部注释的生成方法及*** | |
CN113138920B (zh) | 基于知识图谱与语义角色标注的软件缺陷报告分派方法及装置 | |
CN113254507B (zh) | 一种数据资产目录智能构建盘点方法 | |
CN112541337A (zh) | 一种基于递归神经网络语言模型的文档模板自动生成方法及*** | |
CN116661805B (zh) | 代码表示的生成方法和装置、存储介质及电子设备 | |
CN114817576A (zh) | 模型训练及专利知识图谱补全方法、装置及存储介质 | |
KR20220068937A (ko) | 기계학습 방법론을 이용한 한국 표준 산업/직업 분류 방법 | |
CN115203338A (zh) | 一种标签及标签实例推荐方法 | |
CN114492460B (zh) | 基于衍生提示学习的事件因果关系抽取方法 | |
CN110750297B (zh) | 一种基于程序分析和文本分析的Python代码参考信息生成方法 | |
CN112417093A (zh) | 一种模型训练的方法及装置 | |
CN115146062A (zh) | 融合专家推荐与文本聚类的智能事件分析方法和*** | |
Gelman et al. | A language-agnostic model for semantic source code labeling | |
Francois et al. | Text detection and post-OCR correction in engineering documents | |
CN112100314B (zh) | 一种基于软件开发问答网站的api教程汇编生成方法 | |
CN115563278A (zh) | 一种句子文本的问题分类处理方法及装置 | |
CN114840657A (zh) | 一种基于混合模式的api知识图谱自适应构建及智能问答方法 | |
CN110399984B (zh) | 一种信息的预测方法、***以及电子设备 | |
Trivizakis et al. | LoockMe: An Ever Evolving Artificial Intelligence Platform for Location Scouting in Greece |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |