首页> 中国专利> 应用程序编程接口使用示例提取方法及装置

应用程序编程接口使用示例提取方法及装置

摘要

本发明提供一种应用程序编程接口使用示例提取方法及装置,该应用程序编程接口使用示例提取方法包括获取包含有应用程序编程接口API检索信息的网页;从网页中提取API代码段;从网页中提取API代码段对应的文本描述信息;将API代码段和API代码段对应的文本描述信息组合成为API使用示例。该装置包括页面获取模块、代码段提取模块、描述信息提取模块和使用示例生成模块。本发明提供的应用程序编程接口使用示例提取方法及装置,提取得到的API使用示例既包含API代码段又包含用于对该API代码段解释的文本描述信息,而且API使用示例是从网页中提取的,不需要专门获取代码库,提高了API使用示例的提取效果。

著录项

  • 公开/公告号CN102567016A

    专利类型发明专利

  • 公开/公告日2012-07-11

    原文格式PDF

  • 申请/专利权人 北京北大软件工程发展有限公司;

    申请/专利号CN201110404046.6

  • 申请日2011-12-07

  • 分类号G06F9/44(20060101);

  • 代理机构11205 北京同立钧成知识产权代理有限公司;

  • 代理人刘芳

  • 地址 100080 北京市海淀区北四环西路67号大地科技大厦10层

  • 入库时间 2023-12-18 05:55:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-11

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/44 变更前: 变更后: 申请日:20111207

    专利权人的姓名或者名称、地址的变更

  • 2015-06-03

    授权

    授权

  • 2012-12-26

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20111207

    实质审查的生效

  • 2012-07-11

    公开

    公开

说明书

技术领域

本发明涉及信息技术,尤其涉及一种应用程序编程接口使用示例提取方 法及装置。

背景技术

应用程序编程接口(Application Programming Interface,以下简称API) 使用示例可为用户学习和使用API函数提供巨大帮助和参考。用户通常通 过互联网搜索获得API使用示例,但是由于API使用示例的相关信息往往 分散于很多网页中,为了系统学习该API函数,用户需要浏览大量网页, 这需要消耗大量的时间和精力。

现有技术中为用户提供一种API使用示例的集合,API使用示例的集 合中包含了一定数量的API使用示例以供用户系统学习。API使用示例的 集合大多是基于软件项目代码库提取获得API使用示例,由于代码库中的 API使用示例往往和所在软件项目的业务逻辑紧密交织在一起,从中进行 代码片段的提取比较困难,由此提取出的API使用示例脱离原有上下文, 以致用户难以理解。而且代码库中包含的注释信息比较有限,这些注释信 息一般是对相应业务逻辑的描述和说明,并不是对使用示例的解释和说 明,用户也很难通过这些注释作来学习和理解API使用示例,效果不佳。

发明内容

本发明提供一种应用程序编程接口使用示例提取方法及装置,以提高 API使用示例的提取效果。

本发明一个方面提供一种应用程序编程接口使用示例提取方法,包括:

获取包含有应用程序编程接口API检索信息的网页;

从所述网页中提取API代码段

从所述网页中提取所述API代码段对应的文本描述信息;

将所述API代码段和所述API代码段对应的文本描述信息组合成为API 使用示例。

本发明另一个方面提供一种应用程序编程接口使用示例提取装置,包括:

页面获取模块,用于获取包含有应用程序编程接口API检索信息的网页;

代码段提取模块,用于从所述网页中提取API代码段;

描述信息提取模块,用于从所述网页中提取所述API代码段对应的文本 描述信息;

使用示例生成模块,用于将所述API代码段和所述API代码段对应的文 本描述信息组合成为API使用示例。

由上述技术方案可知,本发明提供的应用程序编程接口使用示例提取方 法及装置,获取包含有API检索信息的网页,从网页中提取API代码段和API 代码段对应的文本描述信息,将API代码段和API代码段对应的文本描述信 息组合成为API使用示例,由于提取得到的API使用示例既包含API代码段 又包含用于对该API代码段解释的文本描述信息,而且API使用示例是从网 页中提取的,不需要专门获取代码库,提高了API使用示例的提取效果。

附图说明

图1为本发明实施例一提供的应用程序编程接口使用示例提取方法流程 图;

图2为本发明实施例二提供的应用程序编程接口使用示例提取方法流程 图;

图3为本发明实施例三提供的应用程序编程接口使用示例提取装置结构 示意图;

图4为本发明实施例四提供的应用程序编程接口使用示例提取装置结构 示意图。

具体实施方式

实施例一

图1为本发明实施例一提供的应用程序编程接口使用示例提取方法流程 图。如图1所示,本实施例提供的应用程序编程接口使用示例提取方法具体 可以应用于对应用程序编程接口API使用示例的提取过程,尤其是Java API 使用示例的提取过程,可以通过API使用示例提取装置来执行。

本实施例提供的应用程序编程接口使用示例提取方法具体包括:

步骤10、获取包含有API检索信息的网页;

具体地,可以通过搜索引擎收集包含有API检索信息的网页,API检索 信息具体为用以检索API使用示例的关键词,可以为API函数的名称,例如 “API_FQN”,如example、java等关键词。“API_FQN”可以用于限定API 使用示例的名称,API_FQN两端的双引号用于要求搜索引擎不对其切词, example和java可以用于限定查询范围。通过搜索引擎进行检索,将搜索得 到的网页保存,具体可以保存检索结果中排在前N个的网页进行保存,N为 预设网页数值,例如N=300,N的值可以根据实际的网页分析需要来具体设 置,不以本实施例为限。

步骤20、从网页中提取API代码段;

步骤30、从网页中提取API代码段对应的文本描述信息;

步骤40、将API代码段和API代码段对应的文本描述信息组合成为API 使用示例。

具体地,从网页中提取API代码段,可以根据API检索信息对网页进行 解析定位,以获取API代码段,并将该API代码段提取出来。接下来可以通 过文本挖掘等方法从网页中将该API代码段对应的文本描述信息提取出来。 从网页中提取API代码段和文本描述信息还可以采用其他方式,不以本实施 例为限。API代码段具体为API在实际项目开发或应用中的代码,API代码 段对应的文本描述信息具体为对该API代码段的文字性描述,对API代码段 进行解释或对其功能进行说明。用户可以通过该文本描述信息对API代码段 进行理解,以获知该API代码段的使用方法。将API代码段和API代码段对 应的文本描述信息进行组合处理,生成的为API使用示例,即该API使用示 例中既包含了API代码段,又包含了对该API代码段的文本描述信息。用户 可以根据该API使用示例中的API代码段和文本描述信息对API函数进行学 习。

本实施例提供的应用程序编程接口使用示例提取方法,获取包含有API 检索信息的网页,从网页中提取API代码段和API代码段对应的文本描述信 息,将API代码段和API代码段对应的文本描述信息组合成为API使用示例, 由于提取得到的API使用示例既包含API代码段又包含用于对该API代码段 解释的文本描述信息,而且API使用示例是从网页中提取的,不需要专门获 取代码库,提高了API使用示例的提取效果。

实施例二

图2为本发明实施例二提供的应用程序编程接口使用示例提取方法流程 图。如图2所示,本实施例提供的应用程序编程接口使用示例提取方法与实 施例一的不同之处在于,在实施例一的步骤40,API代码段和API代码段对 应的文本描述信息组合成为API使用示例之后,具体还可以包括如下步骤:

步骤50、根据聚类算法对多个API使用示例进行聚类分析,将各API使 用示例按照调用方法划分为多个类簇;

具体地,聚类算法可以包括K-均值聚类算法、层次聚类算法等,层次聚 类算法又包括自上而下的层次聚类和自下往上的层次聚类,K-均值聚类算法 通常需要预设需要的类簇数目。自上而下的层次聚类首先将所有待聚类的 API使用示例看作同一类,然后从中分离出若干个与其他API使用示例差别 最大的API使用示例作为新的一类,依此执行下去直到满足要求。自下而上 的层次聚类首先将每个API使用示例看作一类,然后选择两个最相似的API 使用示例合并为一类,依此执行下去直到全部合并为一类或者没有相似的类 别为止。

可以根据各API使用示例之间的相似性对API使用示例进行聚类。相似 性具体可以为API函数的调用方法。因此,在聚类过程中,可以将各API使 用示例的调用方法作为聚类规则,具有相同调用方法的API使用示例划分为 同一类簇。例如,某个API函数(以T表示)的调用方法具有a、b和c三种, 与该API函数相关的有五个API使用示例,分别为EX1、EX2、EX3、EX4 和EX5,假设EX1调用了方法a和b,EX2调用了方法a和c,EX3调用了 方法a和c,EX4调用了方法b和c,EX5调用了方法a和b,那么,对T的 五个API使用示例的聚类结果是:EX1和EX5同属一类簇,EX2和EX3同 属一类簇,EX4单独一类簇。

步骤60、将各类簇按照类簇中的API使用示例的数量由大到小进行排序, 将类簇中的各API使用示例按照API使用示例的示范性由高到底进行排序。

经过聚类处理后的API使用示例分成了多个类簇,每个类簇中的API使 用示例的数量不同,按照API使用示例的数量由大到小对类簇进行排序。由 于在聚类过程中通过调用方法的不同将API使用示例进行分类,则包含的API 使用示例数量大的类簇说明其对应的调用方法流行且具有典型性,则将该类 簇排在前面,以便用户更好地选择学习。

