基于深度学习的软件领域人才服务大数据平台实现探讨

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 通过对代码和简历等平台数据的转换/分析/整合,用机器学习的方法来进一步提高数据的分析准确性

平台需要具备的功能
1.基础的软件项⽬目代码质量量检测,类似sonarqube/xlint的较为全⾯面的代码质量量检测服务;
2.基于抽象语法树的代码分析服务,通过基于抽象语法树的代码分析⽅方法,能够提供⽐比传统根据提交数或者代码⾏行行数更更科学有效的度量量软件开发⼈人员⼯工作量量的⽅方法;
3.代码价值贡献度量量。通过图算法和⾃自然语⾔言处理理/机器器学习等技术,我们能从结构化和非结构化(⽬目前在设计阶段)两⽅⾯度量量开发⼈人员代码提交产⽣生的(软件意义上的)价值;
4.基于深度学习的简历解析服务。通过深度学习,更更快更更准确的提供职位和简历匹配。
5.在上述服务的基础上构建⼈人才技能能⼒力力指标体系,构建⼈人才画像,从⽽而能够更更精准有效地为企业提供⼈人才的挖掘/匹配等服务。

平台服务架构

平台架构具有⾼高度可扩展性,服务间普遍通过异步消息通信,命令服务接收代码分析请求,转化为命令消息下发消息队列列,各分析服务收到命令消息执⾏行行各种分析任务,然后将分析数据⼊入库。在基础分析数据和维度模型的基础上,提供了了多种形式的查询视图。![图片来自 沃客云大数据平台,第 1 页.png](https://ucc.alicdn.com/pic/developer-ecology/ae3dd387f1dc45ddbe1a8688bbd1a967.png)

基于抽象语法树的代码分析
⽬前⼯业界有多种分析⽅法可以作为⼯作量度量的基础⽅法:
1.基于⾏⽂本的差异分析
2.基于提交数的分析
3.基于语法元素token的分析
4.基于抽象语法树的分析
基于⾏⽂本和提交数的分析相对简单,能⽐较粗粒度地度量开发⼯作量,⼤部分版本控制软件默认的diff⼯具都是采⽤的基于⾏⽂本的差异分析⽅法。
代码分析服务采⽤的是基于抽象语法树的分析⽅法,该⽅法能追踪软件不同层次上(全局、类
型、函数、变量)的演化,⽐⾏⽂本分析能提供更多更精确的信息。
基于抽象语法树(ast)的分析,通过将不同语⾔的抽象语法树映射到⼀个抽象的树结构模型来屏蔽不
同编程语⾔的ast的差异,在树模型基础上通过多种树匹配算法和结构化信息差异分析算法,对⽐得到不同提交(或代码⽂件)之间语法元素的差异,能进⽽计算得到⼯作量的相对精确量化值。该服务通过挖掘软件代码库中代码信息来提供更丰富更准确的软件演化信息,以及开发⼈员在软件⽣命周期中开发⼯作量的跟踪度量。
图片来自 沃客云大数据平台,第 2 页.png
树模型结构
ITree: type(节点类型,如:IfStmt;ForStmt), label(根据类型存放对应值), children(⼦节点集合),
parent(⽗节点)
树的编辑操作
前后两次提交源代码的变化会导致⽣成的树结构变化,对应为树结构A转化为B的⼀系列编辑操作,这样
源代码的变化检测就转换为了树编辑距离问题。对树的编辑操作有增加/删除/替换/移动(即增加和删除
的组合),两个版本的⽐较即为从A版本的ast转化为B版本的ast的编辑操作列表(编辑脚本)。
树匹配算法
找到树A到树B之间的⼀个合适的匹配
匹配算法的输出为两棵树中最合适的节点对匹配集合(Iterable[Pair[ITree, ITree]])。服务包含了多种匹配
算法,如最⻓公共⼦序列匹配,树编辑距离匹配等。
寻找产⽣最⼩确认编辑脚本的合适匹配集算法需要满⾜以下两个匹配标准:

x,y均为叶⼦节点:
matchLeafNode(x, y) = if (l(x) == l(y) && sim(v(x), v(y)) >= f) true else
false
其中sim(v(x), v(y)) 为x,y两节点的值相似度,f为字符串相似度阈值
x,y均为⾮叶⼦节点:
matchInternalNode(x, y) = if (l(x) == l(y) && common(x, y) /
max(leafNodesCount(x), leafNodesCount(y)) >= t) true else false
内部节点,使⽤计算⼦树中公共叶⼦节点的⽅式度量节点相似度, t为内部节点相似度阈值
根据计算出的匹配,找到最⼩的将树A转化为树B的确认编辑脚本(Chawathe)

编辑操作的计算算法⼤致为:
1.根据匹配算法得到的mapping列表⽣成从树A到树B的匹配列表Map1和从树B到树A的匹配列表
Map2;
2.⼴度优先遍历树B,对于树B中每个节点x和其⽗节点y,从Map2中寻找x和y在树A中最佳匹配的节
点,如果存在,分别⽤w和z表示;
3.如果x的匹配节点不存在,则x为新增节点,创建⼀个Insert操作;
4.如果w节点存在,但值不等于x节点的值,则创建⼀个Update操作;
5.如果w节点的⽗节点为v,v和y节点对在mapping列表中不存在,则可以判断x的⽗节点发⽣了变
化,创建⼀个Move操作
6.对树A进⾏后续遍历,通过Map1,如果节点在树B中找不到匹配节点,则创建Delete操作。
差异分类
将变更类型做出分类:
1.类级别修改(增删改类以及继承关系的更改等)
2.⽅法函数级别修改(增删改⽅法以及⽅法签名的更改等)
3.单条顺序语句修改(增删改语句)
4.条件和循环语句修改(条件表达式变更,增删else语句块等)
5.语句块结构修改(语句顺序变更等)
6.注释语句修改(注释语句块增删改)
7.可⻅性修改(可⻅性增强或降低)
对应⼯作量指标的计算来说,不同分类会对应不同的计算权重。
⼯作量计算
在差异分类的基础上,不同类型变更加权求和得到⼯作量指标。
代码价值贡献度量
结构化代码价值分析服务
采⽤PageRank的变种算法结构化分析软件静态调⽤图,计算函数/⽅法的重要性排名,得到结构化的代
码价值贡献指标
PageRank算法是google早期评价⽹⻚重要性的算法,其核⼼思想为:1.如果⼀个⽹⻚被很多其他⽹⻚链接到,说明这个⽹⻚⽐较重要,rank值会相对较⾼;2.如果⼀个rank值很⾼的⽹⻚链接到⼀个其他的⽹⻚,那么被链接到的⽹⻚的rank值会相应地因此⽽提⾼。
这种思想可以迁移到软件调⽤关系的分析上,从⽽得到在⼀个软件项⽬中,哪些函数或模块处于相对重要的位置,相应的开发⼈员价值贡献也会有⼀个⾼的权重。
我们在上⾯基于抽象语法树的代码分析构建的树模型基础上,通过对语法元素的识别,遍历得到函数⽅法的静态调⽤关系。相对于运⾏时得到的动态调⽤关系图,从代码分析得到的静态调⽤关系图会缺少信息,但是结合继承/接⼝实现等关系的分析⽣成的静态调⽤图还是有相当的可⽤性。
简历解析服务
云沃客平台为企业提供了招聘猎聘服务,同时有⼤量⼈才在平台上求职。简历解析服务尝试⽤机器学习/深度学习的技术,更精准快速地从⾮结构化⽂本中提取结构化的⼈才数据,为后⾯的分析查询检索服务提供基础数据。传统的简历解析,需要依赖⼤量的段落关键词,设计规则来对不同模块进⾏划分。如简历某⼀⾏出现了教育经历/学习经历, 则说明下⾯的内容属于教育模块。如出现了⼯作经历/实习经历则说明下⾯内容属于⼯作经历模块。如果该简历没有使⽤模块关键词,或者使⽤的词库没有模块关键词,则整个段落就都漏掉了。
如果对于某⼀⾏,上⽂是该⼈的基本信息,⽽下⾯连续出现了多⾏都是学校的信息,则知道这⾥是基本信息和教育经历的划分点了,平台简历解析服务通过双向⻓短记忆神经⽹络(BiLSTM)模型,解析时同时考虑正序和逆序,引⼊上下⽂的序列信息,可以更精确地划分模块信息。
分词
中⽂⽂本分析需要做分词处理,⼀种是传统的基于词表的规则分词(如jieba等库);还有就是统计分词,需要⽤到机器学习或深度学习技术。⽬前常⽤的深度学习模型是BiLSTM。基于LSTM模型最⼤的优
势是能处理较⻓的顺序依赖性,例如 在简历头部出现了姓名,在简历中段出现了另外⼀个类似姓名的公司名,就能判断这个是别的实体。
词向量
词向量是词语的数字形式表示,相近意思的词语会有相似的词向量。在简历分析的场景⾥⾯,词向量可以帮助识别训练数据集中没有的的公司,职位,技能等信息,以及作为序列标注当成BiLSTM的输⼊层。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
19天前
|
DataWorks Kubernetes 大数据
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
|
11天前
|
机器学习/深度学习 分布式计算 BI
MaxCompute 与阿里云其他服务的协同工作
【8月更文第31天】在当今的数据驱动时代,企业需要处理和分析海量数据以获得有价值的洞察。阿里云提供了一系列的服务来满足不同层次的需求,从数据存储到高级分析。MaxCompute(原名 ODPS)作为阿里云的大规模数据处理平台,提供了强大的计算能力和丰富的功能,可以与阿里云的其他服务无缝集成,形成完整的大数据解决方案。本文将探讨 MaxCompute 如何与其他阿里云服务协同工作,包括存储服务 OSS、数据分析服务 Quick BI 以及机器学习平台 PAI。
17 0
|
2月前
|
机器学习/深度学习 数据挖掘 大数据
大数据时代的“淘金术”:Python数据分析+深度学习框架实战指南
【7月更文挑战第30天】大数据时代视数据为新石油,Python因强大处理能力成为首选工具。通过NumPy、Pandas等库,Python构建了高效数据分析生态。深度学习框架如TensorFlow和PyTorch支持复杂模型构建。Python与深度学习结合,实现数据清洗、特征工程到模型训练全流程,为企业决策提供强有力支持。掌握这些技能如同掌握“淘金术”,开启无限可能。
94 5
|
2月前
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现深度学习模型:用户行为预测与个性化服务
【7月更文挑战第23天】 使用Python实现深度学习模型:用户行为预测与个性化服务
81 3
|
1月前
|
监控 数据可视化 前端开发
【前端】政务服务大数据可视化监控平台(源码+html+css+js)
【前端】政务服务大数据可视化监控平台(源码+html+css+js)
|
2月前
|
存储 SQL 机器学习/深度学习
阿里云数加大数据计算服务MaxCompute学习路线图:从入门到精通
将所学知识应用于实际工作中并不断进行实践和创新是提升技术能力的关键所在。用户可以结合业务需求和技术发展趋势积极探索新的应用场景和解决方案,并在实践中不断总结经验和教训以提升自己的技术水平和实践能力。
|
2月前
|
人工智能 自然语言处理 小程序
政务VR导航:跨界融合AI人工智能与大数据分析,打造全方位智能政务服务
政务大厅引入智能导航系统,解决寻路难、指引不足及咨询台压力大的问题。VR导视与AI助手提供在线预览、VR路线指引、智能客服和小程序服务,提高办事效率,减轻咨询台工作,优化群众体验,塑造智慧政务形象。通过线上线下结合,实现政务服务的高效便民。
89 0
政务VR导航:跨界融合AI人工智能与大数据分析,打造全方位智能政务服务
|
2月前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之如何确定是否需要更改MC的Endpoint服务接入架构
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
|
3月前
|
SQL DataWorks 监控
DataWorks操作报错合集之在调用数据服务API时返回的错误码是"ODPS-0410051",并且错误信息提示"Invalid credentials - accessKeyId not found",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
44 0

热门文章

最新文章