CN111177312A - 一种语法和语义融合的开源代码搜索方法 - Google Patents
一种语法和语义融合的开源代码搜索方法 Download PDFInfo
- Publication number
- CN111177312A CN111177312A CN201911259608.5A CN201911259608A CN111177312A CN 111177312 A CN111177312 A CN 111177312A CN 201911259608 A CN201911259608 A CN 201911259608A CN 111177312 A CN111177312 A CN 111177312A
- Authority
- CN
- China
- Prior art keywords
- source code
- semantic
- source
- syntax
- grammatical
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000011156 evaluation Methods 0.000 claims abstract description 11
- 238000001914 filtration Methods 0.000 claims abstract description 4
- 238000007781 pre-processing Methods 0.000 claims abstract description 4
- 238000012216 screening Methods 0.000 claims abstract description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
-
- 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/3344—Query execution using natural language analysis
-
- 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/338—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种语法和语义融合的开源代码搜索方法,包括以下步骤:步骤S1:提取并过滤用户的搜索请求,对搜索请求进行预处理,形成符合语法和语义规范格式相应语法要求和语义要求;步骤S2:获取源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;步骤S3:分析有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将达到设定阈值的源代码作为有效语义源代码;步骤S4:进行源代码关键字匹配,获得相应源代码及其可信度估值,当源代码搜索结果的个数达到设定阈值时,将对应源代码搜索结果按可信度估值排序并回显至用户。与现有技术相比,本发明具有代码匹配精度高、搜索结果可靠性强等优点。
Description
技术领域
本发明涉及计算机软件开发领域,尤其是涉及一种语法和语义融合的开源代码搜索方法。
背景技术
目前在进行软件编程过程中,对于大量可以进行复用的开源代码进行搜索的方法集中在两个方面:一是在基于源代码语法的搜索,通过定义函数、结构体、类、接口等一系列通配符,对不同语言的语法集进行抽象形成代码模式自动机,然后通过解释器进行匹配,以此进行源代码语法匹配搜索;二是在基于源代码语义的搜索,用语义网络为源代码文本关键字建立近义词索引,并构建“自然语言源码定位”技术对源代码中的变量名称进行语义猜测,以此进行语义匹配搜索。
现有的软件代码搜索中,目前的技术多数只对语法、语义的其中一个方面进行开源代码搜索,使得搜索返回一系列混杂不相关的结果,造成程序员选择困难,以往方案普遍存在搜索精准度不佳的问题,代码复用重用率低,不能帮助提高软件开发的效率。
发明内容
本发明的目的就是为了克服上述现有技术存在的搜索精准度不佳、代码复用率低的缺陷而提供一种语法和语义融合的开源代码搜索方法。
本发明的目的可以通过以下技术方案来实现:
一种语法和语义融合的开源代码搜索方法,包括以下步骤:
步骤S1:提取并过滤用户的搜索请求,对所述搜索请求进行预处理,形成符合语法和语义规范格式的语法要求和语义要求;
步骤S2:获取源代码库中源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;
步骤S3:分析所述有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将匹配度达到设定阈值的源代码作为有效语义源代码;
步骤S4:根据所述有效语法源代码和有效语义源代码,进行源代码关键字匹配,获得相应源代码及其可信度估值,当源代码搜索结果的个数达到设定阈值时,将对应源代码搜索结果按可信度估值排序并回显至用户。
所述语法要求没有限制时,所述源代码库中任意源代码均为有效语法源代码。
优选的,若不存在所述有效语法源代码,则不执行步骤S3-S4。
所述语义特征包括输入、输出变量特征。
所述语义要求包括输入、输出要求。
优选的,所述可信度估值排序的方法为按可信度估值的数值大小从高到低排序。
优选的,所述可信度估值的范围为0~1。
所述源代码的语法结构信息储存在源代码库的索引库中。
与现有技术相比,本发明具有以下有益效果:
1.本发明充分利用源代码本身的语法和语义信息,细化用户的搜索请求,使用户的搜索请求与代码库中的源代码进行精确匹配。
2.本发明在进行关键字匹配过程中基于有效语义源代码和有效语法源代码进行搜索,提高了关键字匹配的搜索精度。
3.本发明通过设计可信度估值来标定源代码与用户搜索请求的关键字匹配结果,为大量搜索结果排序提供了可靠的依据,方便用户选择适合的源代码。
附图说明
图1为本发明的流程示意图;
图2为本发明用户搜索请求录入界面的示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,一种语法和语义融合的开源代码搜索方法,包括以下步骤:
步骤S1:提取并过滤用户的搜索请求,对搜索请求进行预处理,形成符合语法和语义规范格式的语法要求和语义要求;
步骤S2:获取源代码库中源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;
步骤S3:分析有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将匹配度达到设定阈值的源代码作为有效语义源代码;
步骤S4:根据有效语法源代码和有效语义源代码,进行源代码关键字匹配,获得相应源代码及其可信度估值,可信度估值的范围为0~1,当源代码搜索结果的个数达到设定阈值时,将源代码搜索结果按可信度估值排序并回显至用户。
语法要求没有限制时,源代码库中任意源代码均为有效语法源代码。
若不存在有效语法源代码,则不执行步骤S3-S4。
语义特征包括输入、输出变量特征;语义要求包括输入、输出要求。
可信度估值排序的方法为按可信度估值的数值大小从高到低排序。
源代码的语法结构信息储存在源代码库的索引库中。
如图2所示,用户在搜索请求录入界面中,录入“bubblesort array”作为关键词信息;录入“l:(l:(c:()))”作为语法要求,“l:(l:(c:()))”代表源代码是双重循环结构,内层循环中包含一个分支结构;录入“int*data,int size;void void”作为“输入/输出”语义信息,意为“操作对象是长度为size的整型数组指针data,且输出为空”。源代码搜索结果的个数的设定阈值为10个,源代码搜索结果如表1所示:
表1源代码搜索结果表
由表1可知,本次源代码搜索结果与Search Code中的原始排名进行比较,筛选出更符合用户搜索请求的源代码排序在靠前的位置,在源代码搜索精度上有较大幅度的提高。
此外,需要说明的是,本说明书中所描述的具体实施例,所取名称可以不同,本说明书中所描述的以上内容仅仅是对本发明结构所做的举例说明。凡依据本发明构思的构造、特征及原理所做的等小变化或者简单变化,均包括于本发明的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实例做各种各样的修改或补充或采用类似的方法,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (8)
1.一种语法和语义融合的开源代码搜索方法,其特征在于,包括以下步骤:
步骤S1:提取并过滤用户的搜索请求,对所述搜索请求进行预处理,形成符合语法和语义规范格式的语法要求和语义要求;
步骤S2:获取源代码库中源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;
步骤S3:分析所述有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将匹配度达到设定阈值的源代码作为有效语义源代码;
步骤S4:根据所述有效语法源代码和有效语义源代码,进行源代码关键字匹配,获得相应源代码及其可信度估值,当源代码搜索结果的个数达到设定阈值时,将对应源代码搜索结果按可信度估值排序并回显至用户。
2.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述语法要求没有限制时,所述源代码库中任意源代码均为有效语法源代码。
3.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,若不存在所述有效语法源代码,则不执行步骤S3-S4。
4.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述语义特征包括输入、输出变量特征。
5.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述语义要求包括输入、输出要求。
6.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述可信度估值排序的方法为按可信度估值的数值大小从高到低排序。
7.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述可信度估值的范围为0~1。
8.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述源代码的语法结构信息储存在源代码库的索引库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911259608.5A CN111177312A (zh) | 2019-12-10 | 2019-12-10 | 一种语法和语义融合的开源代码搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911259608.5A CN111177312A (zh) | 2019-12-10 | 2019-12-10 | 一种语法和语义融合的开源代码搜索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111177312A true CN111177312A (zh) | 2020-05-19 |
Family
ID=70657265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911259608.5A Pending CN111177312A (zh) | 2019-12-10 | 2019-12-10 | 一种语法和语义融合的开源代码搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177312A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11720346B2 (en) | 2020-10-02 | 2023-08-08 | International Business Machines Corporation | Semantic code retrieval using graph matching |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063488A (zh) * | 2010-12-29 | 2011-05-18 | 南京航空航天大学 | 一种基于语义的代码搜索方法 |
CN107992324A (zh) * | 2017-12-22 | 2018-05-04 | 南京大学 | 一种基于约束求解的代码搜索方法 |
-
2019
- 2019-12-10 CN CN201911259608.5A patent/CN111177312A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063488A (zh) * | 2010-12-29 | 2011-05-18 | 南京航空航天大学 | 一种基于语义的代码搜索方法 |
CN107992324A (zh) * | 2017-12-22 | 2018-05-04 | 南京大学 | 一种基于约束求解的代码搜索方法 |
Non-Patent Citations (4)
Title |
---|
刘石;李合;王啸吟;张路;谢冰;: "基于语法与语义分析的代码搜索结果优化" * |
顾逸圣等: "基于语法和语义结合的源代码精确搜索方法" * |
马军岩;曾国荪;: "基于MapReduce的开源代码并行爬取方法研究与实现" * |
黄丽韶;: "基于语法结构的源代码搜索的研究" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11720346B2 (en) | 2020-10-02 | 2023-08-08 | International Business Machines Corporation | Semantic code retrieval using graph matching |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399457B (zh) | 一种智能问答方法和系统 | |
US11442932B2 (en) | Mapping natural language to queries using a query grammar | |
CN110968699B (zh) | 一种基于事理推荐的逻辑图谱构建及预警方法和装置 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
Abujabal et al. | Never-ending learning for open-domain question answering over knowledge bases | |
US11521603B2 (en) | Automatically generating conference minutes | |
CN104657439B (zh) | 用于自然语言精准检索的结构化查询语句生成系统及方法 | |
US7426497B2 (en) | Method and apparatus for analysis and decomposition of classifier data anomalies | |
CN111046656B (zh) | 文本处理方法、装置、电子设备及可读存储介质 | |
CN104657440B (zh) | 结构化查询语句生成系统及方法 | |
CN108304375A (zh) | 一种信息识别方法及其设备、存储介质、终端 | |
KR101524889B1 (ko) | 간접 화법 내에서의 시맨틱 관계의 식별 | |
CN109241080B (zh) | 一种fql查询语言的构建使用方法及其系统 | |
WO2016138773A1 (zh) | 基于图的地址知识处理方法及装置 | |
CN105760462B (zh) | 基于关联数据查询的人机交互方法及装置 | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及系统 | |
CN112507089A (zh) | 一种基于知识图谱的智能问答引擎及其实现方法 | |
Francia et al. | Towards conversational OLAP | |
Sun | A natural language interface for querying graph databases | |
Bender et al. | From database to treebank: On enhancing hypertext grammars with grammar engineering and treebank search | |
CN117875307A (zh) | 一种用于智能问答的文本解析方法和装置 | |
CN111177312A (zh) | 一种语法和语义融合的开源代码搜索方法 | |
CN111914533B (zh) | 一种解析英语长句的方法及系统 | |
CN111339272A (zh) | 代码缺陷报告检索方法及装置 | |
CN111949781B (zh) | 一种基于自然语句句法分析的智能交互方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200519 |