对于每个类簇,再根据API使用示例的示范性对类簇中的API使用示例 进行排序。可以通过以下条件对API使用示例的示范性进行评估:

(1)代码段较短的API使用示例;

(2)包含更多注释的API使用示例;

(3)调用较少API的API使用示例;

(4)包含的代码段经过较少的调整即能成功解析的API使用示例;

(5)具有丰富的文本描述信息的API使用示例;

(6)来自于教程网页的API使用示例;

(7)非来自于论坛的API使用示例;

API使用示例满足以上条件越多说明该API使用示例的示范性越高。

经过聚类和排序处理后的API使用示例可以存储在数据库中,以供用户 查询学习。

在本实施例中,步骤20,从网页中提取API代码段,具体可以包括如下 步骤:

步骤201、根据超文本标记语言文档结构将网页分割为多个片段;

根据超文本标记语言(Hypertext Markup Language,简称HTML)文档结 构将网页分割为多个片段。通常一些特定的HTML标签,例如<P>、<DIV>、 <TABLE>、<TR>、<PRE>、<CODE>、<OL>、<UL>和<H1>~<H6>等标签, 这类标签通常作为文本片段的容器使用。嵌入在这些标签中的文本内容通常 可以被视为一个独立的段落。而其他HTML标签则被忽略,而这些被忽略的 标签内部的文字内容则被保留下来,归其父标签所有。

步骤202、对各片段进行解析,并根据解析结果确定API代码段。

将网页分割成的多个片段中可能存在一个或多个API代码段,对所有片 段进行解析,确定API代码段,在解析过程中,还可以获得API代码段的一 些详细信息,如依赖的类、调用的方法等。

在本实施例中,优选地,步骤202,对各片段进行解析,并根据解析结 果确定API代码段,可以包括如下步骤:

步骤2021、根据启发式方法对各片段进行筛选,若判断获知片段的格式 符合预设格式,则保留片段;

首先可以根据启发式方法,从外观上初步确定该片段是否“看起来像” 一个代码段。API代码段的代码行通常具有一定的格式特点,根据该格式特 点可以设置预设格式。代码行的格式特点具体可以包括以下几种:

(1)一行以“;”、“{”或“}”结束;

(2)包含“(”或“)”;

(3)包含“{”或“}”;

(4)包含Java的保留关键字,如protect、public、private、class、static、 new、interface或import。

如果一行文本至少满足上述两种格式特点,则可以被认为是一行代码行, 如果一个片段中包含的代码行的比例超过预设阈值,可以确定该片段的格式 符合预设格式,则保留该片段,以进行进一步地解析。预设阈值可以根据实 际的解析精度需要来具体设置。

步骤2022、通过抽象语法树分析器对保留的片段进行解析,若解析失败, 则对片段进行调整,再通过抽象语法树分析器对调整后的片段进行解析,若 解析失败的次数达到预设阈值,则将片段确定为非API代码段,若解析成功, 则将片段确定为API代码段。

抽象语法树分析器具体为基于Eclipse的抽象语法树分析器,通过抽象语 法树分析器对保留的片段进行解析,若解析失败,说明该片段中可能带有行 号前缀,或该片段前后包含有描述信息,或该片段嵌入有某些非法字符(如 “......”)等,当遇到上述情况时,通常会解析失败,则对片段进行调整。调 整的方法具体可以包括删除前缀线号码,删除遇到的非法字符,在非代码行 的开头添加“//”以更改为注释,声明引入的类等调整操作,可以预先设置调 整方法,在每次解析失败后,选择一种调整方法进行调整,再将调整后的片 段通过抽象语法树分析器进行解析,知道解析成功为止,确定该片段为API 代码段。若所有的调整方法都使用过,即解析失败的次数达到预设阈值,对 片段的解析结果仍然为失败,则确定该片段为非API代码段。在解析过程中, 细粒度的代码结构信息,例如使用的API,方法调用序列都会被解析出来并 存储在数据库中。在实际的API代码段的提取应用中,若提取的API代码段 并不是Java API代码段,则可以选择与其计算机语言种类相适应的分析器来 对代码进行解析,分析器的选择不以本实施例为限。

首先通过启发式方法对片段进行初步的筛选,确定在格式上像代码段的 片段,由于启发式方法实现起来比较简单,作为粗选可以提高片段的筛选效 率。再通过抽象语法树分析器对片段进行进一步地解析,以最终确定API代 码段,由于进一步解析的算法更为准确,可以提高API代码段确定的准确率。

在本实施例中,步骤30,从网页中提取API代码段对应的文本描述信息, 具体可以包括如下步骤:

从网页中提取API代码段前后的文本段作为文本描述信息。

