暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
2019基于代码结构知识的软件文档语义搜索方法-林泽琦 , 邹艳珍 , 赵俊峰 , 曹英魁 , 谢冰.pdf
145
16页
0次
2022-05-23
免费下载
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
Journal of Software,2019,30(12):37143729 [doi: 10.13328/j.cnki.jos.005609] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
基于代码结构知识的软件文档语义搜索方法
林泽琦
1,2
,
邹艳珍
1,2, 3
,
赵俊峰
1,2,3
,
曹英魁
1,2
,
1,2
1
(高可信软件技术教育部重点实验室(北京大学),北京 100871)
2
(北京大学 信息科学技术学院,北京 100871)
3
(北京大学(天津滨海)新一代信息技术研究院,天津 300450)
通讯作者: 邹艳珍, E-mail: zouyz@sei.pku.edu.cn
: 自然语言文本形式的文档是软件项目的重要组成部分.如何帮助开发者在大量文档中进行高效、准确的
信息定位,是软件复用领域中的一个重要研究问题.提出了一种基于代码结构知识的软件文档语义搜索方法.该方
从软件项目的源代码中解析出代码结构图,并以此作为领域特定的知识来帮助机器理解自然语言文本的语义.这一
语义信息与信息检索技术相结合,从而实现了对软件文档的语义检索. StackOverflow 问答文档数据集上的实验表
,与多种文本检索方法相比,该方法在平均准确率(mean average precision,简称 MAP)上可以取得至少 13.77%
提升.
关键词: 软件复用;自然语言文本;代码结构知识;信息检索;语义搜索
中图法分类号: TP311
中文引用格式: 林泽琦,邹艳珍,赵俊峰,曹英魁,谢冰.于代码结构知识的软件文档语义搜索方法.软件学报,2019,30 (12):
37143729. http ://www.jos.org.cn/1000-9825/5609.htm
英文引用格式: Lin ZQ, Zou YZ, Zhao JF, Cao YK, Xie B. Software text semantic search approach based on code structure
knowledge. Ruan Jian Xue Bao/Journal of Software, 2019,30(12):37143729 (in Chinese). http://www.jos.org.cn/1000-
9825/5609.htm
Software Text Semantic Search Approach Based on Code Structure Knowled ge
LIN Ze-Qi
1,2
, ZOU Yan-Zhen
1,2,3
, ZHAO Jun-Feng
1,2,3
, CAO Ying-Kui
1,2
, XIE Bing
1,2
1
(Key Laboratory of High Confidence Software Technologies (Peking University), Ministry of Education, Beijing 100871, China)
2
(School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China)
3
(Peking University Information Technology Institute (Tianjin Binhai), Tianjin 300450, China)
Abstra ct : Natural language text is a common form of knowledge representation in various software artifacts. During the practice of
software reuse, software developers usually need to search the large amount of textual resource. This paper presents a software text
semantic search approach based on code structure knowledge. This approach extracts a code structure graph from software source code
and leverages it as a domain-specific knowledge base to analyze the semantic meanings of natural language texts. The semantic
information is combined with information retrieval technology to re-rank text search results semantically. Experimental results on
StackOverflow dataset show that this approach achieves at least 13.77% improvement in mean average precision (MAP) comparing to
several text retrieval approaches.
Key words: software reuse; natural language text; code stru cture knowledge; infor mation r etri eval; semantic s earch
软件复用是在软件开发中避免重复劳动的解决方案,可以提高软件开发的效率与质量
[1]
.近年来,随着开源
基金项目: 国家重点研发计划(2016YFB1000801); 国家杰出青年科学基金(61525201)
Foundation item: National Key Research and Development Program (2016YFB1000801); National Science Fund for Distinguished
Young Scholars (61525201)
收稿时间: 2017-1 0-09; 修改时间: 2018-05-07; 采用时间: 2018-05-25
林泽琦 :基于代码结构知识的软件文档语义搜索方法
3715
软件的快速发展,互联网上汇聚了大量可复用的软件项目,例如 Apache LuceneApache POIJFreeChart .
些软件项目除了有源代码之外,往往还包含数量庞大、类型各异的自然语言文本形式的文档资源,例如用户手
册、邮件归档、缺陷报告、用户论坛讨论等.这些文档中蕴含着丰富的知,能够帮助软件开发者学习与理解
该软件项目,从而更有效地对其进行复用.当软件开发人员在复用一个软件项目的过程中遇到问题,例如不知道
一个功能的实现原理,或者是不知道一个需求应该被如何实现时,往往会在这些软件文档中进行搜索,以期找到
一些相关的文本段落,其中包含可以用来回答该问题的信息.近年来,为项目内的文档资源提供搜索服务已经成
为开源软件项目中最基本的辅助服务之一.如何提高软件文档搜索的准确,已经成为软件复用领域的重要研
究话题
[2]
.
最基本也是最常见的软件文档搜索方法是基于关键词匹配的,这种方法将软件开发者输入的自然语言形
式的问题与各个文档进行关键词匹配,并将关键词匹配程度最高的文档作为搜索结果.这种方法没有考虑到不
同的词之间是具有语义关联的,因此搜索效果往往不够理.在信息检索领域中,为了解决这一问题,相关研究
工作主要分为两类:其一是基于统计分析的方法,如潜在语义分析(latent semantic analysis,简称 LSA)
[3]
、潜在狄
利克雷分析(latent Dirichlet allocation)
[4]
、基于神经语言模型的词表示学习技术
[5]
,此类方法依赖于训练所用
的语料库,受数据稀疏和实际噪声的干扰较大;其二是基于概念知识的方法
[612]
,使用概念实体来表示自然语言
文本的语义,并以概念实体之间的结构关联关系来度量文本之间的语义相关度,此类方法直观、有效,但需要用
到互联网上大型的通用概念知识库( WordNetDBpediaFre eba se Ya go ). 然而,这些通用概念知识库中
又往往不包含软件项目中领域特定的概念知识.总的来看,软件文档中的数据稀疏现象较为明显,这导致了基于
统计分析的方法对搜索效果的改进是有限的.我们希望通过基于概念知识的方法来提升搜索效果,但其中亟待
解决的问题是如何获取软件项目中领域特定的概念知识.
我们在研究中发现,软件项目中涉及的领域特定的概念实体大多都在这个软件的开发过程中被定义成了
诸如类、接口等的代码元素,因此软件项目的代码结构图在一定程度上表达了领域特定的概念知识,可以用来
帮助机器理解自然语言文本的语义.基于这种思路,本文提出了一种基于代码结构知识的软件文档语义搜索方
.更具体地:(1) 我们将这些代码元素抽取出来用于表示领域特定的概念实体;(2) 抽取这些代码元素之间的
结构依赖关系(例如继承关系、调用关系)以体现出相应的概念实体之间的语义关联关系,并利用它们来推理
出文本之间的语义相关度.
与现有工作相比,本文的主要贡献是:
(1) 提出一种基于代码结构知识的文本语义表示方法,将文本的语义表示为代码结构图上的一个带权子
,从而实现了利用软件项目源代码中蕴含的概念知识来解释文本的语义;
(2) 提出一种基于代码结构知识的软件文档语义搜索方法,基于多关联数据的表示学习技术,利用代码元
素间的结构依赖关系推理出文本间的语义相关度,从而解决了信息检索技术未能考虑不同的词之间
的语义关联的问题;
(3) StackOverflow 数据集上对该方法进行了验证,与其他多种信息检索方法(包括向量空间模型、潜在
主题建模、
神经语言模型等) 相比,本方法在平均准确率(mean average precision,简称 MAP)指标上可
以取得至少 13.77%的效果提升.
本文第 1 节概述文本的研究目标与方法框架. 2 节具体描述基于代码结构知识的软件文档语义搜索方法
的实现细节,包括代码结构图提取、文档语义表示、文档语义相关度度量 3 个步骤. 3 节介绍本文的实证研
,包括实验设计、采用的评测数据集及评价指标以及实验结果分析等. 4 节与相关工作进行比较. 5 节总
结全文并对未来研究工作进行展望.
1 方法概览
本节首先通过一个实际例子来更为直观地说明本文的目标与基本方法,之后给出基于代码结构知识的软
件文档语义搜索方法的总体框架.
of 16
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