CN111309853B - 一种基于结构化信息的代码搜索方法 - Google Patents
一种基于结构化信息的代码搜索方法 Download PDFInfo
- Publication number
- CN111309853B CN111309853B CN201910828478.6A CN201910828478A CN111309853B CN 111309853 B CN111309853 B CN 111309853B CN 201910828478 A CN201910828478 A CN 201910828478A CN 111309853 B CN111309853 B CN 111309853B
- Authority
- CN
- China
- Prior art keywords
- search
- code
- information
- obtaining
- structured 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 104
- 238000003058 natural language processing Methods 0.000 claims abstract description 11
- 238000005516 engineering process Methods 0.000 claims description 6
- 239000003607 modifier Substances 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 abstract description 2
- 230000003068 static effect Effects 0.000 abstract 2
- 230000006870 function Effects 0.000 description 10
- 230000018109 developmental process Effects 0.000 description 7
- 238000002372 labelling Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
- G06F16/3334—Selection or weighting of terms from queries, including natural language queries
-
- 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
- G06F16/3335—Syntactic pre-processing, e.g. stopword elimination, stemming
-
- 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
- G06F16/3338—Query expansion
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于结构化信息的代码搜索方法,通过静态解析源代码获取结构化信息和统计信息来计算代码元素的权重,构建结构化代码库;在输入搜索语句时,利用自然语言处理方法提取关键词,同时获取关键词的同义词与近义词,构建多个查询条件;合并搜索条件的返回结果作为最终的返回结果。本发明充分挖掘静态代码的结构化信息,同时自然语言处理方式来深度挖掘搜索语句和含义,过程清晰明了,来源广泛稳定,拓展成本低廉,具有较高的工业应用价值。
Description
技术领域
本发明涉及一种基于结构化信息的代码搜索方法,属于代码搜索技术领域。
背景技术
代码单元是一个功能实现的程序片段,本发明中将一个方法体称之为代码单元,软件组件通过代码单元向外部提供功能支持,其他模块在需要实现某个功能时可以调用现有的的代码单元,在实际生产中在不同项目中相同功能实现的方式和过程都有一定的区别。在项目开发过程中快速实现某个功能模块需要查找大量的开发文档和阅读海量的代码,开发人员在进度的约束下实现这些功能,将面临巨大的挑战。代码单元的快速复用,稍微修改后快速重用,可以加快开发进度和提高生产效率。在任务时间进度的限制下,快速地获取相关功能的样例代码,不仅可以减少文档和代码的阅读压力,加快开发进度,同时有足够的时间来提高代码质量。
针对这一问题,目前标注方式主要有人工标注,博客论坛第三方标注,无标注纯文本匹配,本发明从源代码中获取结构化信息,通过实际项目和JDK源码来计算结构化信息中元素的权重,将带有权重的结构化信息作为代码单元的标签。获取搜索语句中的关键词,同时获取关键词的同义词或近义词,利用不同关键词的同义词或近义词产生多个不同的搜索条件。本发明减少了标注对外部资源的依赖,增加了工业应用价值,利用重构搜索条件来提高搜索结果的准确度,最后利用结构化信息合并结果并微调。
发明内容
本发明正式针对现有技术存在的问题,提供一种基于结构化信息的代码搜索方法,该方法通过静态地解析源代码获取结构化信息,并且利用实际项目来计算结构化信息元素的权重,将带权重的结构化信息作为代码单元的标签。在此基础上,重构搜索条件来提高搜索准确度。
为了达到上述目的,本发明的技术方案如下,一种基于结构化信息的代码搜索方法,包括如下步骤:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(JavaDevelopment Kit)源码和项目源码中的类型和类型的方法信息;
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有的类型中的使用情况,并且计算每个元素的权重,构建结构化代码库;
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,同时获取关键词相似度最高的2个同义词或近义词;
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中多个关键词的同义词或近义词,产生多条具有相似语义的搜索条件;
步骤5)返回搜索结果,执行多个搜索条件获得返回结果,获取搜索条件和结构化信息的交集,并求交集元素权重之和,再利用结构化信息中控制流,变量名来调整结果。
本发明方法的优选方案中,步骤1)中通过解析源代码来获取结构化信息,基于Java语言的特性,代码中主要分为类型,方法,其他。类型表示某类对象的特征,方法表示实现某一功能的代码片段。其他表示在代码单元中起到逻辑控制的作用。基于结构的角度,一类为代码单元即方法的结构信息,称之为块信息,其中包含修饰符,方法名,返回类型,参数类型。方法体内的涉及到的类型,称之为类型,方法体内调用对象的方法,称之为被调用方法,方法体内所有使用的名称,称之为变量名,控制方法内的业务逻辑的关键字,称之为控制流。
基于此,生成结构化信息的方法的具体流程为:
a)导入源代码生成抽象语法树。
b)提取JDK源码和项目源代码中所有的类型和类型的方法信息,一个方法体视为一个代码单元,获取方法体的返回值,方法名,修饰符,参数类型,全限定性路径名,称之为块信息。获取方法体内所有的类型,被调用的方法,控制流,变量名。
本发明方法的优选方案中,步骤2)中计算元素权重的方法的具体流程为:
对于步骤1)生成的JDK源码和项目源码的类型和方法信息,利用实际项目中代码类型和方法的使用情况,对现有的类型和方法进行投票,类型或者方法被使用的次数。
对于步骤2)采取1957年Luhn,Hans Peter用到的TF,IDF值计算权重的方法,每个结构化信息中的元素的权重的公式为:
其中wi表示结构化信息中的元素在实际项目中的权重,mi表示出现该元素的代码单元数,n表示代码库中代码单元的总数,sumi表示本项目中出现该元素的次数。
本发明方法中,步骤4)中获取多条同义或近义的搜索条件的具体流程为:
(a)利用现有的自然语言处理技术,对搜索语句进行去除停用词,分词,提取关键词等步骤,将输入的搜索语句分解成搜索条件形如:
query(a,b,c...)
(b)获取每个关键词最相近的2个同义词或近义词,如:a1 a2,b1 b2
c1 c2,分别表示a b c的同义词或近义词。利用不同关键词的同义词和近义词产生多个搜索条件。
本发明方案中,步骤5)中返回结果的具体流程为:
(a)对每个搜索条件执行搜索过程,首先获取搜索条件与结构化信息的交集,对交集中元素的权重求和作为排序权重;
(b)合并(a)中的多个搜索结果按照权重的降序进行排序,按照语言内部原有的优先级对合并后的结果进行调整。
本发明方法挖掘了结构化信息在实际项目中的使用情况作为代码单元的标注信息。同时结合了对搜索语句的分词和重构,利用生成的多条搜索条件的返回结果来提高搜索准确率和性能。与现有技术相比,本发明具有以下优点:
(1)减少对外部资源的依赖,现有的代码搜索技术中对代码的标注主要来源:人工标注,博客论坛等第三方资源,其中人工标注的准确性高,但是标注效率低下,每次拓展信息的类型需要重新训练模型,严重依赖人的主观判断,同一事物不同人用不同的方式描述,容易产生歧义。本发明只需要源代码,自动化从代码的结构上获取信息,从现实项目中统计数据来标注代码单元。减少对外部的依赖,具有较高的工业应用价值;
(2)该方案提高了代码单元标签的精准度,现在广泛应用的代码搜索技术采用的是无标注的纯文本匹配,忽略了代码单元结构上的信息,同样忽视了编程语言自有的规则,准确率还有待提高,本发明从结构,语言规则,项目统计等角度产生代码单元的标签,在上述的角度更加准确地表示代码单元的含义,提高了代码单元标签的精准度;
(3)该方案提高了搜索结果的准确度,提取搜索语句的关键词和关键词相应的同义词,近义词;组合多个关键词的同义词或近义词产生多个搜索条件,获取产生的搜索条件的搜索结果,合并上述结果按照权重降序排序,结构化信息中的控制流和变量名进行微调。本发明通过这种方式提高了搜索准确度和性能。
附图说明
图1是本发明方法的流程图;
图2是结构化信息示例图;
图3解析搜索语句示例图,它提取搜索语句通过同义词近义词生成多个搜索条件;
图4是从JDK源码,项目源码,代码库中计算结构化信息的权重示例图;
具体实施方式:
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
一种基于结构化信息的代码搜索方法,本发明提供一种通过静态获代码的结构化信息,统计在实际项目中出现权重作为代码单元标签,构建代码库。在此基础上,通过对搜索条件的重构,然后合并多个搜索结构来提高搜索的准确性。
实施例1:参见图1-图4,一种基于结构化信息的代码搜索方法:图1给出了基于结构化信息的代码搜索方法的体系结构,下面给出几个主要部分的具体说明。
步骤1)获取结构化信息:
本组件的主要功能通过静态解析Java源代码来获取代码单元的结构化信息,其中块信息包括返回值类型,方法名,修饰符,参数类型,全限定性路径名;类名包含了方法体内所有涉及到的类型的名称和全限定性路径名;方法名包含方法体内所有涉及到的被调用的方法名称;控制流包含if-else,while,do-while,for等;变量名表示方法体内所有的变量的名称。
目前源代码解析成抽象语法树技术可以完成这一工作,如JDT(Java DevelopmentTool)。
步骤2)计算元素权重:
本组件的主要功能是利用提取到的数据对结构化信息中的元素进行统计,然后计算权重,给定一阈值,去除掉没有权重或者权重过低的元素,最后使用统计到的数据作为元素的权重。带有权重的结构化信息作为代码单元的标签,然后将代码有标签的代码单元放入代码库中。
步骤3)分析搜索语句:
本组件的主要功能是提取搜索语句中的关键词,同时获取关键词的同义词和近义词,通过组合不同关键词的同义词和近义词生成多个具有相似语义的搜索条件。作为执行过程的输入。
目前已有很多种工具可以获取近义词和同义词这一工作,如WordNet等。
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中的同义词或近义词,产生多条具有相似语义的搜索条件。
步骤5)返回最后结果。
本组件的主要功能是根据上述多个搜索语句通过执行搜索过程返回的结果,利用返回结果的权重进行合并按照权重降序排序,然后利用结构化信息中的控制流和变量名对结果进行微调,返回TOP-K作为结果返回。
参见图1,一种基于结构化信息的代码搜索方法,具体过程如下:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(JavaDevelopment Kit)源码和项目源码中的类型和类型的方法信息。
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有的类型中的使用情况,并且计算每个元素的权重,构建代码库。
(a)通过对源代码提取抽象语法树,然后提取代码单元的结构化信息,结构化信息中包含块信息,类型名,方法名,控制流,变量名。块信息包括修饰符,方法名,返回类型,参数类型。类型名表示方法体内涉及到的类型,方法名表示方法体内被调用的方法名称,控制流表示在方法体内控制逻辑的关键词。变量名表示方法体内部对象变量的名称。本发明通过遍历抽象语法树获取JDK和项目源码中的类型和对应的方法信息。
(b)采取1957年Luhn,Hans Peter用到的TF,IDF值计算权重的方法,每个结构化信息中的元素的权重的公式为:
其中wi表示结构化信息中的元素在实际项目中的权重,mi表示出现该元素的代码单元数,n表示代码库中代码单元的总数,sumi表示本项目中出现该元素的次数。
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,获取关键词相似度最高的同义词或近义词。
本发明使用NLP技术对输入的搜索语句去停用词,分词,提取关键词,将关键词组合成搜索条件。使用工具WordNet获取现有关键词的同义词和近义词,根据返回的相似度,选取相似度最高的2个同义词或近义词。
步骤4)获取多条同义或近义的搜索条件。组合步骤3)中的同义词或近义词,产生多条具有相似语义的搜索条件。
(a)利用现有的自然语言处理技术,对搜索语句进行去除停用词,分词,提取关键词等步骤,将输入的搜索语句分解成搜索条件形如:
query(a,b,c...)
(b)获取每个关键词最相近的2个同义词或近义词,如:a1 a2,b1 b2,c1 c2,分别表示a b c的同义词或近义词。利用不同关键词的同义词和近义词产生多个搜索条件。
步骤5)返回搜索结果,执行步骤4)中产生的搜索条件,获取返回的搜索结果,获取搜索条件和结构化信息的交集,并求交集元素权重之和,在利用结构化信息中控制流,变量名来微调结果。
(a)对每个搜索条件执行搜索过程,首先获取搜索条件与结构化信息的交集,对交集中元素的权重求和作为排序权重。
(b)合并(a)中的多个搜索结果按照权重的降序进行排序,按照语言内部原有的优先级对合并后的结果进行调整。
具体过程:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(JavaDevelopmentKit)源码和项目源码中的类型和类型的方法信息。
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有的类型中的使用情况,并且计算每个元素的权重,构建结构化代码库。
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,同时获取关键词相似度最高的2个同义词或近义词。
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中多个关键词的同义词或近义词,产生多条具有相似语义的搜索条件。
步骤5)返回搜索结果,执行多个搜索条件获得返回结果,获取搜索条件和结构化信息的交集,并求交集元素权重之和,再利用结构化信息中控制流,变量名来调整结果。
应用实施例:
为了方便描述,我们假定有如下简化的应用实例:选取代码单元如下所示
根据前面提到的计算步骤,依次实施:
第一步,获取结构化信息,提取本示例结构化信息如图3所示,格式为
<块信息,类名,方法名,控制流,变量名>;
块信息:com.XXX.XXX,connectiontest,Connection,public.
类名:Class,Connection,DriverManager,String.
方法名:forname,getconnection,isclosed,database;
控制流:try,catch
变量名:connection,A,B.
第二步通过获取到的类型集合和结构化信息集合,统计实际项目中的使用情况,计算元素的权重。
Label(x)=(connection:2,DriverManager:1,getconnection:4)
Label(x)表示代码单元的带权重的标签,x表示代码单元,数字表示TF*IDF的值。
第三步分析搜索语句,通过NLP来对搜索语句进行分词,去停用词,提取关键词。使用工具WordNet提取关键词的同义词或近义词,其中提取相似度最高的2个。如图4;
搜索语句:test the link of database.
分析后产生的搜索条件:(link,database)
关键词的同义词或近义词:
link:association,connection;
Database:
Database为组合词,保持原样。
第四步:获取多条同义或近义的搜索条件,组合第三步中的同义词或近义词,构建多条具有相似语义的搜索条件。由于对示例进行了缩减,只展示部分示例,如下:
①(connection,database)
②(association,database)
第五步,返回搜索结果,为每个搜索条件执行搜索过程获取搜索结果,然后利用结构化信息对结果进行微调,最后返回结果。
(a)根据搜索条件优化部分传递过来的关键词集合,将该集合中关键词与数据库中的标签元素做相似度匹配,如果搜索条件中的关键词和代码单元标签中的元素相匹配,那么获取标签中命中的元素,对命中的元素进行求和,并将求和结果作为结果权重,在结果中进行降序排序。
query(y)=(connection,database)
query(y)表示搜索条件集合,y表示搜索语句。
cross=label(x)∩query(y)
cross表示搜索集合与标签中元素的匹配到的元素的集合即交集。
rank(q)表示搜索集合与不同代码单元匹配的排序权重,q表示搜索集合,hit(x)表示代码标签中命中的元素返回的权重。
(b)根据第四步中的搜索条件获取对应的搜索结果列表:R1 R2 R3 R4 R5 R6 R7R8.由于结果组合情况很多,本发明选取了①②两个语句执行并合并结果,其余搜索条件操作相同。
R1=(98ac6nc0qwtyctzo:10,22bdgjk75dfflkiu:19,tydu85m3002942mn:1,36we8763mmmhczyk:16,01kj2345fhzv56dg:20) ⑴
R2=(dser2309kj204325:0.8,cb3260tvwwyzoipq:2,uvwcz9mn0o80ppoi:12,xdmnrt90cz892643:16,saxc20obksyuhgfd:3) ⑵
R=(01kj2345fhzv56dg:20,22bdgjk75dfflkiu:19,36we8763mmmhczyk:16,uvwcz9mn0o80ppoi:12,98ac6nc0qwtyctzo:10) ⑶
R1和R2合并完之后得到R保留top5个结果记录。剩余的搜索条件执行后获得的结果按照上述⑴⑵⑶三步进行合并,最后返回TOP5作为搜索结果。其中标号表示返回结果中代码单元的存储编号。
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。
Claims (4)
1.一种基于结构化信息的代码搜索方法,其特征在于,所述方法包括以下步骤:
步骤1)获取结构化信息,静态获取Java源代码的抽象语法树,从中提取结构化信息,从中获取代码单元的方法体信息和方法体内元素使用信息,提取JDK(Java DevelopmentKit)源码和项目源码中的类型和类型的方法信息;
步骤2)计算元素权重,利用步骤1)中的类型信息,统计结构化信息元素在现有的类型中的使用情况,并且计算每个元素的权重,构建结构化代码库;
步骤3)分析搜索语句,通过自然语言处理来获取搜索语句中的关键词,同时获取关键词相似度最高的2个同义词或近义词;
步骤4)获取多条同义或近义的搜索条件,组合步骤3)中多个关键词的同义词或近义词,产生多条具有相似语义的搜索条件;
步骤5)返回搜索结果,执行多个搜索条件获得返回结果,获取搜索条件和结构化信息的交集,并求交集元素权重之和,再利用结构化信息中的控制流,变量名来调整结果;步骤5)中返回搜索结果的具体流程:
(a)对每个搜索条件执行搜索过程,首先获取搜索条件与结构化信息的交集,对交集中元素的权重求和作为排序权重;
(b)合并(a)中的多个搜索结果按照权重的降序进行排序,按照语言内部原有的优先级对合并后的结果进行调整。
2.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤1)中,生成结构化信息的方法的具体流程为:
a)提取JDK源码和项目源代码中所有的类型和类型的方法信息;
b)导入源代码生成抽象语法树,一个方法体视为一个代码单元,获取方法体的返回值类型,方法名,修饰符,参数类型,全限定性路径名,获取方法体内所有的类型,被调用的方法,控制流,变量名。
3.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤2)中计算元素权重的方法的具体流程为:
对于步骤1)生成的JDK源码和项目源码的类型的方法信息,利用实际项目中代码类型和方法的使用情况,对现有的类型和方法进行投票,投票类型或者方法被使用的次数;
对于步骤2)中,每个结构化信息中的元素的权重的公式为:
其中wi表示结构化信息中的元素在实际项目中的权重,mi表示出现该元素的代码单元数,n表示代码库中代码单元的总数,sumi表示本项目中出现该元素的次数。
4.根据权利要求1所述的基于结构化信息的代码搜索方法,其特征在于,所述步骤4)中获取多条同义或近义的搜索条件的具体流程为:
(a)利用自然语言处理技术,对搜索语句进行去除停用词,分词,提取关键词步骤,将输入的搜索语句分解成搜索条件形如:
query(a,b,c...);
(b)获取每个关键词最相近的2个同义词或近义词。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910828478.6A CN111309853B (zh) | 2019-09-03 | 2019-09-03 | 一种基于结构化信息的代码搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910828478.6A CN111309853B (zh) | 2019-09-03 | 2019-09-03 | 一种基于结构化信息的代码搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309853A CN111309853A (zh) | 2020-06-19 |
CN111309853B true CN111309853B (zh) | 2024-03-22 |
Family
ID=71159661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910828478.6A Active CN111309853B (zh) | 2019-09-03 | 2019-09-03 | 一种基于结构化信息的代码搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309853B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051253A (zh) * | 2021-04-15 | 2021-06-29 | 广州云族佳科技有限公司 | 一种构建标签数据库的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186633A (zh) * | 2011-12-31 | 2013-07-03 | 北京百度网讯科技有限公司 | 一种结构化信息抽取方法、搜索方法和装置 |
CN106503265A (zh) * | 2016-11-30 | 2017-03-15 | 北京赛迈特锐医疗科技有限公司 | 基于权值的结构化搜索***及其搜索方法 |
CN106776888A (zh) * | 2016-11-30 | 2017-05-31 | 北京赛迈特锐医疗科技有限公司 | 智能结构化搜索***及其搜索方法 |
CN109344230A (zh) * | 2018-10-31 | 2019-02-15 | 任志颖 | 代码库文件生成、代码搜索、联结、优化以及移植方法 |
CN110188104A (zh) * | 2019-05-30 | 2019-08-30 | 中森云链(成都)科技有限责任公司 | 一种面向K12编程的Python程序代码快速搜索方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312437B2 (en) * | 2008-12-30 | 2012-11-13 | Microsoft Corporation | Structured search in source code |
-
2019
- 2019-09-03 CN CN201910828478.6A patent/CN111309853B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186633A (zh) * | 2011-12-31 | 2013-07-03 | 北京百度网讯科技有限公司 | 一种结构化信息抽取方法、搜索方法和装置 |
CN106503265A (zh) * | 2016-11-30 | 2017-03-15 | 北京赛迈特锐医疗科技有限公司 | 基于权值的结构化搜索***及其搜索方法 |
CN106776888A (zh) * | 2016-11-30 | 2017-05-31 | 北京赛迈特锐医疗科技有限公司 | 智能结构化搜索***及其搜索方法 |
CN109344230A (zh) * | 2018-10-31 | 2019-02-15 | 任志颖 | 代码库文件生成、代码搜索、联结、优化以及移植方法 |
CN110188104A (zh) * | 2019-05-30 | 2019-08-30 | 中森云链(成都)科技有限责任公司 | 一种面向K12编程的Python程序代码快速搜索方法 |
Non-Patent Citations (3)
Title |
---|
李阵等.基于多特征权重分配的源代码搜索优化.计算机应用.2018,(第3期),全文. * |
顾逸圣等.基于语法和语义结合的源代码精确搜索方法.计算机应用.2017,(第10期),全文. * |
黄丽韶.基于语法结构的源代码搜索的研究.电脑与电信.2013,(第5期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111309853A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649260B (zh) | 基于评论文本挖掘的产品特征结构树构建方法 | |
Demir et al. | Improving named entity recognition for morphologically rich languages using word embeddings | |
Seymore et al. | Learning hidden Markov model structure for information extraction | |
CN100517301C (zh) | 改进的拼写检查***和方法 | |
CN101751455B (zh) | 采用人工智能技术自动产生标题的方法 | |
CN106407113B (zh) | 一种基于Stack Overflow和commit库的bug定位方法 | |
US20190129942A1 (en) | Methods and systems for automatically generating reports from search results | |
CN107102993B (zh) | 一种用户诉求分析方法和装置 | |
CN112215013B (zh) | 一种基于深度学习的克隆代码语义检测方法 | |
CN105844424A (zh) | 基于网络评论的产品质量问题发现及风险评估方法 | |
CN103049435A (zh) | 文本细粒度情感分析方法及装置 | |
CN105159822A (zh) | 一种基于文本词性和程序调用关系的软件缺陷定位方法 | |
CN104484380A (zh) | 个性化搜索方法及装置 | |
CN111353306A (zh) | 基于实体关系和依存Tree-LSTM的联合事件抽取的方法 | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
CN103646112A (zh) | 利用了网络搜索的依存句法的领域自适应方法 | |
CN102246169A (zh) | 为搜索词分配指标权重 | |
CN101719129A (zh) | 一种采用人工智能技术自动提取关键字的方法 | |
CN112199512B (zh) | 面向科技服务的事理图谱构建方法、装置、设备及存储介质 | |
CN110209816A (zh) | 基于对抗模仿学习的事件识别及分类方法、***、装置 | |
JP2018501540A (ja) | ストップワード識別方法および装置 | |
CN113609838B (zh) | 文档信息抽取及图谱化方法和*** | |
CN114090861A (zh) | 一种基于知识图谱的教育领域搜索引擎构建方法 | |
Cheng et al. | A similarity integration method based information retrieval and word embedding in bug localization | |
CN111309853B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |