一种app软件工程师软技能分类系统及方法与流程

文档序号:11287822阅读:206来源:国知局
一种app软件工程师软技能分类系统及方法与流程
本发明提出一种app软件工程师软技能分类系统和方法,使用层次聚类算法将移动开发软件工程师的软技能需求分类为13类。
背景技术
:一般来说,开发人员的技能分为两个方面:硬技能和软技能。硬技能是一个人应该拥有的技术要求和知识,其用来执行任务;它们包括一个人应该专门执行计划任务的理论基础和实践经验。软技能是非技术技能,融入心理现象,如社会互动能力,沟通,创新与协作。开发人员通常被认为是技术人才,因此,他们的技术能力在实际工作和研究中被强调。然而软件开发是脑力密集产业,且是基于团队合作的,所以开发人员的软技能,如沟通和协作等,也应该受到相同程度的关注。目前国内外对传统软件开发的研究中,已有部分研究揭示了软件开发中哪些软技能有很高的要求,并且提出了全球软件开发背景下软件工程师应该具有的软技能要求,但是那些软技能的重要性排序被忽略了。而且这些研究只与传统软件开发有关,传统软件开发与移动应用软件开发存在开发方式和管理方式上的差异,因此传统软件开发环境中提出的软技能需求可能不适合移动应用软件开发环境。此外,这些软技能的分类不够全面,不能多方位体现软技能的类别。现有的研究中将软技能分为9个类别,包括沟通技巧,人际关系技能,分析和解决问题能力,团队合作精神,组织能力,快速学习能力,独立工作能力,创新能力和适应能力。但是其中没有涉及责任意识和主动性问题,而这也是现代移动应用软件开发工作人员必不可少的软技能。软技能文本是典型的非结构化数据,传统的分析方法是采用人工分析方法,效率低下,并且没有数据支持,主要取决于人的经验和主观意识,可靠性较低。技术实现要素:本发明解决问题:填补移动应用软件开发中软技能研究内容空缺,提出一种app软件工程师软技能分类系统及方法,使用文本挖掘技术和层次聚类算法来实现软技能提取和分类功能,这是针对非结构化数据应用较为广泛的方法,可以快速提取用户感兴趣的信息,解决传统人工提取软技能方法的效率低下、准确率低问题,同时以大量文本数据为依托,增加了软技能提取分类的可靠性。本发明技术解决方案:一种app软件工程师软技能分类系统,包括数据收集和清理模块、全文预处理模块和建立类别模块;其中:数据收集和清理模块,实现从数据源招聘网站收集数据及数据过滤筛选的功能,最终得到包含移动软件开发人员技能需求的文本数据。首先构建了一组搜索关键字:移动开发、安卓/android工程师、ios工程师;搜索并使用python语言编写的网页抓取工具获取了众多个招聘广告。招聘网站上发布的招聘广告中主要包含四方面内容,分别是职位名称、职位诱惑、工作描述和职位要求,只爬取职位名称中含有所定义的关键词的招聘广告,因为这些广告才和移动开发紧密相关;因为部分招聘广告中不包含职位要求,而本发明主要使用的数据就是职位要求,所以在数据集中进行查找操作,找出不包含职位要求的广告,将其从数据集中删除;最终,得到了包含职位要求的文本数据集,用于在下一模块全文预处理中继续分析;全文预处理模块,得到数据收集和清理模块的文本数据集,从数据集中职位要求句子中筛选软技能词语。首先,从广告中提取出职位要求副标题和工作地址之间的文本,这部分文本为包括移动软件开发软技能和硬技能的职位要求;然后,依据编程语言关键字进行过滤操作,删除掉包含此类编程语言关键字的语句,从而得到纯软技能语句;接下来进行分割操作,以逗号、句号和分号为分割点将语句分割为短句;最后使用分词工具对短句进行分词,得到软技能词语数据集,将本模块得到的短句和词语数据集作为软技能分类模块的直接数据集供其调用。建立类别模块,根据全文预处理模块得到的软技能短句和词语数据集,据此建立软技能分类和从分类结果中提取规则。首先,依据tf-idf方法计算软技能词语在数据集中的权重,词语出现频率越高则权重越低;然后,计算软技能短句间的语义相似度,此阶段依据词语权重进行计算;接下来使用层次聚类算法,对软技能短句进行聚类操作,得到软技能分类结果;最后,构造分类器,从分类结果中提取规则作为分类器类的代表。一种app软件工程师软技能分类方法,步骤如下:(1)使用的原始数据为从在线招聘网站拉勾网中提取出来的,首先构建了一组搜索关键字:移动开发、安卓/android工程师、ios工程师。搜索并使用python语言编写的网页抓取工具获取了职位名称中包含所定义关键字的众多个招聘广告。接下来从招聘广告中筛选出不包含职位要求的数据文本,将其丢弃,将剩余数据集交至全文预处理模块使用。(2)本发明提取各个广告的职位要求中的文本存储到数据库中。考虑到每个记录中可能包括一个以上的软技能要求,根据三种标点符号,即逗号,分号和句号将这些长句缩短为短句,以确保每句短句涉及最小的技能要求;之后过滤职位要求文本中的硬技能,使用编程语言的名字如c,java,python和php等作为关键字进行过滤;最后,使用分词工具jieba对已获得的短句进行分词。jieba分词工具使用trietree结构实现高效的字图扫描,通过动态规划方法搜索词语分割的最大概率路径,并使用hmm模型对未记录的词语进行更好的自动识别。通过采用jieba分词工具,我们最终得到每个短句的词语、语句集和词语集供建立类别模块调用。(3)通过得到全文预处理模块的数据集,获得了每个招聘广告软技能要求和每个句子的名词词语相关的短句;然后,根据不同句子中词语的相似度,对这些短句进行聚类分析。首先,提出了一种计算词语权重的方法。根据tf-idf方法,词语出现的次数越多,则词语的权重越低;之后,如果一个短句a包含与另一个短句b相同的词语,那么它们具有很高的相似性,依据词语权重计算短句的相似性。为了进行聚类,设置了一个阈值0.8,根据多个聚类实验的结果进行选择;如果短句隶属度大于0.8,可以确定其属于该类,因为可能存在几个类别,所以计算了每个类别中此短句的隶属度,并发现了最大隶属度;如果最大值小于阈值,则生成一个新类别,此短句将是新类别的第一个元素。否则,将归于隶属度最大值相对应的类别。因为在聚类算法中只考虑了同一个词的频率信息,而未考虑不同词语语义信息的影响,所以,根据语义相似度手动的归并了一些类别;最后,为了获得由一组词语或短句规则表示的最终软技能分类,构建了一个分类器;对于每个软技能分类,从上一步获得的每个类别中的短句中提取关键词作为分类器的规则。本发明的优点在于:(1)在现有关于移动软件应用开发的研究中,没有关于开发人员的软技能的内容,本发明创新性地提出了一种移动应用软件开发工程师软技能分类系统和方法,并根据获取的招聘信息从中提取了13个软技能类别,可以从聚类结果的出现频次分析企业对各软技能的重视程度。(2)本发明将层次聚类算法应用于招聘广告当中,通过招聘广告中的职位要求分析应聘者所需技能。提供了一种跨学科的思维,将聚类算法应用于招聘广告文本中,借助这一分析方法分析感兴趣的信息。附图说明图1为本发明实现流程图;图2为本发明中数据全文预处理模块的处理例图;图3为本发明中建立类别模块的流程图和数据流图。具体实施方式如图1所示,本发明一种app软件工程师软技能分类系统,包括三个模块:数据收集和清理、全文预处理和建立类别,具体的技术方案描述如下:1.数据的收集和清理本文使用的原始数据为从在线招聘网站拉勾网中提取出来的。首先构建了一组搜索关键字:移动开发、安卓/android工程师、ios工程师。搜索并使用python语言编写的网页抓取工具获取了许多个招聘广告,这些广告的职位名称中包含所定义的关键字。接下来根据广告内容构成从招聘广告中筛选出不包含职位要求的文本数据,将其丢弃。2.全文预处理本发明提取各个广告的职位要求中的文本存储到数据库中。考虑到每个记录中可能包括一个以上的软技能要求,根据三种标点符号(逗号,分号和句号)将这些长句缩短为短句,以确保每个短句涉及最小的技能要求。之后过滤职位要求文本中的硬技能,使用编程语言的名字如c,java,python和php等作为关键字进行过滤;最后,使用分词工具jieba对已获得的短句进行分词。jieba分词工具使用trietree结构实现高效的字图扫描,通过动态规划方法搜索词语分割的最大概率路径,并使用hmm模型对未记录的词语进行更好的自动识别。通过采用jieba分词工具,我们最终得到每个短句的词语,语句集和词语集供建立类别模块调用。本过程处理例图如图2所示。3.构建软技能类别通过上述数据预处理,获得了每个招聘广告软技能要求和每个句子的名词词语相关的短句。然后,根据不同句子中词语的相似度,对这些短句进行聚类分析。首先,提出了一种计算词语权重的方法。根据tf-idf方法,词语出现的次数越多,则词语的重量越低。根据tf-idf方法,权重计算方程式如下:其中,wi代表短句swi中的词语,s代表短句集,swi代表一组包括wi的短句,count(s)代表短句集s中词语数量之和,count(swi)代表短句swi中的词语数量之和,idfwi代表wi的权重。之后,如果一个短句a包含与另一个短句b相同的词语,那么它们具有很高的相似性。定义一个变量sim(a,b)来表示两个短句a,b的相似度。根据每个词语的贡献,相似度计算公式如下:其中wi和zi分别代表短句a和短句b中词语的交集和并集中的任意一个元素,故上述公式中分子部分代表对短句a和短句b中词语的交集中每个元素权重求和;分母代表对短句a和短句b中词语的并集中每个元素权重求和。根据短句的相似性,将他们聚类以获得软技能的初步类别,该过程是通过循环迭代完成的。从第一个到最后一个短句,判断每个句子是属于现有类别还是新类别,该类别是基于相似性动态构建的。定义class来表示一个现有的类别集合,classj为其中第j类;并且si表示一组短句候选人中的一个短句,其没有被分类。因此,首先定义一个隶属函数membership(si,classj)来表示si相对于类classj的隶属度。方程式如下:其中bk是classj中的第k个短句,count(classj)意味着计算classj中有多少个短句。为了进行聚类,设置了一个阈值0.8,根据多个聚类实验的结果进行选择。如果si相对于classj的隶属度大于0.8,可以确定si可以属于classj。因为可能存在几个类别,所以计算了si相对于每个类别的隶属度,并找到最大隶属度。如果最大值小于阈值,则生成一个新类别,si将是此新类别的第一个元素。否则,将把si归于最大隶属度相对应的类别。因为在聚类算法中只考虑了同一个词的频率信息,而未考虑不同词语语义信息的影响。所以,根据语义相似度手动的归并了一些类别。到目前为止,类别中的元素仍然是类似的短句。为了获得由一组词语或短句规则表示的最终软技能类别,同时方便分析以后收集的数据,需要有一个基于规则的分类器。本次收集的数据将对分类器进行初始化工作,在之后的研究中分类器规则将可能增长以包含未被分类器识别但符合要求的类别短语,所以以此构建了一个分类器。对于每个软技能分类,从上一步获得的每个类别中的短句中提取关键词作为分类器的规则。显然,一个类别可能会产生多个规则。确保每个短句至少符合一条规则。例如,发现类n(善于表达)具有与类1(沟通能力好)相似的含义,将它们归并到交流技能类别中。合并之后的类别,通过抽取类别规则来代表该类别,比如,在上述类别中得到了沟通技巧要求类别,然后提取了“沟通能力”和“善于交流”这两个规则组合作为这个类的代表。同时为了保证每个类别中的短句均被正确识别,需要对类别短句进行分类器筛选,以保证类别里的每一个短句都被规则正确区分。数据预处理中的脏数据(脏数据是指通过硬技能筛选无法过滤掉,但是和软技能无关的职位要求,例如“简历请附作品”这种字样)在预处理中无法清除,因此添加了一个脏类,以处理脏数据,并为其构建分类器规则,但此类不会在分类中显示。在聚类中所有不相关的类都将被添加到此类别中,用于在下一个循环中进行聚类。重复聚类和提取规则的过程,直到没有分组的数据为空,或者最终结果缓慢改进,类别数量和规则数量缓慢增加。图3是聚类和规则提取的流程图和数据流图。最终,我们获得了移动开发人员软技能要求的分类,软技能类别结果如表1所示。实施中爬取了5423条招聘广告,表1中数量一列表示有多少个招聘广告包含此技能。表1软技能类别序号内容数量比例1沟通能力266861.33%2团队合作260859.95%3分析和解决问题能力203946.87%4责任感168338.69%5快速学习能力145833.51%6开展挑战性工作113826.16%7编码习惯93021.38%8承受压力70416.18%9独立工作55812.83%10积极的工作态度47110.83%11组织能力3397.79%12创新能力3267.49%13英文阅读能力2786.39%提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1