首页> 中国专利> 一种基于市场需求的开源软件分析与比较方法

一种基于市场需求的开源软件分析与比较方法

摘要

一种基于市场需求的开源软件分析方法,选取以针对计算机行业的招聘信息为主的招聘站点,爬取广告并抽取广告属性信息;爬取开源软件数据信息;对开源软件和广告信息进行匹配关联;根据用户选择,将反映市场需求的软件列表反馈给用户,同事为软件开发者提供其关心的开源软件就业发展情况。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-12

    授权

    授权

  • 2016-04-06

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150921

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

技术领域

本发明涉及一种开源软件分析方法,尤其涉及一种基于市场对于开源 软件的需求信息对软件进行分析的方法。

背景技术

目前,软件行业正在飞速发展,开源软件数目呈指数增长趋势,如何 选择开源软件已经成为了一个巨大的挑战。与此同时,也出现了很多招聘 网站,比如为大家熟知的领英。这些招聘网站提供给我们很多有价值的数 据和信息。国内非常有名的前程无忧(51job)网站发布的数据显示,截止 到2014年3月,有将近有45万IT职位需求被发布,比去年同比增长了35.9%。 不仅如此,更多以互联网和软件行业量身定造的垂直招聘平台也如雨后春 笋一样,例如内推网和拉勾网。显然,企业对于优秀的IT人才有着极大的 需求,这其中还包括着对不同软件的需求情况。这样的需求对于软件分析 本身来说具有发展性意义,也对软件从业人员极具有指导性意义,应该和 软件质量一样成为研究工作关注的重点。

然而,传统研究关注的都是软件质量本身,提出了Boehm,McCall, Trustie等软件质量评估模型,针对软件的可用性,可靠性,安全性,实时 性等软件本身特性进行评估和分析,却没有针对软件的市场需求情况进行 评估和分析的研究。很多研究将数据挖掘算法将软件开发者和开源软件项 目联系起来,却很少有研究将软件开发者和软件招聘广告联系起来。而这 少数的研究却往往在连接上软件开发者和软件招聘广告后戛然而止,缺少 后续进一步的研究和分析,这是软件分析研究工作中欠缺的部分。

发明内容

本发明的目的在于针对软件分析在市场需求领域上研究的不足,提出 一种基于市场需求的开源软件分析与比较方法,该方法弥补目前按开源软 件分析在市场需求这一领域的空缺,从开发者的经验需求,职位地理位置, 时间的影响三个方面来对开源软件进行分析和比较,并对出现差异的可能 原因进行合理推测。该分析能够为软件研究提供了新的角度,也为软件开 发者提供了选择开源软件的参考依据。

本发明的技术方案包括以下步骤:

步骤101、选取以针对计算机行业的招聘信息为主的招聘站点,采用通 用Web爬虫技术从选取的站点爬取所有能够爬取到的招聘广告,并以HTML代 码格式存储在数据库中。

步骤102、在存储下来的HTML代码基础上进行广告属性的抽取,按广告 的内容分为如下几个字段:广告网址,广告标题,广告标签,创建时间, 广告内容,工作类型,开发者经验,工资范围,工作地点,然后将其存储 在招聘信息数据表中。

进一步地,广告内容的抽取具体包括,从数据库中获取HTML代码信息 并封装成自定义的页面格式,根据不同的页面查找相应的模板进行抽取, 对抽取成功的结果进行输出。

步骤103、采用软件名称与广告标签、软件标签和广告标签、软件名称 和广告标题、软件标签和广告标题四组不同数据进行广告和软件的匹配, 具体为如下几步:

步骤103.1、采用通用Web爬虫技术从互联网的主要项目托管社区中采 集软件的项目数据,获取软件名称;

步骤103.2、采用开源全文检索工具Lucene为采集到的广告文档的文档 标题、文档内容和软件名称建立文件索引;用软件名称与广告标签进行匹 配;若所述文档具有与所述软件名称相同的标签,则为所述广告文档与所 述开源软件建立关联,并赋予权值w1

步骤103.3、用软件名称在文档标题中进行检索,检索的过程使用开源 的Lucene全文检索工具实现,具体实施为:以软件名称为关键词,从步骤 103.2中建立的文件索引中搜索广告文档的标题,若文档标题中含有软件名 称,则为该文档与软件建立关联,并将这次关联赋予权值w2

步骤103.4、对软件标签统计包含在广告标题中的标签个数x,计算权 值w3=0.5*log2(x2+1),该权值表示以软件标签在文档标题中的出现 次数作为该软件与广告文档关联程度的度量,通过权值的计算判断关联结 果的可信度;

