CN106294786A - 一种代码搜索方法和系统 - Google Patents
一种代码搜索方法和系统 Download PDFInfo
- Publication number
- CN106294786A CN106294786A CN201610665959.6A CN201610665959A CN106294786A CN 106294786 A CN106294786 A CN 106294786A CN 201610665959 A CN201610665959 A CN 201610665959A CN 106294786 A CN106294786 A CN 106294786A
- Authority
- CN
- China
- Prior art keywords
- score
- result
- mark
- code
- search
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种代码搜索方法和系统。该方法包括:基于用户输入的搜索词对代码进行一次搜索;对通过一次搜索得到的结果集根据相关性、代码质量、查询意图、用户反馈中的一个或多个进行二次排序;将经过二次排序的所述结果集作为搜索结果返回给所述用户。根据本发明的实施例,可以有效的提高代码搜索的效果,为开发者提供最符合需要、最优质的代码搜索结果。
Description
技术领域
本申请大体涉及搜索领域,尤其是针对代码领域的搜索方法和系统。
背景技术
随着互联网的兴起,通用搜索引擎为大家所熟知,能够提供各类的相关信息。而基于满足特定行业人群的需求,出现了垂直搜索引擎。垂直搜索引擎为用户提供的是范围极为缩小、极具针对性的具体信息,服务于特定的人群,例如新闻搜索、图片搜索、旅游类的搜索、音乐搜索等。
但是服务于软件开发相关用户的、针对代码领域的垂直搜索引擎还没有进行精细化处理。代码领域的垂直搜索引擎必须针对软件开发领域、编程语言、代码等特点,其中数据处理的算法模型需要综合考虑代码领域的特征。
发明内容
有鉴于此,本申请的实施例希望提供一种用于针对代码领域的垂直搜索引擎的方法以及垂直搜索引擎。
本申请实施例的技术方案是这样实现的:
本发明提供一种代码搜索方法和系统。该方法包括:基于用户输入的搜索词对代码进行一次搜索;对通过一次搜索得到的结果集进行二次排序;将经过二次排序的所述结果集作为搜索结果返回给所述用户,其中所述二次排序包括根据通过以下处理中的一个或多个而得到的分数对所述结果集中的结果进行二次排序:对通过一次搜索得到的结果集进行相关性分数计算以得到所述结果集中每个结果的相关性分数;对通过一次搜索得到的结果集进行代码质量分数计算以得到所述结果集中每个结果的代码质量分数;对通过一次搜索得到的结果集进行查询意图符合度分数计算以得到所述结果集中每个结果的查询意图符合度分数;以及对通过一次搜索得到的结果集进行用户反馈分数计算以得到所述结果集中每个结果的用户反馈分数。
根据本申请的一个实施例,其中根据分数对所述结果集进行二次排序进一步包括:根据所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的一个或多个得到所述结果集中每个结果的二次排序分数;根据每个结果的二次排序分数对所述结果集中的结果进行二次排序。
根据本申请的一个实施例,其中根据所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的一个或多个得到所述结果集中每个结果的二次排序分数进一步包括:对所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的所述一个或多个分别进行归一化;以及根据归一化后的所述一个或多个分数得到所述结果集中每个结果的二次排序分数。
根据本申请的一个实施例,其中所述相关性分数计算包括对所述结果集进行相关性分析,通过以下方式实现:
score_corr=score_orig/logM N,
其中,score_orig是通过一次搜索得到的所述结果集中每个结果的原始相关性分数;N是所述结果在通过一次搜索得到的所述结果集中的排位数;M是可配置的底数;score_corr是所述结果的计算出的所述相关性分数。
根据本申请的一个实施例,其中所述代码质量分数计算包括对所述结果集进行代码质量分析,通过以下方式实现:
score_qual=score_row*A+score_norm*B+score_func*C,
其中,score_row是通过一次搜索得到的所述结果集中每个结果的行数项分数;score_norm是所述结果的书写规范分数;score_func是所述结果的功能复杂度分数;A、B和C是预先配置的权重系数;score_qual是所述结果的计算出的所述代码质量分数。
根据本申请的一个实施例,其中所述查询意图符合度分数计算包括对结果集进行查询意图分析,通过以下方式实现:
其中,a是搜索词映射后的结果;b是搜索集映射后的结果;将a和b进行余弦相似度计算;cosθ是该结果的计算出的查询意图符合度分数,值越大代表相似度越高,结果为1代表完全符合。
根据本申请的一个实施例,其中所述用户反馈分数计算包括对所述结果集进行用户反馈分析,通过以下方式实现:
score_feeb=title_cli*E+unfol_cli*F+fulsce_cli*G,
其中,title_cli是通过一次搜索得到的所述结果集中每个结果的标题点击曝光率;unfol_cli是所述结果的展开点击曝光率;fulsce_cli是所述结果的全屏点击曝光率;E、F和G是预先配置的权重系数;score_feeb是所述结果的计算出的所述用户反馈分数。
根据本申请的一个实施例,其中所述代码质量分数的归一化通过以下方式实现:
score_norm_qual=(score_qual-min)/(max-min)
其中,score_qual是每个结果的代码质量分数,min是所述结果集中所有结果的代码质量分数中的最小值,max是所述结果集中所有结果的代码质量分数中的最大值,score_norm_qual是所述结果的归一化的代码质量分数。
根据本申请的一个实施例,其中所述二次排序分数的计算通过以下方式实现:
score_sort=score_norm_corr*M+score_norm_qual*N+score_norm_quer*P+score_norm_feeb*Q,
其中,score_norm_corr是每个结果的归一化的相关性分数,score_norm_qual是所述结果的归一化的代码质量分数,score_norm_quer是所述结果的归一化的查询意图符合度分数,score_norm_feeb是所述结果的归一化的用户反馈分数,M、N、P和Q是预先配置的权重系数。
根据本申请的一个实施例,其中所述权重系数通过以下方式被预先配置:在测试环境中部署代码搜索服务;整理统一的搜索词测试集;根据测试集,使用服务DCG方法评估结果;分析搜索效果对权重参数进行调整;再次重复使用所述服务DCG方法评估结果、对所述参数进行所述调整直到效果达到设定的阈值。
本申请的实施例根据代码的特点,综合考虑代码的相关性、代码质量、用户查询意图以及用户反馈等因素中的一个或多个,对代码搜索结果进行二次排序,有效地提升了代码搜索的效果,使得使用者获得良好的用户体验。
附图说明
在附图中(这些附图不一定是按照比例绘制的),相同的数字能够描述不同视图中的相似部件。具有不同字母后缀的相同数字能够表示相似部件的不同示例。附图通过示例而非限制的方式概括地示例了本申请中讨论的各个实施例。
图1示出了根据本发明实施例的示例代码搜索方法100的示意图。
图2示出了根据本发明实施例的示例代码搜索方法200的流程图。
图3示出了根据本发明实施例的搜索词预处理过程300的流程图。
图4示出了根据本发明实施例的计算结果集的相关性分数的过程400的流程图。
图5示出了根据本发明实施例的计算结果集的代码质量分数的过程500的流程图。
图6示出了根据本发明实施例的计算查询意图符合度分数的过程600的流程图。
图7示出了根据本发明实施例的计算用户反馈分数的过程700的流程图。
图8示出了根据本发明实施例的调整权重系数的过程800的流程图。
图9示出了根据本发明实施例的代码搜索系统900的示意模块图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可能认识的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
参考图1,示出了根据本申请实施例的示例代码搜索方法100的框架流程图。在步骤102,对用户发起的搜索请求进行一次搜索。在步骤104,对一次搜索的结果集进行二次排序104。在步骤106,给用户返回搜索结果106。
参考图2,示出了根据本申请实施例的示例代码搜索方法200的步骤流程图。
在步骤202,用户发起搜索请求。用户一般通过搜索引擎发起搜索请求。在一个示例中,用户可以通过使用诸如PC端、笔记本电脑、智能手机以及平板电脑等的设备通过网络连接访问搜索引擎,并使用关键词进行搜索。
在一个示例中,首先对用户输入的搜索词进行分词,因为用户可能输入多个词的语句。
在步骤204,对于用户输入的搜索词进行预处理。其中对搜索词进行多重技术处理,以便尽可能地提取搜索词的核心信息以及搜索意图、类别等。
在步骤206,基于对搜索词预处理的结果进行一次搜索,得出包含一个或多个结果的结果集。结果集原始排序是根据用户输入的搜索词命中结果的频次。
然后对通过一次搜索得到的结果集进行二次排序。根据本申请的一个实施例,二次排序可包括以下一个或多个子步骤:
步骤208:对一次搜索得到的结果集进行相关性分数计算,输出结果集中的每个结果的相关性分数。
步骤210:对一次搜索得到的结果集进行代码质量分数计算,输出结果集中的每个结果的代码质量分数。
步骤212:对一次搜索得到的结果集进行查询意图符合度计算,输出结果集中的每个结果的查询意图符合度分数。
步骤214:对一次搜索得到的结果集进行用户反馈分数计算,输出结果集中的每个结果的用户反馈分数。
应当理解,以上步骤跟顺序无关。
在步骤208之后,还可以包括可选的步骤218:对步骤208中得到的相关性分数进行归一化计算。
在步骤210之后,还可以包括可选的步骤220:对步骤210中得到的代码质量分数进行归一化计算。
在步骤212之后,还可以包括可选的步骤222:对步骤212中得到的查询意图符合度分数进行归一化计算。
在步骤214之后,还可以包括可选的步骤224:对步骤214中得到的用户反馈分数进行归一化计算。
步骤226:根据在步骤218-224中分别得到的归一化相关性分数、归一化代码质量分数、归一化查询意图符合度分数、归一化用户反馈分数对结果集中的每个结果,计算用于二次排序的综合分数(或称为二次排序分数)。
在对结果集进行二次排序之后,在步骤228,将经过二次排序的所述结果集作为搜索结果返回给所述用户。在一个示例中,以倒序的方式返回搜索结果。
参考图3,示出了根据本申请实施例的搜索词预处理的过程300的流程图。
在步骤308中,根据用户输入的搜索词,预处理模块对搜索词中的语言类型识别,预处理模块基于数据库中语言的类型,来识别出搜索词中的类型。例如用户输入“java多线程”,预处理模块能够识别出用户是要搜索“java”语言类型的代码;例如用户输入“C中指针”,预处理模块能够识别出用户是要搜索“C”语言类型的代码。从而把搜索结果限定于识别出的语言的范围中。
在步骤310中,根据用户输入的搜索词,预处理模块基于数据库对搜索词进行同义词的处理,在后续的查询过程中用搜索词和同义词作为查询条件。例如用户输入“thread”,预处理模块能够识别出“thread”的同义词为“线程”,在接下来的查询过程中基于“thread”和“线程”作为查询条件。例如用户输入“进程”,预处理模块能够识别出“进程”的同义词为“process”,而在接下来的查询过程中基于“进程”和“process”作为查询条件。
在步骤312中,根据用户输入的搜索词,预处理模块对搜索词进行核心词的提取,基于数据库中的核心词汇,提取搜索词中的核心词,在后续的查询中提高核心词作为查询条件的优先级。例如用户输入“java多线程代码”,预处理模块基于数据库提取搜索词中的核心词“多线程”,在后续的查询结果处理中命中“多线程”的结果要比没有命中“多线程”的结果排序优先。而搜索词中的“代码”属于非核心词,在后续的查询结果处理中不作为查询依据。
在步骤314中,根据用户输入的搜索词,预处理模块根据搜索词进行用户查询意图的分析。基于预设的主题类型库,预先判断出搜索词的所属主题类型,然后将用户的搜索词打上所属主题类型及其权重系数(表示倾向于这个类型的程度的分数)的标签。这个标签会在后续的查询中作为查询条件以提高查询精确度,同时作为后续的计算查询意图符合度分数的输入之一。例如,用户输入“如何实现java的多线程并发”,经过预处理,从其中提取出“java”、“多线程”主题类型,并给它们打上分数,得到标签,例如“java,0.9”、“多线程,1.0”。
参考图4,示出了根据本申请实施例的计算相关性分数的过程400的流程图。
在一实施例中,根据用户发起的搜索请求,对搜索词进行预处理,获得一次搜索结果集,结果集中的排序是根据用户输入的搜索词命中结果的频次,然后对这些排序结果计算出原始相关性分数408。在步骤410,通过相关性分数算法对原始相关性分数进行计算,得出结果集中每个结果的相关性分数,其以供后续的归一化、二次排序分数计算使用。
在相关性分数算法的一个示例中,计算相关性分数的具体实现方式如下式所示:
score_corr=score_orig/logM N
其中,score_orig是一次搜索的结果集中每个结果的原始相关性分数;N是该结果在一次搜索结果集中的排位数;M是可配置的底数;score_corr是该结果的计算出的相关性分数。
本领域技术人员还可以想到其他的实施例。
参考图5,示出了根据本申请实施例的计算代码质量分数的过程500的流程图。
在一实施例中,根据用户发起的搜索请求,对搜索词进行预处理,获得一次搜索结果集,在步骤508,基于数据库读取代码数据,获取结果集中每个结果的代码内容、属性、代码格式、可读性、完整性等,例如语言类型、行数、标题以及描述等。在步骤510,依据代码质量评估算法提取出每个结果中代码的质量指标,并进行综合加权从而计算出每个结果的代码质量分数512。代码质量分数512可以衡量结果代码的优劣程度,以供后续归一化、二次排序分数计算使用。
例如,可根据如下公式计算出代码质量分数:
score_qual=score_row*A+score_norm*B+score_func*C
其中,score_row是一次搜索结果集中作为结果的代码的行数项分数;score_norm是结果代码的书写规范分数;score_func是结果代码的功能复杂度分数;A、B和C是以上各项分数的权重系数,其中这些权重系数是可以预先配置的;score_qual是该结果的计算出的代码质量分数。
参考图6,示出了根据本申请实施例的计算查询意图符合度分数的过程600的流程图。
在一实施例中,根据用户发起的搜索请求,对搜索词进行预处理,获得一次搜索结果集,在步骤608,基于数据库读取代码数据,获取出每个结果的代码内容、属性、代码格式、可读性、完整性等,例如语言类型、行数、标题以及描述等。在步骤610,根据查询意图分析算614预测结果集中的每个结果的代码的主题类型以及权重系数(表示倾向于这个类型程度的分数)。在步骤612,再次获取用户发起的搜索词以及在预处理中得到的搜索词所属的主题类型以及该类型的权重系数的标签。对搜索词和结果集中的所述主题和权重分别映射为(主题1,权重1),(主题2,权重2)…(主题N,权重N)。然后对610和612中得出的结果进行相似度计算,得出查询意图符合度分数616,以供后续的归一化、二次排序分数计算使用。例如,可根据如下公式计算出查询意图符合度分数:
其中,a是搜索词映射后的结果;b是搜索集映射后的结果;将a和b进行余弦相似度计算;cosθ是该结果的计算出的查询意图符合度分数,值越大代表相似度越高,结果为1代表完全符合。
参考图7,示出了根据本申请实施例的计算用户反馈分数的过程700的流程图。
在步骤708,线下周期性地收集用户日志,根据用户日志计算出各用户使用界面的各项操作按钮的历史点击曝光率,如搜索页面上的代码标题、展开、全屏、复制、“对我有用”等操作按钮的点击曝光率,并存储在数据库中,并且周期性地不断更新历史点击曝光率数据。在一示例中,用户日志为一个或多个特定网站为其用户存储的操作日志。
在一实施例中,根据用户发起的搜索请求,对搜索词进行预处理,获得一次搜索结果集,基于数据库读取结果得到每个结果的用户反馈数据,即各项操作的历史点击曝光率(这里可以请发明人增加一个具体的例子,说明怎样得到作为搜索结果的一个代码的标题点击曝光率、展开点击曝光率、全屏点击曝光率等)。在步骤712,根据用户反馈分数算法计算出用户反馈分数,以供后续的归一化、二次排序分数计算使用。例如,可根据如下公式计算出用户反馈分数:
score_feeb=title_cli*E+unfol_cli*F+fulsce_cli*G
其中,title_cli是一次搜索结果集中每个结果的标题点击曝光率;unfol_cli是该结果的展开点击曝光率;fulsce_cli是该结果的全屏点击曝光率;E,F,G是以上各项点击曝光率的权重系数,这些权重系数是可预先配置的;score_feeb是该结果的计算出的用户反馈分数。
如图2所示,步骤208-214分别对结果集中每个结果的相关性分数、代码质量分数、查询意图符合度分数、用户反馈分数进行归一化计算,分别得到如下分数:归一化相关性分数、归一化代码质量分数、归一化查询意图符合度分数、对一化用户反馈分数。归一化是将上游有量纲的数据经过变化,化为无量纲的数据。在一实施例中,在进行代码质量分数归一化时,针对一次搜索结果集中的搜索结果或一次搜索结果集中排序靠前的若干个(例如前50个、100个等)搜索结果,取其最大值和最小值。在一个示例中,每个结果的归一化分数通过以下公式计算:
score_norm_qual=(score_qual-min)/(max-min),
其中,score_qual是该结果的代码质量分数,min是结果集中所有结果(或排序靠前的若干个(例如前50个、100个等)搜索结果)的代码质量分数中的最小值,max是结果集中所有结果(或排序靠前的若干个(例如前50个、100个等)搜索结果)的代码质量分数中的最大值,score_norm_qual是该结果的归一化代码质量分数。
应当理解,在上面的208-214步骤之后,都可以进行可选的归一化步骤。
如图2所示,在进行归一化分数计算之后,根据加权算法计算出每个结果的二次排序分数,具体实现方式如下:
score_sort=score_norm_corr*M+score_norm_qual*N+score_norm_quer*P+score_norm_feeb*Q,
其中,score_norm_corr是归一化相关性分数,score_norm_qual是归一化代码质量分数,score_norm_quer是归一化查询意图符合度分数,score_norm_feeb是归一化用户反馈分数,M、N、P、Q是权重系数,权重系数是可预先配置的。
如图8所示,其中上述描述的A、B、C、M、N、P、Q权重系数的配置步骤方法800如下:
在步骤802,在测试环境中部署代码搜索服务;
在步骤804,整理统一的搜索词测试集;
在步骤806,根据测试集,使用服务DCG方法评估结果;
在步骤808,分析搜索效果对权重参数进行调整;
再次重复步骤806、808直到效果达到设定的阈值。
基于上面的方法实施例,本申请还提供了针对代码领域的搜索系统。以下系统/系统实施例的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本申请系统实施例中未披露的技术细节,请参照本申请方法实施例的描述。
根据本申请实施例的搜索系统可通过软件、硬件、固件或它们的任意组合的方式实施在任何通用或专用计算系统中。
如图9所示,所述搜索系统包括:
发起搜索请求模块902,被配置为用户发起搜索请求;
分词模块904,被配置为对用户发起请求的搜索词进行分词;
搜索词预处理模块906,被配置为对搜索词进行预处理;
预处理模块906包括语言类型识别模块908,被配置为对搜索词进行语言类型识别;
预处理模块906包括同义词处理模块910,被配置为对搜索词进行同义词处理;
预处理模块906包括提取核心词模块912,被配置为对搜索词进行核心词的提取。
预处理模块906包括查询意图分析模块914,被配置为对搜索词进行用户查询意图分析。
计算结果集相关性分数模块916,被配置为计算一次搜索得到的结果进行相关性分数计算;
计算结果集代码质量分数模块918,被配置为计算一次搜索得到的结果进行代码质量分数计算;
计算查询意图符合度分数模块920,被配置为计算一次搜索得到的结果进行查询意图符合度分数计算;
计算用户反馈分数模块922,被配置为计算一次搜索得到的结果进行用户反馈分数计算;
归一化相关性分数模块924,被配置为计算相关性分数的归一化分数;
归一化代码质量分数模块926,被配置为计算代码质量分数的归一化分数;
归一化查询意图符合度分数模块928,被配置为计算查询意图符合度分数的归一化分数;
归一化用户反馈分数模块930,被配置为计算用户反馈分数的归一化分数;
二次排序分数模块932,被配置为计算归一化相关性分数、归一化代码质量分数、归一化查询意图符合度分数、归一化用户反馈分数进行加权计算每个一次搜索结果的二次排序分数。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种代码搜索方法,包括:
基于用户输入的搜索词对代码进行一次搜索;
对通过一次搜索得到的结果集根据相关性、代码质量、查询意图、用户反馈中的一个或多个进行二次排序;
将经过二次排序的所述结果集作为搜索结果返回给所述用户。
2.根据权利要求1所述的代码搜索方法,其中根据分数对所述结果集进行二次排序进一步包括:
根据所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的一个或多个得到所述结果集中每个结果的二次排序分数;
根据每个结果的二次排序分数对所述结果集中的结果进行二次排序。
3.根据权利要求2所述的代码搜索方法,其中根据所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的一个或多个得到所述结果集中每个结果的二次排序分数进一步包括:
对所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的所述一个或多个分别进行归一化;以及
根据归一化后的所述一个或多个分数得到所述结果集中每个结果的二次排序分数。
4.根据权利要求1所述的代码搜索方法,其中所述相关性分数计算包括对所述结果集进行相关性分析,通过以下方式实现:
score_corr=score_orig/logM N,
其中,score_orig是通过一次搜索得到的所述结果集中每个结果的原始相关性分数;N是所述结果在通过一次搜索得到的所述结果集中的排位数;M为可配置的底数;score_corr是所述结果的计算出的 所述相关性分数。
5.根据权利要求1所述的代码搜索方法,其中所述代码质量分数计算包括对所述结果集进行代码质量分析,通过以下方式实现:
score_qual=score_row*A+score_norm*B+score_func*C,
其中,score_row是通过一次搜索得到的所述结果集中每个结果的行数项分数;score_norm是所述结果的书写规范分数;score_func是所述结果的功能复杂度分数;A、B和C是预先配置的权重系数;score_qual是所述结果的计算出的所述代码质量分数。
6.根据权利要求1所述的代码搜索方法,其中所述查询意图符合度分数计算包括对结果集进行查询意图分析,通过以下方式实现:
其中,a是搜索词映射后的结果;b是搜索集映射后的结果;将a和b进行余弦相似度计算;cosθ是该结果的计算出的查询意图符合度分数,值越大代表相似度越高,结果为1代表完全符合。
7.根据权利要求1所述的代码搜索方法,其中所述用户反馈分数计算包括对所述结果集进行用户反馈分析,通过以下方式实现:
score_feeb=title_cli*E+unfol_cli*F+fulsce_cli*G,
其中,title_cli是通过一次搜索得到的所述结果集中每个结果的标题点击曝光率;unfol_cli是所述结果的展开点击曝光率;fulsce_cli是所述结果的全屏点击曝光率;E、F和G是预先配置的权重系数;score_feeb是所述结果的计算出的所述用户反馈分数。
8.根据权利要求3所述的代码搜索方法,其中所述代码质量分数的归一化通过以下方式实现:
score_norm_qual=(score_qual-min)/(max-min)
其中,score_qual是每个结果的代码质量分数,min是所述结果集中所有结果的代码质量分数中的最小值,max是所述结果集中所有结果的代码质量分数中的最大值,score_norm_qual是所述结果的归一化的代码质量分数。
9.根据权利要求3所述的代码搜索方法,其中所述二次排序分数的计算通过以下方式实现:
score_sort=score_norm_corr*M+score_norm_qual*N+score_norm_quer*P+score_norm_feeb*Q,
其中,score_norm_corr是每个结果的归一化的相关性分数,score_norm_qual是所述结果的归一化的代码质量分数,score_norm_quer是所述结果的归一化的查询意图符合度分数,score_norm_feeb是所述结果的归一化的用户反馈分数,M、N、P和Q是预先配置的权重系数。
10.根据权利要求4-5以及7-9中任一项所述的代码搜索方法,其中所述权重系数通过以下方式被预先配置:
在测试环境中部署代码搜索服务;
整理统一的搜索词测试集;
根据测试集,使用服务DCG方法评估结果;
分析搜索效果对权重参数进行调整;
再次重复使用所述服务DCG方法评估结果、对所述参数进行所述调整直到效果达到设定的阈值。
11.一种代码搜索系统,包括:
搜索模块,用于基于用户输入的搜索词对代码进行一次搜索;
排序模块,用于对通过一次搜索得到的结果集根据相关性、代码质量、查询意图、用户反馈中的一个或多个进行二次排序;
返回模块,用于将经过二次排序的所述结果集作为搜索结果返回给所述用户。
12.根据权利要求11所述的代码搜索系统,其中根据分数对所述结果集进行二次排序模块进一步包括:
根据所述相关性分数模块、所述代码质量分数模块、所述查询意图符合度分数模块和所述用户反馈分数模块中的一个或多个得到所述结果集中每个结果的二次排序分数的模块;
根据每个结果的二次排序分数对所述结果集中的结果进行二次 排序的模块。
13.根据权利要求12所述的代码搜索系统,其中根据所述相关性分数模块、所述代码质量分模块数、所述查询意图符合度分数模块和所述用户反馈分数模块中的一个或多个得到所述结果集中每个结果的二次排序分数模块进一步包括:
归一化模块,用于对所述相关性分数、所述代码质量分数、所述查询意图符合度分数和所述用户反馈分数中的所述一个或多个分别进行归一化;以及
根据归一化后的所述一个或多个分数得到所述结果集中每个结果的二次排序分数的模块。
14.根据权利要求11所述的代码搜索系统,其中所述相关性分数计算模块包括对所述结果集进行相关性分析,通过以下方式实现:
score_corr=score_orig/logM N,
其中,score_orig是通过一次搜索得到的所述结果集中每个结果的原始相关性分数;N是所述结果在通过一次搜索得到的所述结果集中的排位数;M是可配置的底数;score_corr是所述结果的计算出的所述相关性分数。
15.根据权利要求1所述的代码搜索系统,其中所述代码质量分数计算模块包括对所述结果集进行代码质量分析,通过以下方式实现:
score_qual=score_row*A+score_norm*B+score_func*C,
其中,score_row是通过一次搜索得到的所述结果集中每个结果的行数项分数;score_norm是所述结果的书写规范分数;score_func是所述结果的功能复杂度分数;A、B和C是预先配置的权重系数;score_qual是所述结果的计算出的所述代码质量分数。
16.根据权利要求1所述的代码搜索系统,其中所述查询意图符合度分数计算模块包括对结果集进行查询意图分析,通过以下方式实现:
其中,a是搜索词映射后的结果;b是搜索集映射后的结果;将a和b进行余弦相似度计算;cosθ是该结果的计算出的查询意图符合度分数,值越大代表相似度越高,结果为1代表完全符合。
17.根据权利要求1所述的代码搜索系统,其中所述用户反馈分数计算模块包括对所述结果集进行用户反馈分析,通过以下方式实现:
score_feeb=title_cli*E+unfol_cli*F+fulsce_cli*G,
其中,title_cli是通过一次搜索得到的所述结果集中每个结果的标题点击曝光率;unfol_cli是所述结果的展开点击曝光率;fulsce_cli是所述结果的全屏点击曝光率;E、F和G是预先配置的权重系数;score_feeb是所述结果的计算出的所述用户反馈分数。
18.根据权利要求13所述的代码搜索系统,其中所述代码质量分数模块的归一化模块通过以下方式实现:
score_norm_qual=(score_qual-min)/(max-min)
其中,score_qual是每个结果的代码质量分数,min是所述结果集中所有结果的代码质量分数中的最小值,max是所述结果集中所有结果的代码质量分数中的最大值,score_norm_qual是所述结果的归一化的代码质量分数。
19.根据权利要求13所述的代码搜索系统,其中所述二次排序分数模块中计算通过以下方式实现:
score_sort=score_norm_corr*M+score_norm_qual*N+score_norm_quer*P+score_norm_feeb*Q,
其中,score_norm_corr是每个结果的归一化的相关性分数,score_norm_qual是所述结果的归一化的代码质量分数,score_norm_quer是所述结果的归一化的查询意图符合度分数,score_norm_feeb是所述结果的归一化的用户反馈分数,M、N、P和Q是预先配置的权重系数。
20.根据权利要求14-15以及17-19中任一项所述的代码搜索系 统,其中所述权重系数通过以下方式被预先配置:
在测试环境中部署代码搜索服务;
整理统一的搜索词测试集;
根据测试集,使用服务DCG方法评估结果;
分析搜索效果对权重参数进行调整;
再次重复使用所述服务DCG方法评估结果、对所述参数进行所述调整直到效果达到设定的阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610665959.6A CN106294786A (zh) | 2016-08-12 | 2016-08-12 | 一种代码搜索方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610665959.6A CN106294786A (zh) | 2016-08-12 | 2016-08-12 | 一种代码搜索方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106294786A true CN106294786A (zh) | 2017-01-04 |
Family
ID=57671780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610665959.6A Pending CN106294786A (zh) | 2016-08-12 | 2016-08-12 | 一种代码搜索方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294786A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103365A (zh) * | 2017-04-12 | 2017-08-29 | 邹霞 | 机器学习模型的透视分析方法 |
CN108628607A (zh) * | 2018-03-16 | 2018-10-09 | 广州市金度信息科技有限公司 | 一种基于人工智能辅助软件开发的方法、系统及存储介质 |
CN109359188A (zh) * | 2018-09-30 | 2019-02-19 | 北京数聚鑫云信息技术有限公司 | 一种组件编排方法和系统 |
WO2019042165A1 (zh) * | 2017-08-28 | 2019-03-07 | 广东神马搜索科技有限公司 | 搜索结果优化方法、装置、服务器及可读存储介质 |
CN110196952A (zh) * | 2019-05-30 | 2019-09-03 | 百度时代网络技术(北京)有限公司 | 程序代码的搜索处理方法、装置、设备及存储介质 |
CN110543331A (zh) * | 2018-05-29 | 2019-12-06 | 南京大学 | 一种基于测试代码片段相似性的测试程序抄袭检测方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055587A (zh) * | 2007-05-25 | 2007-10-17 | 清华大学 | 一种基于用户行为信息的搜索引擎检索结果重排序方法 |
CN101079048A (zh) * | 2006-05-24 | 2007-11-28 | 上海万纬信息技术有限公司 | 基于软件机器人排除标准的互联网信息搜索引擎及方法 |
CN102063488A (zh) * | 2010-12-29 | 2011-05-18 | 南京航空航天大学 | 一种基于语义的代码搜索方法 |
CN102193999A (zh) * | 2011-05-09 | 2011-09-21 | 北京百度网讯科技有限公司 | 一种对搜索结果进行排序的方法及设备 |
CN102253982A (zh) * | 2011-06-24 | 2011-11-23 | 北京理工大学 | 一种基于查询语义和点击流数据的查询建议方法 |
CN103631794A (zh) * | 2012-08-22 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 一种用于对搜索结果进行排序的方法、装置与设备 |
CN104050235A (zh) * | 2014-03-27 | 2014-09-17 | 浙江大学 | 基于集合选择的分布式信息检索方法 |
-
2016
- 2016-08-12 CN CN201610665959.6A patent/CN106294786A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079048A (zh) * | 2006-05-24 | 2007-11-28 | 上海万纬信息技术有限公司 | 基于软件机器人排除标准的互联网信息搜索引擎及方法 |
CN101055587A (zh) * | 2007-05-25 | 2007-10-17 | 清华大学 | 一种基于用户行为信息的搜索引擎检索结果重排序方法 |
CN102063488A (zh) * | 2010-12-29 | 2011-05-18 | 南京航空航天大学 | 一种基于语义的代码搜索方法 |
CN102193999A (zh) * | 2011-05-09 | 2011-09-21 | 北京百度网讯科技有限公司 | 一种对搜索结果进行排序的方法及设备 |
CN102253982A (zh) * | 2011-06-24 | 2011-11-23 | 北京理工大学 | 一种基于查询语义和点击流数据的查询建议方法 |
CN103631794A (zh) * | 2012-08-22 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 一种用于对搜索结果进行排序的方法、装置与设备 |
CN104050235A (zh) * | 2014-03-27 | 2014-09-17 | 浙江大学 | 基于集合选择的分布式信息检索方法 |
Non-Patent Citations (2)
Title |
---|
刘石 等: "《基于语法与语义分析的代码搜索结果优化》", 《计算机科学》 * |
徐晓燕 等: "《软件度量的研究与进展》", 《信息工程大学学报》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103365A (zh) * | 2017-04-12 | 2017-08-29 | 邹霞 | 机器学习模型的透视分析方法 |
WO2019042165A1 (zh) * | 2017-08-28 | 2019-03-07 | 广东神马搜索科技有限公司 | 搜索结果优化方法、装置、服务器及可读存储介质 |
CN109829098A (zh) * | 2017-08-28 | 2019-05-31 | 广东神马搜索科技有限公司 | 搜索结果优化方法、装置及服务器 |
CN108628607A (zh) * | 2018-03-16 | 2018-10-09 | 广州市金度信息科技有限公司 | 一种基于人工智能辅助软件开发的方法、系统及存储介质 |
CN108628607B (zh) * | 2018-03-16 | 2021-10-26 | 广州市金度信息科技有限公司 | 一种基于人工智能辅助软件开发的方法、系统及存储介质 |
CN110543331A (zh) * | 2018-05-29 | 2019-12-06 | 南京大学 | 一种基于测试代码片段相似性的测试程序抄袭检测方法 |
CN110543331B (zh) * | 2018-05-29 | 2021-07-06 | 南京大学 | 一种基于测试代码片段相似性的测试程序抄袭检测方法 |
CN109359188A (zh) * | 2018-09-30 | 2019-02-19 | 北京数聚鑫云信息技术有限公司 | 一种组件编排方法和系统 |
CN109359188B (zh) * | 2018-09-30 | 2020-01-14 | 北京数聚鑫云信息技术有限公司 | 一种组件编排方法和系统 |
CN110196952A (zh) * | 2019-05-30 | 2019-09-03 | 百度时代网络技术(北京)有限公司 | 程序代码的搜索处理方法、装置、设备及存储介质 |
CN110196952B (zh) * | 2019-05-30 | 2021-11-12 | 百度时代网络技术(北京)有限公司 | 程序代码的搜索处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776503B (zh) | 文本语义相似度的确定方法及装置 | |
CN106294786A (zh) | 一种代码搜索方法和系统 | |
CN111104526A (zh) | 一种基于关键词语义的金融标签提取方法及系统 | |
CN111797239B (zh) | 应用程序的分类方法、装置及终端设备 | |
US20130073514A1 (en) | Flexible and scalable structured web data extraction | |
CN101609450A (zh) | 基于训练集的网页分类方法 | |
CN104424308A (zh) | 网页分类标准获取方法、装置及网页分类方法、装置 | |
CN109472022B (zh) | 基于机器学习的新词识别方法及终端设备 | |
US20180210897A1 (en) | Model generation method, word weighting method, device, apparatus, and computer storage medium | |
US11893537B2 (en) | Linguistic analysis of seed documents and peer groups | |
CN111061939B (zh) | 基于深度学习的科研学术新闻关键字匹配推荐方法 | |
US20050138079A1 (en) | Processing, browsing and classifying an electronic document | |
CN103678422A (zh) | 网页分类方法和装置、网页分类器的训练方法和装置 | |
Kiran et al. | User specific product recommendation and rating system by performing sentiment analysis on product reviews | |
CN111666766A (zh) | 数据处理方法、装置和设备 | |
US20210173874A1 (en) | Feature and context based search result generation | |
CN101937432A (zh) | 一种按照供需信息进行两方撮合的系统与方法 | |
CN101986309A (zh) | 查询题库的方法及装置 | |
CN111291551B (zh) | 文本处理方法、装置、电子设备及计算机可读存储介质 | |
CN112307314A (zh) | 搜索引擎精选摘要的生成方法和装置 | |
CN109684473A (zh) | 一种自动简报生成方法及系统 | |
CN107291686B (zh) | 情感标识的辨识方法和情感标识的辨识系统 | |
Syn et al. | Using latent semantic analysis to identify quality in use (qu) indicators from user reviews | |
CN109325096B (zh) | 一种基于知识资源分类的知识资源搜索系统 | |
KR102041915B1 (ko) | 인공지능을 활용한 데이터베이스 모듈 및 이를 이용하는 경제데이터 제공 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190311 Address after: Room 205A, 2nd floor, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015 Applicant after: Beijing Innovation Lezhi Network Technology Co., Ltd. Address before: 10102 8th Floor, Building 6, 33 Guangshun North Street, Chaoyang District, Beijing Applicant before: Beijing Innovation Information Technology Co., Ltd. |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170104 |