CN105389328B - 一种大规模开源软件搜索排序优化方法 - Google Patents
一种大规模开源软件搜索排序优化方法 Download PDFInfo
- Publication number
- CN105389328B CN105389328B CN201510617002.XA CN201510617002A CN105389328B CN 105389328 B CN105389328 B CN 105389328B CN 201510617002 A CN201510617002 A CN 201510617002A CN 105389328 B CN105389328 B CN 105389328B
- Authority
- CN
- China
- Prior art keywords
- open source
- label
- source software
- model
- software
- 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/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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种面向大规模开源软件的搜索排序优化方法,用通用Web爬虫技术爬取开源软件属性、及帖子数据属性,建立开源软件与帖子的关联,计算关联度。根据开源软件关联到的帖子计算该软件的影响力。对用户请求的搜索结果,根据关联度和开源软件的影响力对搜索结果综合排序,即按照关联度*lg(影响力)得到的值由高到低排序,将排序后的搜索结果提供给用户。本申请能根据用户输入的关键字搜索返回相关开源软件,并将用户真正需要的开源软件排在前面。
Description
技术领域
本发明涉及一种搜索排序优化方法,尤其涉及在互联网存在海量开源软件的现实条件下,一种面向大规模开源软件的搜索排序优化方法。
背景技术
随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、WEB服务器、移动操作系统等各个方面已经成为主流。因此受到越来越多的人关注、参与和使用。如何帮助用户快速准确找到开源软件具有重要意义。
目前,诸多搜索引擎和开源软件社区都主要关注能够提高软件资源共享效率和扩大共享范围的技术,这类技术的一个基本思路是根据软件开发者提供的关键字找到相关的开源软件。目前已经得到广泛应用的软件共享技术主要有两类:第一类技术是开源软件托管社区(简称开源社区),如 GitHub、Sourceforge、Googlecode的开源软件搜索引擎。这类网站允许开发人员将其开发的软件项目的源代码和开发过程数据存储在开源社区,其他开发人员可以通过输入关键字以全文检索的方式在开源社区中搜索相关的软件项目,并且免费获取相关项目的版本库(如源代码和技术文档)和开发过程数据(如开发日志、邮件列表、缺陷列表等);第二类技术是软件目录(或软件黄页),如dmoz(http://www.dmoz.or)、OpenHub (https://www.openhub.net/)、开源中国社区等,这类网站往往包含数据巨大的开源软件项目,可以提供软件项目的基本描述、代码统计数据、开发过程统计数据等信息。
上述两类软件共享技术能够为软件开发者提供基本的软件检索和软件数据共享支持,但是尚不能提供面向互联网中更全面的开源软件的搜索,且此类搜索一般都是按搜索关键字的关联度来排序,并未考虑同类开源资源的质量优劣等因素,因此很多时候并不能将用户真正需要的开源软件排在前面。若能提供一个服务,像谷歌、百度这样的搜索引擎一样专门用来搜索开源软件,并能将软件资源本身的质量等因素纳入考量,实现更准确有效的排序,将大大提高用户准确定位所需软件的效率,因此面向大规模开源软件的搜索排序优化意义重大。
发明内容
本发明要解决的技术问题是:面向互联网中海量的开源软件,提出基于用户搜索关键字和开源软件自身影响力的综合排序,帮助用户快速准确定位到需要的开源软件。
本发明的技术方案包括以下步骤:
步骤101、利用通用Web爬虫技术从互联网中的主要开源社区中爬取开源软件的相关数据,抽取出开源软件基本属性;同时利用通用爬虫技术从主要知识分享社区中爬取帖子数据,并抽取帖子基本属性;
步骤102、去重并汇总爬取到的开源软件信息,同时从描述信息中提取出开源软件的别名;
步骤103、根据采集到的开源软件的软件名称、软件标签和帖子标题、帖子标签对开源软件与帖子建立关联,关联结果以[开源软件,帖子,权重] 的形式存储在数据库中,权重越高代表开源软件与帖子的关联度越高。
步骤104、从与开源软件关联度较高的帖子中提取帖子标签,对提取出的所有帖子标签做词频统计,按词频排序取前n个帖子标签,其中n大于等于 1;开源软件的原生标签设置初始的相关性为0,根据用已有的标签的相关性加上提取的帖子标签的词频的方式为已有标签增加相关性,获得“提取的标签”属性,该属性与初始采集出的软件名称、开发语言、软件标签等属性并列,用于后续开源软件搜索过程。
步骤105、根据开源软件关联到的帖子计算该软件的影响力,计算影响力的方法如下:对于某一开源软件,若其关联的所有帖子中某个帖子只与该开源软件关联,则该开源软件的影响力加1,若跟当前开源软件关联的某帖子总共跟n个软件关联到,则当前开源软件的影响力加1/n。
步骤106、建立搜索引擎服务器,对各开源软件在数据库中的id、软件名称、步骤101中提取的开发语言、类型、软件标签、步骤102中提取的别名、步骤104中提取的标签、步骤105中计算的影响力建立索引,其中软件名称、别名、提取的标签几个属性设置较高的权重,开发语言、类型、软件标签设置相对较低的权重。
如果用户输入关键词中包含开发语言,则提取出单独对开发语言、软件标签这两个开源软件属性做搜索,剩余的关键词按设置的权重搜索其它的属性,最终的搜索结果取这两次搜索结果的交集,每一条搜索结果对应一个与关键字的关联度,根据关联度和开源软件的影响力综合排序,即按照关联度*lg(影响力)得到的值由高到低排序,将排序后的搜索结果提供给用户。
步骤107、根据不断爬取的开源软件信息、帖子信息迭代更新开源软件的各个属性。
进一步地,步骤101中所述开源软件基本属性包括软件名称、描述信息、开发语言、类型、软件标签、创建时间、来源;所述帖子基本属性包括帖子标题、内容、帖子标签。
进一步地,所述步骤103具体步骤如下:
步骤103.1、用软件名称与帖子标题进行匹配,以软件名称为关键词查找帖子标题,若帖子标题中出现了软件名称,则该帖子与开源软件建立关联,并赋予权值w1。
步骤103.2、用软件名称与帖子标签进行匹配,以软件名称为关键词查找帖子标签,若帖子具有与开源软件名称相同的标签,则为该帖子与开源软件建立关联,并赋予权值w2。
步骤103.3、基于由103.1和103.2两步建立的所有关联,对软件标签与帖子标题进行匹配,统计帖子标题中包含的开源软件标签的个数x,用x计算开源软件与帖子的关联权值w3,计算公式为:W3=0.5*log2(x2+1),采用对数运算表明标签个数x与可信度的关系。
步骤103.4、基于由103.1和103.2两步建立的所有关联,对软件标签与帖子标签进行匹配,统计在两者共同出现的标签个数y,计算权值:
W4=0.6*log2(y2+1)。
步骤103.5、根据权重公式W=W1+W2+(W1+W2)*(W3+W4)计算最终匹配权值,当关联的权值W大于阈值q时,认为该帖子与开源软件是关联的,关联结果以[开源软件,帖子,权值]的形式存储在数据库中,完成关联。
进一步地,步骤104中为已有标签增加相关性并获得“提取的标签”属性的步骤具体包括:若该开源软件已有的标签中包含了所述n个从它的关联帖子的标签中的提取出来的某些标签,则对该开源软件已有的这些标签增加相关性,增加相关性的方式就是用已有的标签的相关性加上提取的帖子标签的词频;将这些增加了相关性后的标签存放到一个新的字段中,得到与该开源软件“更相关”的标签属性,称该属性为“提取的标签”。
采用本发明可以达到以下技术效果:
本发明适用于对开源社区中所有的开源软件的搜索,能根据用户输入的关键字搜索返回相关开源软件,并将用户真正需要的开源软件排在前面,让用户快速准确找到想要的软件。
附图说明
图1为本发明面向大规模开源软件搜索排序优化的流程图;
图2为本发明方法的实施例涉及的网络节点交互示意图;
图3为根据本发明开源软件搜索排序优化的方法,接收到用户输入关键词后返回搜索结果的流程图。
具体实施方式
本发明具体实施步骤如下。
步骤101、利用通用的Web爬虫技术从互联网中的主要开源社区(如 SourceForge、OpenHub、OSChina等)中爬取开源软件的相关数据,抽取出开源软件基本属性(软件名称、描述、开发语言、类型、标签、创建时间、来源等)。同时从主要的知识分享社区(如StackOverFlow、CSDN等)中爬取帖子数据,并抽取帖子的基本属性(标题、内容、标签等)。
步骤102、去重并汇总爬取到的开源软件信息,同时从描述信息中提取出开源软件的别名。提取别名的具体方式为:根据开源软件描述信息中的系动词,如“是”、“is”,提取系动词和系动词之前第一个分隔符(如“,”、“。”、“.”等)之间的字符,然后判断这些提取的字符串和开源软件名称是否是相互的一部分,再判断两者是否是各自的缩写,即由每个英文单词的大写字母组成,若满足一种情况则将该字符串保存下来作为开源软件的别名,以[开源软件,别名]的方式存储在数据库。例如开源软件Eclipse在OSChina中的名称为“集成开发环境Eclipse”,而它的描述信息是类似“Eclipse是著名的跨平台的自由集成开发环境(IDE)……”,我们会从该描述信息中,提取系动词“是”和“是”之前的第一个分隔符(此例中为描述信息句首)之间的字符串,即提取到了“Eclipse”这个字符串,之后判断提取的字符串是否是所述开源软件名称字符串的一部分,而“Eclipse”是“集成开发环境Eclipse”的一部分,因此最终从描述信息中提取到了该软件的别名“Eclipse”。还有一种情况是判断是否是各自的缩写,如OSChina中的某开源软件的名称为“开放路由器平台XORP”,描述信息为“eXtensible Open Router Platform是可扩展开放路由器平台……”,根据系动词“是”提取字符串“eXtensible Open Router Platform”,从这个提取的字符串中发现大写字母“X”、“O”、“R”、“P”组合后的字符串包含在所述开源软件名称“开放路由器平台XORP”中,则从描述信息中提取了别名“eXtensible Open Router Platform”。
步骤103、根据采集到的开源软件的软件名称、软件标签和帖子标题、帖子标签对开源软件与帖子建立关联。
所述步骤103具体步骤如下:
步骤103.1、用软件名称与帖子标题进行匹配,以软件名称为关键词查找帖子标题,若帖子标题中出现了软件名称,则该帖子与开源软件建立关联,并赋予权值w1。实际计算中,w1取0.8。
步骤103.2、用软件名称与帖子标签进行匹配,以软件名称为关键词查找帖子标签,若帖子具有与开源软件名称相同的标签,则为该帖子与开源软件建立关联,并赋予权值w2。在实际的计算中,w2取1.0。
步骤103.3、基于由103.1和103.2两步建立的所有关联,对软件标签与帖子标题进行匹配,统计帖子标题中包含的开源软件标签的个数x,用x计算开源软件与帖子的关联权值w3,计算公式为:W3=0.5*log2(x2+1),采用对数运算表明标签个数x与可信度的关系。
例如开源软件MySQL有标签“database”、“mysql”、“server”,某一个帖子 S标题为“How to transfer mysql data to cassandra database?”,则帖子标题中包含软件标签数为2(“mysql”和“database”),开源软件MySQL与帖子D的关联权重为:W3=0.5*log 5。
步骤103.4、基于由103.1和103.2两步建立的所有关联,对软件标签与帖子标签进行匹配,统计在两者共同出现的标签个数y,计算权值:
W4=0.6*log2(y2+1)。
同样以开源软件MySQL和帖子D为例,帖子D有标签“database”、“cassandra”、“nosql”,开源软件MySQL和帖子D的共同标签数y=1(标签“database”),计算出的匹配权重为W4=0.6*log22。
步骤103.5、计算最终匹配权重。步骤103.1到步骤103.4我们根据软件名称、标签和知识分享社区中的帖子的标题、标签信息来做两者的关联,并为每一步的关联结果赋予了相应的权值,这4步匹配结束后,计算最终的权值,权重公式表示为:W=W1+W2+(W1+W2)*(W3+W4)。选取合适的阈值决定开源软件是否与帖子相关联。当关联的权值W大于阈值q时,认为该帖子与开源软件是关联的。在实际的计算中,q值取1.3。关联结果以[开源软件,帖子,权重]的形式存储在数据库中(权重越大,关联度越高),完成关联。
步骤104、从与开源软件关联度较高的帖子中提取帖子标签,对提取出的所有帖子标签做词频统计,按词频排序取前n个帖子标签,其中n大于等于 1;开源软件的原生标签设置初始的相关性为0,根据用已有的标签的相关性加上提取的帖子标签的词频的方式为已有标签增加相关性,获得“提取的标签”属性,该属性与初始采集出的软件名称、开发语言、软件标签等属性并列,用于后续开源软件搜索过程。
从与开源软件关联度较高的帖子中提取帖子标签,用帖子标签来对开源软件本身的标签加权或者对开源软件新增标签。我们知道很多知识分享社区(如StackOverFlow、CSDN)中的帖子都带有标签,而开源社区中的很多开源软件也带有标签,但这些已有的标签中有些并不是与该开源软件关联非常紧密的,实验中我们发现,开源软件关联到的帖子中,有很多帖子的标签与软件标签是相同的,因此我们想到用关联到的帖子的标签来模拟开源社区中为开源软件打标签的群体智慧。我们首先对与开源软件关联度较高的帖子(需要保证开源软件与帖子关联的正确性)的所有标签做词频统计,按词频排序取前20个帖子标签,之所以只取词频高的前20个,主要是考虑只有在更多的关联帖子中出现才能真正反映出这些标签与开源软件的相关性。我们将开源软件原生的标签设置初始的相关性为0,即初始时将已有的标签看做同等相关,若该开源软件已有的标签中包含了上述的20个我们从它的关联帖子的标签中的提取出来的某些标签,则对该开源软件已有的这些标签增加相关性,增加相关性的方式就是用已有的标签的相关性加上提取的帖子标签的词频。例如,“Eclipse”这个开源软件已有的“IDE”这个标签的初始相关性为0,我们从其关联的帖子中统计所有的帖子标签的词频,按词频由高到低排序留下前20个标签,这20个标签中存在“IDE”这个标签词频为50,那么我们将“Eclipse”的“IDE”标签增加相关性后值变为50。然后我们把这些增加了相关性后的标签存放到一个新的字段中,得到与该开源软件“更相关”的标签属性,该属性与软件名称、开发语言、标签等属性并列,用于后续的开源软件搜索过程,下文中统称该属性为“提取的标签”。另外,我们也会对没有标签或标签很少(少于3个)的开源软件打上词频较高的前5个标签。
步骤105、根据开源软件关联到的帖子计算该软件的影响力,计算影响力的方法如下:对于某一开源软件,若其关联的所有帖子中某个帖子只与该开源软件关联,则该开源软件的影响力加1,若跟当前开源软件关联的某帖子总共跟n个软件关联到,则当前开源软件的影响力加1/n。
步骤106、建立搜索引擎服务器,对各开源软件在数据库中的id、软件名称、步骤101中提取的开发语言、类型、软件标签、步骤102中提取的别名、步骤104中提取的标签、步骤105中计算的影响力建立索引,其中软件名称、别名、提取的标签几个属性设置较高的权重,开发语言、类型、软件标签设置相对较低的权重。
如果用户输入关键词中包含开发语言,则提取出单独对开发语言、软件标签这两个开源软件属性做搜索,剩余的关键词按设置的权重搜索其它的属性,最终的搜索结果取这两次搜索结果的交集,每一条搜索结果对应一个与关键字的关联度,根据关联度和开源软件的影响力综合排序,即按照关联度*lg(影响力)得到的值由高到低排序,将排序后的搜索结果提供给用户。
关键字搜索时先对用户输入的关键字分词,判断关键字中是否包含开发语言(Java、C/C++、PHP、Ruby等等),若包含则提取出单独对开发语言、标签这两个开源软件属性做搜索,剩余的关键词按设置的权重搜索其它的属性,最终的搜索结果取这两次搜索结果的交集。搜索后,返回的每一条搜索结果对应一个开源软件,包括各个索引中的属性都可获得,且每一条搜索结果对应一个与关键字的关联度,我们对这个关联度加入影响力的因素,根据关联度和开源软件的影响力综合排序,即按照关联度*lg(影响力)得到的值由高到低排序。然后根据这些搜索到的开源软件的id,从数据库中读取要返回给用户的信息,包括软件名称、描述信息、标签、创建时间以及来源(即所在的开源社区)等。
步骤107、根据不断爬取的开源软件信息、帖子信息迭代更新开源软件的各个属性。
如图3所示,示出了当有用户输入搜索关键词时,搜索排序优化流程。
步骤201、用户输入搜索关键字,并提交请求。
步骤202、搜索服务器接收请求,判断关键字中是否含有开发语言 (Java、C/C++、PHP、Ruby等)关键词,若有则从关键字中提取出来,搜索时只对开源软件的开发语言、标签这两个属性做搜索。然后对关键字分词(分词过程包括特殊字符、非关键词的过滤)。例如,用户输入关键字“基于ruby 的blog、”,服务器会提取出“ruby”关键字,分词后得到“基于”、“的”、“blog”、“、”,过滤掉特殊字符“、”和非关键词“基于”、“的”后,得到关键字“blog”。最终用“ruby”和“blog”对指定的属性搜索。
步骤203、从关键字中提取的开发语言关键词对开发语言、标签两个属性做搜索,剩余的关键词从开源软件名称、别名、提取的标签、类型、标签五个属性中搜索,这五个属性的权重由高到低,取两次搜索结果的交集。
步骤204、对搜索结果根据关联度和开源软件影响力综合排序。关于开源软件影响力的计算上文技术方案的步骤105已经描述。排序时,我们既需要考虑用户的搜索关键字与返回结果的关联度,还需要考虑用户一般想要找的是影响力较高的软件。通用的搜索引擎一般默认按照关联度排序,如 Solr1的关联度计算是根据搜索关键字和索引文档的向量相似度来得到的,我们在搜索引擎返回的关联度的基础上用影响力加权,得到最终的排序参数,计算方式如公式1。
排序参数=关联度*lg(影响力)...(1)
这个加权是我们经过很多测试调整得到的一个方案,对于大部分的搜索都有一个较合理排序结果。然后搜索服务器将根据排序参数排序后的搜索结果返回给用户。
步骤205、根据用户的对搜索结果的使用情况记录,分析调整影响排序的参数,不断优化排序结果。我们的日志记录了用户的搜索点击行为,包括用户提交的查询关键词、在搜索结果页点进去查看的开源软件、此软件在搜索结果中的排名、用户的IP、用户点击时间等。我们设定能判断是否是用户想要结果的三个维度:该开源软件在搜索结果中的排名(Rank)、该开源软件的点击率(ClickRate)、用户点进去的平均浏览时间(Time)。其中,Rank是根据步骤4得到的搜索结果的排序序号,排序越靠前,用户越可能点击该结果。ClickRate:对于单个用户搜索过程中,某结果被用户点击的次数与此次会话用户总的点击次数的比是当次会话该开源软件的点击率。对所有会话内的开源软件的点击率取平均值即得到开源软件的点击率。用户对某开源软件点击次数越多,点击率越高,可以反映用户越可能也点击此开源软件。 Time:用户点击该搜索结果与点击下一结果的时间差,即用户浏览当前结果的时间。对所有用户对该开源软件的浏览时间取平均值即得到该开源软件的平均浏览时间。浏览时间越长,能反映该开源软件可能是其他用户想要的结果。我们以这三个参数作为输入,以用户对某搜索结果的满意度的评分作为输出,初始时我们人工构造一个训练集,通过三层神经网络训练得到各结果的评分,以此评分作为影响排序的另一个参数,后续的排序参数计算如公式2。
排序参数=评分*关联度*lg(影响力)...(2)
下面结合实施例直观的说明本发明的效果。图2和图3分别是本实施例的网络节点交互示意图和流程图。本实施例包含1个用户U,从各开源社区、知识分享社区采集的数据服务器SDS,经过对数据服务器的数据处理和分析之后建立的搜索引擎服务器SES,开源社区网站SF1和SF2,协同开发社区网站KS1和KS2。
如图2所示,SDS不断从开源社区(SF1、SF2)、知识分享社区(KS1、 KS2)采集开源软件信息和帖子信息,SES的数据也会不断更新。我们发现开源社区中各开源软件的原生标签许多并不是跟该开源软件非常相关的,因此我们在建立开源软件跟帖子的关联后,从关联度较高的帖子中提取标签,对开源软件已有的标签加权单独存放,作为“较重要”(我们认为与该开源软件更相关)的标签,作为搜索的一个权重较高的属性。假设用户U输入关键字“Java IDE”并提交搜索请求,SES接收请求后判断关键字中有开发语言关键词“Java”,将其分离出来搜索开源软件索引中的开发语言、标签两个属性,剩余关键词“IDE”搜索软件名称、别名、从关联帖子的标签中提取的标签、类型、标签等属性,取两者的交集。若关键词“IDE”在名称、别名、提取的标签属性中出现,返回结果的关联度会较高,在类型、标签等设置权重较低的属性中出现返回结果的关联度会相对较低。将开发语言关键词分离出来单独搜索是为了减少项目名中出现了“Java”关键词的返回结果,将提取的标签设置更高的权重是为了将更可能与关键词相关的返回结果排在前面,整体思路是先缩小返回的结果集,即尽可能剔除不相关的结果,然后在缩小后的结果集中尽可能的使得相关的结果有更高的关联度。当然还可以做更多的关键字预处理的过程,如识别关键词的同义词、同现词等,我们目前有了一个较小规模的同义词库,后续会从项目关联的帖子中挖掘出更多的同义词、同现词,不断扩展同义词库。计算搜索结果的关联度时加入每个搜索到的结果的影响力因素,我们目前的策略是对搜索引擎根据文本关联度计算的值再乘以lg(影响力),然后根据计算后的关联度对总的搜索结果排序。开源软件的影响力对搜索结果关联度的影响是不断测试调整的,可以根据用户对搜索结果使用记录,分析调整排序参数,不断优化排序结果,具体如何调整在上述具体实施方式步骤105中已做说明。以上过程则可以简要概括为图3的流程图所示。
以上实施例可以反映出本发明能够在互联网范围较全面的为用户提供开源软件的搜索,而且能返回一个较合理的排序结果,且排序结果可以持续优化,方便用户简单快速的找到想要寻找的开源软件。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (4)
1.一种面向大规模开源软件的搜索排序优化方法,包括下列步骤:
步骤101、利用通用Web爬虫技术从互联网中的主要开源社区中爬取开源软件的相关数据,抽取出开源软件基本属性;同时利用通用爬虫技术从主要知识分享社区中爬取帖子数据,并抽取帖子基本属性;
步骤102、去重并汇总爬取到的开源软件信息,同时从描述信息中提取出开源软件的别名;
步骤103、根据采集到的开源软件的软件名称、软件标签和帖子标题、帖子标签对开源软件与帖子建立关联,关联结果以[开源软件,帖子,权重]的形式存储在数据库中,权重越高代表开源软件与帖子的关联度越高;
步骤104、从与开源软件关联度较高的帖子中提取帖子标签,对提取出的所有帖子标签做词频统计,按词频排序取前n个帖子标签,其中n大于等于1;开源软件的原生标签设置初始的相关性为0,根据用已有的标签的相关性加上提取的帖子标签的词频的方式为已有标签增加相关性,获得“提取的标签”属性,该属性与初始采集出的软件名称、开发语言、软件标签并列,用于后续开源软件搜索过程;
步骤105、根据开源软件关联到的帖子计算该软件的影响力,计算影响力的方法如下:对于某一开源软件,若其关联的所有帖子中某个帖子只与该开源软件关联,则该开源软件的影响力加1,若跟当前开源软件关联的某帖子总共跟n个软件关联到,则当前开源软件的影响力加1/n;
步骤106、建立搜索引擎服务器,对各开源软件在数据库中的id、软件名称、步骤101中提取的开发语言、类型、软件标签、步骤102中提取的别名、步骤104中提取的标签、步骤105中计算的影响力建立索引,其中软件名称、别名、提取的标签几个属性设置较高的权重,开发语言、类型、软件标签设置相对较低的权重;
如果用户输入关键词中包含开发语言,则提取出单独对开发语言、软件标签这两个开源软件属性做搜索,剩余的关键词按设置的权重搜索其它的属性,最终的搜索结果取这两次搜索结果的交集,每一条搜索结果对应一个与关键字的关联度,根据关联度和开源软件的影响力综合排序,即按照关联度*lg得到的值由高到低排序,将排序后的搜索结果提供给用户;
步骤107、根据不断爬取的开源软件信息、帖子信息迭代更新开源软件的各个属性。
2.如权利要求1所述的方法,其中步骤101中所述开源软件基本属性包括软件名称、描述信息、开发语言、类型、软件标签、创建时间、来源;所述帖子基本属性包括帖子标题、内容、帖子标签。
3.如权利要求1所述的方法,其中所述步骤103具体步骤如下:
步骤103.1、用软件名称与帖子标题进行匹配,以软件名称为关键词查找帖子标题,若帖子标题中出现了软件名称,则该帖子与开源软件建立关联,并赋予权值w1;
步骤103.2、用软件名称与帖子标签进行匹配,以软件名称为关键词查找帖子标签,若帖子具有与开源软件名称相同的标签,则为该帖子与开源软件建立关联,并赋予权值w2;
步骤103.3、基于由103.1和103.2两步建立的所有关联,对软件标签与帖子标题进行匹配,统计帖子标题中包含的开源软件标签的个数x,用x计算开源软件与帖子的关联权值w3,计算公式为:W3=0.5*log2(x2+1),采用对数运算表明标签个数x与可信度的关系;
步骤103.4、基于由103.1和103.2两步建立的所有关联,对软件标签与帖子标签进行匹配,统计在两者共同出现的标签个数y,计算权值:W4=0.6*log2(y2+1);
步骤103.5、根据权重公式W=W1+W2+(W1+W2)*(W3+W4)计算最终匹配权值,当关联的权值W大于阈值q时,认为该帖子与开源软件是关联的,关联结果以[开源软件,帖子,权值]的形式存储在数据库中,完成关联。
4.如权利要求1所述的方法,其中步骤104中为已有标签增加相关性并获得“提取的标签”属性的步骤具体包括:若该开源软件已有的标签中包含了所述n个从它的关联帖子的标签中的提取出来的某些标签,则对该开源软件已有的这些标签增加相关性,增加相关性的方式就是用已有的标签的相关性加上提取的帖子标签的词频;将这些增加了相关性后的标签存放到一个新的字段中,得到与该开源软件“更相关”的标签属性,称该属性为“提取的标签”。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510617002.XA CN105389328B (zh) | 2015-09-21 | 2015-09-21 | 一种大规模开源软件搜索排序优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510617002.XA CN105389328B (zh) | 2015-09-21 | 2015-09-21 | 一种大规模开源软件搜索排序优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389328A CN105389328A (zh) | 2016-03-09 |
CN105389328B true CN105389328B (zh) | 2019-07-16 |
Family
ID=55421618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510617002.XA Active CN105389328B (zh) | 2015-09-21 | 2015-09-21 | 一种大规模开源软件搜索排序优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389328B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107256251B (zh) * | 2017-06-08 | 2020-08-25 | 阿里巴巴(中国)有限公司 | 一种应用软件搜索方法、装置及服务器 |
CN107247609B (zh) * | 2017-06-30 | 2020-07-14 | 江西博瑞彤芸科技有限公司 | 字库维护管理方法 |
CN110110275B (zh) * | 2019-05-21 | 2021-07-06 | 秒针信息技术有限公司 | 一种浏览资源的分析方法及分析装置 |
TWI724636B (zh) * | 2019-11-19 | 2021-04-11 | 中華電信股份有限公司 | 原套件名稱關聯方法 |
CN113077367A (zh) * | 2021-04-12 | 2021-07-06 | 同济人工智能研究院(苏州)有限公司 | 一种基于非关系型数据库的智能化性教育平台系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462399A (zh) * | 2014-12-11 | 2015-03-25 | 北京百度网讯科技有限公司 | 搜索结果的处理方法及装置 |
CN104750807A (zh) * | 2015-03-25 | 2015-07-01 | 百度在线网络技术(北京)有限公司 | 一种应用推荐方法及装置 |
CN104750713A (zh) * | 2013-12-27 | 2015-07-01 | 阿里巴巴集团控股有限公司 | 一种对搜索结果进行排序的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150081679A1 (en) * | 2013-09-13 | 2015-03-19 | Avishek Gyanchand | Focused search tool |
-
2015
- 2015-09-21 CN CN201510617002.XA patent/CN105389328B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750713A (zh) * | 2013-12-27 | 2015-07-01 | 阿里巴巴集团控股有限公司 | 一种对搜索结果进行排序的方法及装置 |
CN104462399A (zh) * | 2014-12-11 | 2015-03-25 | 北京百度网讯科技有限公司 | 搜索结果的处理方法及装置 |
CN104750807A (zh) * | 2015-03-25 | 2015-07-01 | 百度在线网络技术(北京)有限公司 | 一种应用推荐方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105389328A (zh) | 2016-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Ad hoc table retrieval using semantic similarity | |
US9715493B2 (en) | Method and system for monitoring social media and analyzing text to automate classification of user posts using a facet based relevance assessment model | |
US9396262B2 (en) | System and method for enhancing search relevancy using semantic keys | |
US8918348B2 (en) | Web-scale entity relationship extraction | |
CN101876981B (zh) | 一种构建知识库的方法及装置 | |
CN105389328B (zh) | 一种大规模开源软件搜索排序优化方法 | |
CN107690634B (zh) | 自动查询模式生成方法及系统 | |
WO2021082123A1 (zh) | 信息推荐方法及装置、电子设备 | |
Du et al. | An approach for selecting seed URLs of focused crawler based on user-interest ontology | |
CN111325018A (zh) | 一种基于web检索和新词发现的领域词典构建方法 | |
Nikas et al. | Open domain question answering over knowledge graphs using keyword search, answer type prediction, SPARQL and pre-trained neural models | |
Choudhary et al. | Role of ranking algorithms for information retrieval | |
Alghamdi et al. | Extended user preference based weighted page ranking algorithm | |
US10339148B2 (en) | Cross-platform computer application query categories | |
KR20120038418A (ko) | 탐색 방법 및 디바이스 | |
Hulpus et al. | An eigenvalue-based measure for word-sense disambiguation | |
Ganguly et al. | Performance optimization of focused web crawling using content block segmentation | |
Bamboat et al. | Web content mining techniques for structured data: A review | |
Gupta et al. | Page ranking algorithms in online digital libraries: A survey | |
Ganguly et al. | A review of focused web crawling strategies | |
Liu et al. | A query suggestion method based on random walk and topic concepts | |
An et al. | Assessment for ontology-supported deep web search | |
Longheu et al. | Tourism websites network: crawling the italian webspace | |
Srinivasan et al. | Improving Search Results Through Reducing Replica in User Profile | |
Chaudhary et al. | A new contrive to evaluate web page ranking |
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 |