具体地,一个API代码段的描述文本信息通常出现在原始网页中该段代 码的附近。API代码段所紧跟着的文本段往往与该API代码段有紧密的联系, 该文本段一般是对其后代码片段的解释或者功能的说明等。遍历每个网页的 文本段,遇到一个API代码段时,可以通过以下策略来提取其前后的描述文 本,反复向前合并,直至遇到下述情况中的一种,合并结束:

(1)遇到另一个代码段;

(2)合并后获得的描述文本的长度达到某一阈值(如250个字符);

(3)遇到内容分段标签,此类标签包括:<DIV>,<TABLE>,<HR>, <UL>,<OL>,<H1>~<H6>。

实施例三

图3为本发明实施例三提供的应用程序编程接口使用示例提取装置结构 示意图。如图3所示,本实施例提供的应用程序编程接口使用示例提取装置 具体可以实现本发明任意实施例提供的应用程序编程接口使用示例提取方法 的各个步骤,此不再赘述。本实施例提供的应用程序编程接口使用示例提取 装置具体包括页面获取模块11、代码段提取模块12、描述信息提取模块13 和使用示例生成模块14。页面获取模块11用于获取包含有应用程序编程接 口API检索信息的网页。代码段提取模块12用于从网页中提取API代码段。 描述信息提取模块13用于从网页中提取API代码段对应的文本描述信息。使 用示例生成模块14用于将API代码段和API代码段对应的文本描述信息组 合成为API使用示例。

本实施例提供的应用程序编程接口使用示例提取装置,页面获取模块11 获取包含有应用程序编程接口API检索信息的网页。代码段提取模块12从网 页中提取API代码段,描述信息提取模块13从网页中提取API代码段对应 的文本描述信息,使用示例生成模块14将API代码段和API代码段对应的 文本描述信息组合成为API使用示例。由于提取得到的API使用示例既包含 API代码段又包含用于对该API代码段解释的文本描述信息,而且API使用 示例是从网页中提取的,不需要专门获取代码库,提高了API使用示例的提 取效果。

实施例四

图4为本发明实施例四提供的应用程序编程接口使用示例提取装置结构 示意图。如图4所示,本实施例提供的应用程序编程接口使用示例提取装置 与实施例三的区别在于,还可以包括分类模块15和排序模块16。分类模块 15用于根据聚类算法对多个API使用示例进行聚类分析,将各API使用示例 按照调用方法划分为多个类簇。排序模块16用于将各类簇按照类簇中的API 使用示例的数量由大到小进行排序,将类簇中的各API使用示例按照API使 用示例的示范性由高到底对进行排序。通过分类模块15和排序模块16的设 置,可以将获得的多个API使用示例进行分类和排序,以提高API使用示例 学习的方便性和系统性。

在本实施例中,代码段提取模块12具体包括网页分割单元121和片段解 析单元122。网页分割单元121用于根据超文本标记语言文档结构将网页分 割为多个片段。片段解析单元122用于对各片段进行解析,并根据解析结果 确定API代码段。通过网页分割单元121的设置,将网页分割为多个片段以 进行后续的分析,可以提高代码段提取的效率。

在本实施例中,片段解析单元122具体可以包括筛选子单元1221和代码 段确定子单元1222。筛选子单元1221用于根据启发式方法对各片段进行筛 选,若判断获知片段的格式符合预设格式,则保留片段。代码段确定子单元 1222用于通过抽象语法树分析器对保留的片段进行解析,若解析失败,则对 片段进行调整,再通过抽象语法树分析器对调整后的片段进行解析,若解析 失败的次数达到预设阈值,则将片段确定为非API代码段,若解析成功,则 将片段确定为API代码段。通过筛选子单元1221和代码段确定子单元1222 的设置,首先通过启发式方法对片段进行初步的筛选,确定在格式上像代码 段的片段,由于启发式方法实现起来比较简单,作为粗选可以提高片段的筛 选效率。再通过抽象语法树分析器对片段进行进一步地解析,以最终确定API 代码段,由于进一步解析的算法更为准确,可以提高API代码段确定的准确 率。

在本实施例中,描述信息提取模块13还用于从网页中提取API代码段前 后的文本段作为文本描述信息。由于文本描述信息为API代码段前后的相关 信息,可以提高文本描述信息提取的准确性。

本发明实施例提供的应用程序编程接口使用示例提取方法及装置,自动 从互联网上收集API的相关网页,并从中抽取API使用示例,抽取出的使用 示例即包含示例代码段也包含了用于对该代码段进行解释说明的文本描述信 息。还基于API的用法对API使用示例进行了聚类,并提供了API使用示例 的排序方法可有效帮助程序员获取散落在互联网上的大量API使用示例,通 过示例抽取、分析与整理,省却了程序员浏览大量冗余信息、过滤无用信息 的繁重压力,可有效提高程序员学习使用API的效率和效果。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤 可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读 取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述 的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介 质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其 限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术 人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或 者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技 术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号