步骤103.5、在所有已建立的关联中,对关联的软件标签与广告标签进 行匹配,统计在两者中都出现的标签个数y,计算权值w4=0.6* log2(y2+1);

步骤103.6、步骤103.2到步骤103.5对软件和广告的4种不同数据进行 匹配,并为每一步的关联结果赋予了相应的权值,这4步匹配结束后,计算 最终的权值w=w1+w2+(w1+w2)*(w3+w4),把权值超过指标 的匹配结果看作是匹配成功,并将匹配结果存储在数据库中;

步骤104、从开发者经验、职位地点、软件类型反映软件市场需求数目 和薪资影响,并基于开发者经验、职位地点、软件类型三个不同因素向用 户推荐软件;

进一步地,步骤104进一步包括:

步骤104.1、根据用户需求确定需要进行进一步分类的已经提取广告属 性字段,对数据库存放的匹配结果和抽取结果,进行属性分类、软件分类 和相应的sql操作,将统计信息以可视化方式推荐给用户;

进一步地,步骤104.1可进一步包括:得出市场对不同经验者的需求量 和工资、不同地区的整体工资和需求量、以及同一类软件在同一城市的需 求、工资软件职位数目需求信息。

进一步地,步骤104.1还可以包括:在匹配广告的基础上建立同类软件 关联,推荐给用户,具体的:当若干个软件都与同一广告匹配时,所述若 干个软件之间的值为1,当所述若干个软件都与另一相同广告匹配时,累计 为2,如此类推,当该值超过了设定的阙值,则判定两种软件为同一类软件, 当用户随机选择一软件后,页面不仅仅列出该软件的需求数目和薪资需求, 同时还会列出符合同类软件条件的同类软件,并生成前几名相关同类软件 的需求和数目对比关系图。

采用本发明可以达到以下技术效果:

本发明针对开发者经验、职位位置、软件类型,时间四个因素对软件 进行差异分析,为软件从业人员展示开发经验,城市,软件类型,时间对 软件行业就业的影响,并基于开发经验,城市,软件类型为用户推荐软件。 以市场对开源软件的职位需求情况,结合实际情况对开源软件的市场需求 情况进行分析比较,并对差异出现的原因进行合理的推断,最终可以为传 统的软件分析提供新的参考角度,为软件开发者提供开源软件就业发展情 况。

附图说明

图1为本发明基于市场需求的开源软件分析与比较方法实施的流程图;

图2为本发明一种基于市场需求的开源软件分析与比较方法成果实例 图;

具体实施方式

本发明主要针对一种基于市场需求的开源软件分析与比较方法。

如图1所示,为本发明实现基于市场需求的开源软件分析与比较方法的 流程图,具体执行以下步骤:

步骤101、选取以针对计算机行业的招聘信息为主的招聘站点,采用通 用Web爬虫技术从选取的站点爬取所有能够爬取到的招聘广告,并以HTML代 码格式存储在数据库中。

首先需要选取研究数据的来源和对象。我们的市场需求信息来自于招 聘网站,因此要选择合适的招聘网站,必须包括以下条件:第一,保证有 足量的招聘信息;第二,招聘广告本身要包括足够有价值的信息;第三, 招聘网站必须易于爬取;第四,招聘广告必须都是针对IT行业的。针对第 一点,我们通过indeed网站得搜索功能,统计了目前IT类型招聘广告数量 发布最多的网站,考虑其他三点后,选取了数量排在前八个招聘网站中的 内推网和拉勾网,作为我们招聘网站数据的来源。之后,采用通用的Web爬 虫技术从内推网和拉勾网上爬取所有能够爬取到的招聘广告。以本方法中 爬取的内推网为例,内推网本身有个最新职位的列表页,基本上是它的历 史职位广告的集合,爬虫只需要监视列表页面即可达到爬取该网站所有职 位的目的。首先我们找个爬取入口,爬取入口这里指能看到所有最新职位 的那个列表页,通过“前缀+页面号+后缀”拼接出待爬取的列表页URL, 放到一个集合去,然后提交给爬虫爬取。具体的配置设定如下:

<prefixUrl>http://www.neitui.me/neitui/type=all&amp;page=</prefixUrl>

<postfixUrl>.html</postfixUrl>

<incrementalPages>16</incrementalPages>

<incrementSleepTime>86400</incrementSleepTime>

其中,“http://www.neitui.me/neitui/type=all&amp;page=”即为前 面提到的前缀,“<postfixUrl>.html</postfixUrl>”是后缀, incrementalPages则代表要爬的页数,通常情况下,程序会自动拼接, <incrementSleepTime>86400</incrementSleepTime>代表每天会爬取新的, 86400是秒数,代表一天24小时,只要每隔一段时间,爬取列表页,就能获 得源源不断的新职位信息,我们将其存储下来,此时存储形式为HTML代码。 爬虫对已经爬过的URL和没有爬的URL做区分,防止重复爬取。爬虫会有初 始的种子URL,但是这些URL对于爬虫是远远不够的。爬虫在爬页面的时候, 需要不断发现新的链接,以实现自动化爬行。

步骤102、在存储下来的HTML代码基础上进行广告内容的抽取,按广告 的内容分为如下几个部分:广告网址,广告标题,广告标签,创建时间, 广告内容,工作类型,要求经验,工资范围,工作地点,然后将其存储在 招聘信息数据表中。

广告内容的抽取具体包括,从数据库中获取HTML代码信息并封装成自 定义的页面格式,根据不同的页面查找相应的模板进行抽取,对抽取成功 的结果进行输出。

在此需要步骤101中的爬虫框架,Jsoup,Mybatis开源工具。抽取框架 由四个组件(PageDownloader、PageProcessor、PageErrorOutPut、Pipeline) 构成,主要是将这些组件结合并完成增量抽取的任务:PageDownloader主 要完成从数据源(数据库、文件等)中获取页面信息并封装成RawPage和 Page(此时Page已经被封装在RawPage中);PageProcesser根据不同的页面 找到相应的Model进行抽取(可能存在多个模板);Pipeline接受 PageProcesser抽取成功并封装在Resultltems的结果进行输出,输出的位 置由用户决定;PageErrorOutPut接收PageProcesser抽取失败和Pipeline 存储失败的页面,实现错误页面输出。

采用的两种开源工具,其中MyBatis是支持普通SQL查询,存储过程 和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参 数的手工设置以及结果集的检索。Xsoup是Jsoup基于开发的HTML抽取器, 提供了XPath支持。相比另一个常用的基于XPath的HTML抽取器 HtmlCleaner,Xsoup有较大的性能优势,解析时间和抽取时间都只有 HtmlCleaner的一半。同时Xsoup提供全面的XPath解析错误提示。

更具体地,在步骤102的实施中,还包括

步骤102.1、完成数据库,Mybatis,Spring等配置文件;

步骤102.2、完成PageDonwLoader接口实现类;

步骤102.3、实现对应的模板Xxx_Model;一般对应的model由三个部分 组成:

1.ExtractBy注解和相对应的属性,ExtractBy注解主要作用于字段, 它表示“使用这个抽取规则,将抽取到的结果保存到这个字段中”例如:

ExtractBy(″//div[id=′readme′]/text()″)

privateStringreadme;

2.实现AfterExtractor接口中的方法afterProcess();有的时候,注解 模式无法满足所有需求,我们可能还需要写代码完成一些事情,这个时候 就要用到AfterExtractor接口了。例如:

publicinterfaceAfterExtractor{

publicvoidafterProcess(Pagepage);

}

afterProcess方法会在抽取结束,字段都初始化完毕之后被调用,可 以处理一些特殊的逻辑

3.实现ValidateExtractor接口中的方法validate(),有的时候,我 们需要对抽取的字段做相应的验证,比如字段非空,日期类型检查,数值 型数据监测等,这时候可以用到ValidateExtractor接口。

publicinterfaceValidateExtractor{

publicvoidvalidate(Pagepage);

}

Validate方法会在抽取结束,字段都初始化完毕之后被调用,可以处理 一些验证。

具体model实现为:

步骤102.4、实现抽取结果与数据库映射接口Xxx_Dao;

步骤102.5、完成接口Pipeline的实现类Xxx_Pipeline;

步骤102.6、完成主程序Xxx_Extractor。

步骤103、采用软件名称与广告标签、软件标签和广告标签、软件名称 和广告标题、软件标签和广告标题四组不同数据进行广告和软件的匹配;

具体为如下几步:

步骤103.1、采用通用Web爬虫技术从互联网的主要项目托管社区中采 集软件的项目数据,获取软件名称;

步骤103.2、采用开源全文检索工具Lucene为采集到的广告文档的文档 标题、文档内容和软件名称建立文件索引;用软件名称与广告标签进行匹 配;若所述文档具有与所述软件名称相同的标签,则为所述广告文档与所 述开源软件建立关联,并赋予权值w1,表示以软件名称和广告标签为度量 时,所述广告文档针对所述开源软件的关联程度。(在实际的计算中,取 w1=1)。

步骤103.3、用软件名称在文档标题中进行检索,检索的过程使用开源 的Lucene全文检索工具实现,具体实施为:以软件名称为关键词,从步骤 103.2中建立的文件索引中搜索广告文档的标题,若文档标题中含有软件名 称,则为该文档与软件建立关联,并将这次关联赋予权值w2,表示以软件 名称和广告标题为度量时,所述广告文档针对所述开源软件的关联程度。 在实际的计算中,取w2=0.8。

步骤103.4、对软件标签统计包含在广告标题中的标签个数x,计算权 值w3=0.5*log2(x2+1),该权值表示以软件标签在文档标题中的出现 次数作为该软件与广告文档关联程度的度量,通过权值的计算判断关联结 果的可信度,其表示以软件标签在广告标题中的出现次数作为该软件与广 告文档关联程度的度量,通过权值的计算判断关联结果的可信度。

步骤103.5、在所有已建立的关联中,对关联的软件标签与广告标签进 行匹配,统计在两者中都出现的标签个数y,计算权值w4=0.6* log2(y2+1),其表示以软件标签和广告标签中相同的标签个数作为度量, 通过权值的计算判断关联结果的可信度。

步骤103.6、步骤103.2到步骤103.5对软件和广告的4种不同数据进行 匹配,并为每一步的关联结果赋予了相应的权值,这4步匹配结束后,计算 最终的权值w=w1+w2+(w1+w2)*(w3+w4),把权值超过指标 的匹配结果看作是匹配成功,并将匹配结果存储在数据库中;

步骤104、从开发者经验、职位地点、软件类型反映软件市场需求数目 和薪资影响,并基于开发者经验、职位地点、软件类型三个不同因素向用 户推荐软件;

进一步地,步骤104进一步包括:

步骤104.1、根据用户需求确定需要进行进一步分类的已经提取广告属 性字段,对数据库存放的匹配结果和抽取结果,进行属性分类、软件分类 和相应的sql操作,将统计信息以可视化方式推荐给用户;

进一步地,步骤104.1可进一步包括:得出市场对不同经验者的需求量 和工资、不同地区的整体工资和需求量、以及同一类软件在同一城市的需 求、工资软件职位数目需求信息。

例如:每个广告中都有对开发者经验的要求,经验要求以标签形式存储 在每一条广告的属性中,分为“经验1-3年”“经验3-5年”等标签内容,按 照标签内容不同进行分类处理。可以分为5类,即应届、1-3,3-5,5-10,10 年以上;

然后根据分类好后的标签进行数量和平均薪资计算;

score1=∑number

score2=avg∑salary

具体实现可以采用sql语句,例如以下是平均薪资的计算;

当用户想要查看不同经验的市场需求情况时候,如果选择参考需求量 的时候,显示按照score1的从大到小的顺序返回给用户;如果选择参考薪资 水平,则显示按照score2的从大到小的顺序返回给用户;

基于职位地点的推荐,不同地区的整体工资差异和需求量有区别,同 样职位地区也是以标签形式存储在广告属性中,我们参考前一统计方法进 行同样的处理。

用户在查看该部分结果的时候,需要选择城市地区,然后再选择查看 需求量还是平均薪资水平,显示按照score1和score2的从大到小的顺序返回 给用户。

比如,基于城市的薪资统计的sql操作:

进一步地,步骤104.1还可以包括:在匹配广告的基础上建立同类软件 关联,推荐给用户,具体的:当若干个软件都与同一广告匹配时,所述若 干个软件之间的值为1,当所述若干个软件都与另一相同广告匹配时,累计 为2,如此类推,当该值超过了设定的阙值,则判定两种软件为同一类软件, 当用户随机选择一软件后,页面不仅仅列出该软件的需求数目和薪资需求, 同时还会列出符合同类软件条件的同类软件,并生成前几名相关同类软件 的需求和数目对比关系图。

比如数据库软件中Mysql和MongoDB都匹配上了广告1,那么Mysql和 MongoDB之间的值为1;当两者都匹配到了广告2,则值加1,累计为2,如 此类推。当两种软件之间的值超过了设定的阙值,我们则判定两种软件为 同一类软件。

这个方法的最终展示为,当用户随机选择一软件后,页面不仅仅列出 该软件的需求数目和薪资需求,同时还会列出符合上述条件的同一类型软 件,并生成前几名相关同类软件的需求和数目对比关系图。

该方法基于开源软件的职位的招聘广告,将其转化为对应软件的市场 需求所对应的信息,包括职位数目,平均薪资,所在城市等等。基于这样 的信息,最终对开源软件的市场需求情况一目了然,既是提供对开源软件 新的评估方法,也为开源软件的选择提供可靠依据。

本方法首次涉及市场职位需求下的软件分析和比较,为软件研究提供 创新型视角;同时也为软件开发人员选择开源软件提供了有价值的结论和 分析。比如对步骤5中出现的结果,我们可以经济的角度上分析其原因。根 据我们的分析,得出1-5年经验者最受欢迎可能的原因为:应届生比较少在 意料之中,因为对于大型企业,他们有专门的集中式的校园招聘,而通常 发布的招聘信息则大多都是面对社会人士的招聘。而软件行业偏向于1-5 年经验的人员,也侧面证实了“程序员是吃青春饭”这样的行业戏谈。而 为什么是“青春饭”,我认为可以从行业特殊性着手,软件属于技术创新行 业,而根据实证研究成果显示,技术创新的初期(1-3年),就业需求会 有较大的变化,引起职位需求缺口和专业人士的缺少;在中期(4-6年), 就业的创造效应占据主导地位,这个时候会有大量的就业机会,也会有大 量人员有机会就业;而7年后,技术创新的就会趋于非创新类型。

下面结合实施例直观的说明本发明的效果。图2是实施本实例的交互示 意图。实例中包含一个一个广告数据服务器ADS、开源软件数据服务器SDS、 匹配关系存储服务器MDS、招聘网站W1和W2、一个用于说明交互流程的用户 请求。本发明将从招聘网站W1和W2中获取IT招聘广告数据存入ADS中,从开 源软件网站S1和S2中获取开源软件数据并存入SDS中,采用匹配算法将ADS 与SDS中的数据匹配起来,也就是将广告需求和开源软件关联起来,并存放 在匹配关系存储服务器,同时将会对其进行数据统计并可视化。当用户请 求查看网页中开源软件的市场信息时,服务器会将统计信息以可视化图的 形式返回开源软件的市场需求变化信息和薪资水平。

如图2所示,本发明基于市市场需求的开源软件分析与比较方法成果在 网页上交互,通过本发明,点击一个项目,进入项目主页后网页将展示该 项目的市场需求变化情况,以及同类软件的薪酬等,具体执行以下步骤:

步骤201、采用Web爬虫从开源软件网站S1、S2中爬取开源软件数据并 将数据存储到数据服务器SDS中。

步骤202、从招聘网站W1,W2中通过爬虫获取IT职位招聘广告数据,并 将数据存储到广告数据服务器ADS中。

步骤203、按照图1中描述的方法进行广告信息和开源软件的匹配,并 将匹配结果存放在匹配关系存储服务器MDS中。

步骤204、SDS收到用户发送的查找某开源软件P市场的请求后,从MDS 中查找该开源软件的市场需求情况(薪资、需求数量、时间等)。MDS将该 开源软件的市场需求情况转化为可视化图。

步骤205、将可视化图(市场需求变化情况,以及同类软件的薪酬等的 比较)及所有与P相关的信息(名称、描述、开发语言、创建时间、爬取时 间、标签、源地址等)一起显示在网页上。

以上实施例可以反映出本发明能够在互联网范围为软件开发人员提供 与其所需的开源软件相关的市场需求情况。由于系统中的IT招聘广告来自 专注于IT职位的招聘网站,采集范围十分具有针对性,包含的招聘内容都 是十分重要的信息(包含对经历的要求,薪资范围,工作地点等),在用户 查找开源软件时,不仅仅可以给用户提供该软件本身的市场需求情况,包 括职位数目,平均薪资等,还有软件同其他软件在同一地区或者同一经历 北京的需求数目或者薪资的对比情况,使用户对开源软件的市场地位能够 有一个清晰的了解。此外,由于本发明主要面向的是使用开源软件的软件 开发人员。也是基于开源软件进行的研究分析工作,因此在爬取对象上具 有很强的针对性,比如爬取的网站定位于互联网工作的招聘网站。而本文 提供的差异分析的原因,均出自于已有的经济学原理研究,具有一定的跨 学科综合性,开阔了用户的研究视野。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限 制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人 员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离 本发明技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号