CN105912634B - 一种面向软件代码检索的查询语句重新生成方法 - Google Patents
一种面向软件代码检索的查询语句重新生成方法 Download PDFInfo
- Publication number
- CN105912634B CN105912634B CN201610216306.XA CN201610216306A CN105912634B CN 105912634 B CN105912634 B CN 105912634B CN 201610216306 A CN201610216306 A CN 201610216306A CN 105912634 B CN105912634 B CN 105912634B
- Authority
- CN
- China
- Prior art keywords
- keyword
- query statement
- code
- software
- user
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
Abstract
本发明涉及一种面向软件代码检索的查询语句重新生成方法。本发明对软件代码库中的代码及注释部分和用户输入的查询语句进行预处理,提取软件代码词库中的合成词,将其拆分出来的两个或多个关键词定义为异性关系,定义同性关系,找出查询语句中的所有关键词的同性关键词和异性关键词,将其可视化,供用户选择更合适的关键词,并为最终结果。本发明克服了过去方法精准度低、选择偏差、关系非常复条等缺陷。本发明有效地检索出软件代码库中的相关信息,而且扩充了原查询语句包含的关键词,并提供其代码片段,实现了信息的查询与扩展,有效地提高了软件维护人员对软件的理解程度与效率。
Description
技术领域
本发明属于软件理解领域,特别涉及一种面向软件代码检索的查询语句重新生成方法。
背景技术
在软件工程中,理解大段的软件代码花费了软件维护人员许多时间,并且每个软件开发人员有属于自己的命名风格,包括词组的缩写和连结,这使得软件维护难度大大增加。所以为了方便理解软件代码,我们通过查询软件代码库来更准确地检索出相关的信息供软件开发人员参考,从而使得软件维护顺利进行。因此,查询语句的质量决定了我们能否准确地检索出维护人员想要的关键信息。然而,不断更替的软件维护人员和日益庞大的软件源代码使得构造一个高质量查询语句的难度非常大。所以,需要研究查询语句重新生成技术来提高软件信息检索的准确度。在对软件进行维护时,需要软件维护人员熟悉、理解软件代码。查询语句再生成能在某种程度上帮助维护人员构造更为精准的查询语句。
在本发明提出之前,大多数查询语句再生成技术是基于软件代码库中的单词之间的位置关系构建的,例如,Bunyamin等人通过框定关键词位置、寻找邻近词的方式对查询语句进行替换、增加、删减,自动生成新的查询语句。然而,代码库中关键词的关系非常复杂,例如代码类名、方法名大多是由合成词组成的,每位开发人员的命名习惯也是不一样的等等,所以仅仅基于关键词之间的位置关系并不能有效地找出查询语句的相关词语,甚至会干扰词汇并影响了查询语句重新生成的准确率。另外,Bunyamin等人通过机器自动选择构成新查询语句的方式,相比于人工选择,其精准度低,甚至会由于机器的选择偏差,查询结果与原查询语句背道而驰。
发明内容
本发明的目的就在于克服上述缺陷,研制一种面向软件代码检索的查询语句重新生成方法。
本发明的技术方案是:
一种面向软件代码检索的查询语句重新生成方法,其主要技术特征在于步骤如下:
(1)对软件代码库中的代码及注释部分和用户输入的查询语句进行预处理,包括词条划分,词根处理,动名词同义词、近义词查询扩充词汇量,生成软件代码词库与查询语句词库;
(2)提取软件代码词库中的合成词,将其拆分出来的两个或多个关键词定义为异性关系;
(3)一方面,查询关键词的同义词及近义词,如果这些同义词/近义词出现在软件代码词库中,则定义它们为同性关系;另一方面,如果某两个关键词的异性关系词是同一个单词或者是同义/近义词,则定义它们是同性关系;
(4)在软件代码词库中,找出查询语句中的所有关键词的同性关键词和异性关键词;
(5)根据出现频率给出前20个关键词并找出相应代码片段,再根据给出代码片段中所含原、新关键词的数目进行排序,并根据排序结果对前20个关键词的顺序进行微调,将其可视化,供用户选择更合适的关键词;
(6)若用户选择的关键词与上次输入没有变化,则该结果为最终结果,停止查询语句重新生成;否则,将用户新选出来的结果作为新的查询语句重复上述步骤(4)、(5)。
有益效果
本发明结合软件代码库对软件维护人员输入的查询语句进行重新生成。本发明有效地检索出软件代码库中的相关信息,而且扩充了原查询语句包含的关键词,并提供其代码片段,实现了信息的查询与扩展,有效地提高了软件维护人员对软件的理解程度与效率。主要有以下一些优点:
1)本发明将软件源码库中词与词之间的复杂关系有效地提取为同性关系和异性关系,准确有效地扩充了查询语句的关键词语。
2)本发明结合人机交互的方式,对扩充出来的词语进行进一步筛选,在一定程度上提高了查询语句重新生成的准确率。
3)本发明提出的查询语句重新生成技术适用性广,不仅适合源码信息检索,而且适用于其他软件库(例如bug库、commit库)信息查询。
4)本发明在选择新的关键词时,给用户提供新关键词的代码片段,以便用户判断该关键词是否为所需关键词。
具体优点和效果将在下面继续予以说明。
附图说明
图1——本发明流程示意图。
图2——本发明中用户选择同性/异性关键词的可视化界面示意图。
具体实施方式
本发明的技术思路是:
本发明的方法是使用查询语句再生成,并基于软件代码库中关键词的复杂关系对查询语句有效扩充相关词汇,并且结合人工方式对扩充出来的词语进一步筛选,从而有效地重新生成查询语句。
下面结合附图1、2对本发明的技术方案进行详细说明:
步骤(1)将软件代码库分为纯代码文档库和纯注释文档库,并与用户输入的查询语句进行预处理,具体包括词条划分,词根处理,动名词同义词、近义词查询扩充词汇量等等,生成软件代码段词库与查询语句词库;
例如:对Mozilla项目中bug616264的描述“Cookies set for www.foo.com.aresent to www.foo.com”进行预处理后的结果为:cookie,cooky,biscuit,set,bent,foo。
步骤(2)提取软件代码词库中的合成词,将其拆分出来的两个或多个关键词定义为异性(and)关系;
例如:Mozilla项目源码中有一系列对文件进行操作的方法,其中阅读文件的方法名为“readFiles”,写入文件的方法名为“writeFiles”,修改文件的方法名为“modifyFiles”。因此,我们可以定义file的异性关系词有:read,write,modify。
步骤(3)一方面,查询关键词的同义词及近义词,如果这些同义词/近义词出现在软件代码词库中,则定义它们为同性(or)关系;
例如:modify和change是同义词,那么它们是同性关系。
另一方面,如果某两个关键词的异性关系词是同一个单词或者是同义/近义词,则定义它们是同性(or)关系;
例如:步骤(2)中file的异性关系词有:read,write,modify,那么,read,write,modify三者之间为同性关系词。
步骤(4)在软件代码词库中,找出查询语句中的所有关键词的同性关键词和异性关键词;
例如:对bug616264的描述进行预处理后的关键词set进行扩充同性关键词有:put,get,input,place。如图2,用户可以点击这些单词前面白色的框框表示选择作为查询语句再生成的关键词,并且用户可以选择某个关键词获取其代码片段(More details按钮),以便判断该关键词是否为所需关键词。
步骤(5)根据出现频率各给出前20个关键词并找出相应代码片段,再根据给出代码片段中所含原、新关键词的数目进行排序,并根据排序结果对前20个关键词的顺序进行微调,将其可视化,供用户选择更合适的关键词;例如:步骤4)中关键词set的同性关键词排序为get,put,input,place,结合相应代码片段中的关键词数目对四个关键词的排序进行微调,依次为input,put,get,place。
步骤(6)若用户选择的关键词与上次输入没有变化,则该结果为最终结果,停止查询语句重新生成;否则,将用户新选出来的结果作为新的查询语句重复第(4)、(5)步骤。
例如:在步骤4)中,用户选择了put关键词作为查询语句新的关键词,那么此时的查询语句的关键词发生了变化,当用户点击Next按钮后,系统重复第(4)步骤查找查询语句的同性/异性关系词;如果用户一个单词都没有选择,那么查询语句的关键词数量不变,作为最后结果,查询语句停止重新生成步骤。
Claims (1)
1.一种面向软件代码检索的查询语句重新生成方法,其特征在于步骤如下:
(1)对软件代码库中的代码及注释部分和用户输入的查询语句进行预处理,包括词条划分,词根处理,动名词同义词、近义词查询扩充词汇量等,生成软件代码词库与查询语句词库;
(2)提取软件代码词库中的合成词,将其拆分出来的两个或多个关键词定义为异性关系;
(3)一方面,查询关键词的同义词及近义词,如果这些同义词/近义词出现在软件代码词库中,则定义它们为同性关系;另一方面,如果某两个关键词的异性关系词是同一个单词或者是同义/近义词,则定义它们是同性关系;
(4)在软件代码词库中,找出查询语句中的所有关键词的同性关键词和异性关键词;
(5)根据出现频率给出前20个关键词并找出相应代码片段,再根据给出代码片段中所含原查询语句中的关键词数目、利用同性和异性扩展后的新关键词的数目对所搜索的代码片段进行排序,并根据排序结果对前20个关键词的顺序再根据这些关键词在搜索的代码片段中的出现频率进行微调,将其可视化,供用户选择更合适的关键词;
(6)若用户选择的关键词与上次输入没有变化,则该结果为最终结果,停止查询语句重新生成;否则,将用户新选出来的结果作为新的查询语句重复上述步骤(4)、(5)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610216306.XA CN105912634B (zh) | 2016-04-05 | 2016-04-05 | 一种面向软件代码检索的查询语句重新生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610216306.XA CN105912634B (zh) | 2016-04-05 | 2016-04-05 | 一种面向软件代码检索的查询语句重新生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105912634A CN105912634A (zh) | 2016-08-31 |
CN105912634B true CN105912634B (zh) | 2019-03-12 |
Family
ID=56745633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610216306.XA Active CN105912634B (zh) | 2016-04-05 | 2016-04-05 | 一种面向软件代码检索的查询语句重新生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105912634B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334321A (zh) * | 2017-01-18 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 程序代码的展示设备、方法及装置 |
CN108491407B (zh) * | 2018-01-24 | 2021-01-08 | 大连理工大学 | 一种面向代码检索的查询扩展方法 |
CN109783737A (zh) * | 2019-01-18 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 信息检索方法、装置、计算机设备及存储介质 |
CN110308931A (zh) * | 2019-06-20 | 2019-10-08 | 平安科技(深圳)有限公司 | 一种数据处理方法及相关装置 |
CN115994142B (zh) * | 2022-12-13 | 2024-04-02 | 浙江浙里信征信有限公司 | 一种基于数据中台的数据开发方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100595763C (zh) * | 2008-02-26 | 2010-03-24 | 华中科技大学 | 基于自然语言的全文检索系统 |
CN101510221B (zh) * | 2009-02-17 | 2012-05-30 | 北京大学 | 一种用于信息检索的查询语句分析方法与系统 |
CN104166550A (zh) * | 2014-08-13 | 2014-11-26 | 扬州大学 | 一种面向软件维护的修改请求重新定制的方法 |
CN104598583A (zh) * | 2015-01-14 | 2015-05-06 | 百度在线网络技术(北京)有限公司 | 查询语句推荐列表的生成方法和装置 |
-
2016
- 2016-04-05 CN CN201610216306.XA patent/CN105912634B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100595763C (zh) * | 2008-02-26 | 2010-03-24 | 华中科技大学 | 基于自然语言的全文检索系统 |
CN101510221B (zh) * | 2009-02-17 | 2012-05-30 | 北京大学 | 一种用于信息检索的查询语句分析方法与系统 |
CN104166550A (zh) * | 2014-08-13 | 2014-11-26 | 扬州大学 | 一种面向软件维护的修改请求重新定制的方法 |
CN104598583A (zh) * | 2015-01-14 | 2015-05-06 | 百度在线网络技术(北京)有限公司 | 查询语句推荐列表的生成方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105912634A (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912634B (zh) | 一种面向软件代码检索的查询语句重新生成方法 | |
US9679558B2 (en) | Language modeling for conversational understanding domains using semantic web resources | |
CN109670022B (zh) | 一种基于语义相似度的Java应用程序接口使用模式推荐方法 | |
US8468160B2 (en) | Semantic-aware record matching | |
US20160098448A1 (en) | Dynamic database query efficiency improvement | |
US20160078047A1 (en) | Method for obtaining search suggestions from fuzzy score matching and population frequencies | |
KR20170023022A (ko) | 코드 추천 기법 | |
US10346457B2 (en) | Platform support clusters from computer application metadata | |
Utama et al. | An end-to-end neural natural language interface for databases | |
CN109634594B (zh) | 一种考虑代码语句顺序信息的代码片段推荐方法 | |
CN103353894A (zh) | 一种基于语义分析的数据搜索方法和系统 | |
CN109783628B (zh) | 结合时间窗口和关联规则挖掘的关键词搜索ksaarm方法 | |
Xue et al. | Modeling reformulation using query distributions | |
WO2018156351A1 (en) | Corpus specific generative query completion assistant | |
Ai et al. | Sensory: Leveraging code statement sequence information for code snippets recommendation | |
CN113761162B (zh) | 一种基于上下文感知的代码搜索方法 | |
US20220043845A1 (en) | Template-based automatic software bug question and answer method | |
Adam et al. | Semi-automated tools for systematic searches | |
US20160070707A1 (en) | Keyword search on databases | |
US10339148B2 (en) | Cross-platform computer application query categories | |
CN116860991A (zh) | 面向api推荐的基于知识图谱驱动路径优化的意图澄清方法 | |
Chen et al. | Interactive cross-language code retrieval with auto-encoders | |
Granados Buey et al. | SQX-Lib: Developing a semantic query expansion system in a media group | |
Xu et al. | Complementing GPT-3 with Few-Shot Sequence-to-Sequence Semantic Parsing over Wikidata | |
Dietz et al. | UMass at TREC WEB 2014: Entity Query Feature Expansion using Knowledge Base Links. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |