基于Django的网络招聘数据可视化分析系统的
设计与实现
姜永成
(黔南民族职业技术学院 贵州都匀 558000)
摘要:基于Django的网络招聘数据可视化分析系统主要为求职者提供实用的数据支持,帮助求职者更好地了解招聘市场的情况,分析市场趋势。该系统主要包括用户登录、注册、数据上传、数据分析、数据可视化、数据导出等功能,采用MySQL作为数据库,可以对招聘信息进行统计分析,并以报表或图表的形式呈现分析结果,方便用户直观地了解数据,同时,系统还支持数据导出功能,用户可以将分析结果导出为Excel表格或CSV文件进行后续处理或分享。
数据可视化大屏设计关键词:Django 网络招聘 数据分析 可视化分析系统
中图分类号:TP319文献标识码:A 文章编号:1672-3791(2023)19-0057-04
Design and Implementation of the Visual Analysis System for
Online Recruitment Data Based on Django
JIANG Yongcheng
(Qiannan Polytechnic for Nationalities, Duyun, Guizhou Province, 558000 China) Abstract:The visual analysis system for online recruitment data based on Django mainly provides practical data support for job seekers to help them better understand the recruitment market and analyse market trends. The sys‐tem mainly includes user login, registration, data upload, data analysis, data visualization, data export and other functions. With MySQL as the database, it can perform statistical analysis of recruitment information and present analysis results in the form of reports or charts, which is convenient for users to understand data intuitively. At the same time, the system also supports data export function, and users can export analysis results into Excel tables or CSV files for follow-up processing or sharing.
Key Words: Django; Online recruitment; Data analysis; Visual analysis system
当前,社会高速发展,已然从IT时代走向DT时代。在此背景下,国外与国内企业相继开展人才争夺战,如今人才已成为了最紧缺资源之一,企业为了吸引人才、用好人才、留住人才,采取了一系列措施。在信息化网络快速发展的今天,以往传统的招聘方式已经不适应当今企业对人才招聘的需求。网络招聘由于具有覆盖范围广、成本低、信息传播速度快以及信息甄别优等特点受到广大企业的追捧,已经成为当下主流的招聘方式。
1
网络招聘数据可视化分析系统需求分析
软件研发由多个部分构成,需求分析是非常重要的部分,是在调查研究、分析和与用户交流之后对软件具体需求有全面的掌握,再将具体需求制定成规范性的、清晰完整的需求文档,对系统性能与功能等方面的要求进行确定。系统需求分析也可以称为软件需求分
DOI:10.16661/jki.1672-3791.2306-5042-4316
作者简介: 姜永成(1990—),男,硕士,讲师,研究方向为大数据技术、数据挖掘与分析。
析或者需求分析工程等。本文首先进行调研分析,并以网络招聘具体情况和需求为基础,完成系统功能性需求的明确,具体包含数据获取、导入、处理、分析和可视化5个模块。在开发网络招聘数据可视化分析系统之前,开发相关人员需要对系统进行详细的调研,首先需要确定开发系统的可行性,本文主要从推广可行性、经济可行性、技术可行性、应用可行性等方面介绍该系统的可行性。
2 网络招聘数据可视化分析系统设计
本文研发的系统运用的架构为B/S架构,研发平台为Pycharm,语言选择Python,框架选择Django,同时利用AdminLTE框架完成前台页面的设计与实现,该框架是以JQuery与Bootstrap3为基础的。因为数据处理与分析任务量非常大,Python内部含有的类库是非常多的,并且高级数据结构也非常齐全,框架成熟度也较高,使数据处理与分析更加便捷。因此本课题研发的系统选择的编程语言为Python,Pycharm将Python研发需要的特性和工具进行集成,对于Web研发框架给予更好的支持。数据分析结果基本上是通过直观的图标形式进行展现,因此系统还需要对ECharts图表库进行运用。对于获取和分析数据等功能模块生成的文件在存储时基本上是以Excel和CSV为最主要的形式,CSV可看作简易的Excel。数据储存格式为CSV,读取和写入都更加便捷,而且实现起来难度也很小,与Excel文件相比占
用空间更小。
2.1 数据获取模块设计
该功能模块是指利用Scrapy框架完成爬虫程序对猎聘网和前程无忧两个招聘网站的职位数据进行爬取。数据爬取以前利用浏览器对这两个招聘网站进行访问,使用鼠标点击页面中的统一资源定位器(Uni‐form Resource Locator,URL)等信息,对访问地址URL 的改变情况进行观看,同时对最后要访问的URL和爬虫程序结束条件进行确定,接下来将要访问的URL在爬虫程序内部动态构建,同时对其结束条件进行设置,使爬虫程序能够及时停止。将请求发送给URL,获取到URL反馈结果后完成HTML分析,借助Xpath解析库将可视化分析系统需要的信息进行解析并将其保存到csv文件或直接保存到mysql数据库中,提取数据以职位ID、地区、企业名称、学历、经验、职位描述以及薪资福利等为主,可以在网页信息解析过程中完成职位描述的url的动态构建,接下来对职位描述页面url继续访问,进而将职位描述信息进行获取。2.2 数据导入模块设计
数据导入功能是将招聘数据文件导入系统中便于后续的数据处理与数据分析,也使系统能够在数据发生改变时及时将最新数据向系统进行导入,从而保证分析结果的时效性。数据导入功能是由数据与模板的下载与数据上传构成的。系统页面中有文件选择的按钮,通过该按钮可以将所需文件进行上传,待确定上传之后还需要根据系统中提供的模板文件将已经传递给系统的文件与其匹配格式,对传递给系统的文
件是否具有正确格式进行确定。本系统数据库管理系统选择MySQL关系型数据库,MySQL属于开源的数据库,使用成本较低,并且开发人员对MySQL数据库比较易于入手。其中招聘岗位信息表记录着岗位的信息,主要包括岗位记录编号ID、岗位名称、最高工资、最低工资、岗位所在城市、公司名称等12个数据项。
2.3 数据处理模块设计
可视化分析是以数据处理为基础的,数据分析通过Python展开分析的过程中,如果与数据库直接相连,就将所需模块导进Python中即可。不过由于获取到的部分数据中存在很多问题,如噪声、完整性不好、一致性不高、重复和遗失等,若不进行处理就进行可视化分析,分析结果必然会受到很大程度的影响。因此,需要利用Python内部的pandas库将数据库内部的信息向DataFrames写入,以实现数据清洗,完成清洗处理以后再展开可视化分析。
2.4 数据分析模块设计
2.4.1 中文分词
在对获取的数据集进行分析时,可以采用分词、去停用词等方式对非结构化的招聘信息文本进行处理。本文选用的中文文本分词工具为jieba,jieba是中文自然语言处理分词库,具有实用性强、使用简单等特
点,是一种概率语言分词模型。最大概率路径的查询是通过动态规划来获取的,保证以词频为基础的最大切分组合能够顺利获取到。Jieba对全模式、精确模式和搜索引擎模式支持,并且繁体分词与自定义词典也都支持[1]。基于向环形图(DAG)式,那些在字段里没有查询到的字段组成新的短语,即“未登录词”,然后通过隐马尔科夫模型(Hidden Markov Model,HMM)分词精确率得到显著提升,通过Viterbi算法使最佳隐藏状态序列获取到。对隐藏变量的马尔科夫随机的整个流程进行描述,这个模型要应用到3个概率矩阵、2个序列,3个概率矩阵分别为状态生成观测概率矩阵B、状态转
移概率矩阵A和初始状态概率矩阵π。{0 z Π A B λ= (Π A B)}可表示HMM,其模型可由λ=(Π A B)进行决定,Π和A对观测序列有决定性作用,状态序列是由B 来决定的。训练、预测与分词是HMM的中文分词的具体步骤。
2.4.2 文本表示
清洗、分词和清除停用词之后,数据分析还是不能进行,其原因是招聘数据是以文本形式表示,而这种文本都属于非结构化数据,但算法显然要求长度固定的数值特征向量。所以文本数据长度并未保持统一,就不能使用算法完成分析。因此要在数据原义维持不变的前提下,对其向量化处理以满足计算机处理要求。本课题研发的系统选择以文档特征向量表示为基础的向量空间模型实现文本的表示,英文简称是VSM,全称为Vector Space Model。
这里采用TF-IDF作为权重确定的数值统计方法。该方法原旨在反映单词对集合或者语料库中文档的重要性,在信息检索、文本挖掘和用户建模的搜索中常用作加权因子,其值与单词在文档中出现的次数成正比地增加,并被包含该单词的语料库中的文档数量所抵消[2]。文章赋权特征项是通过TF-IDF算法完成,文本内容中特征项体现越显著权重越大,反之则权重就更小,这样使关键词能够顺利抽取出来。该算法基本思想为文本中词出现频次越高对应的重要程度就越大,出现频次越少对应的重要程度越小[3]。
TF(Term Frequency)是指词频,用d表示文档,用t 表示特征项,TF是指d中t出现频率,如果一个词语t i 在文档d j中出现了n i j次,那么t i的词频可表示为
TF
i j =
n
i j
å
k
n
k j
(1)
逆向文件频率简称IDF,可对一个字词在文档中普遍重要性衡量,IDF为文档总数乘以全部包含该字词的文档总数,然后获取的结果去对数后就是该字词的IDF[4]。对应的计算公式为
IDF
i =log
||D
|
|
|
{j:t
i
Îd
j
}
(2)
式(2)中,分子|D|为指语料库内文章总体数量,分母表示含有此词组的文章数量,通常会将分母进行加1,其目的是保证分母不会等于0,对应公式为
IDF
i =log
|
|D
1+|
|{j:t iÎd j}(3)
接下来利用下面公式将TF与IDF相乘后就能够
得到结果。
TF-IDF=tf´idf(4)
提取特征时Document是招聘信息,经过分词处理
和清除停用词后就是Term。接下来计算TF-IDF并按
从大到小排列计算得到的结果,抽取出招聘数据中的
新的特征词,并在此前提下利用TF-IDF加权词向量,
这样加权词矩阵就完成建立。
2.5 可视化模块设计
前台页面设计与可视化显示构成可视化模块,前
台页面中注册与登录功能是非常重要的,任何用户如
果要对招聘信息分析结果进行查看,就要按照网页提
醒完成注册操作,然后再进行登录,这种方式能够使平
台安全得到更好的保证。系统会将分析结果可视化展
现给用户,其中菜单栏主要包括总体信息概览、Java 职
位展示、前端开发岗位展示、Android岗位展示、数据分
析工程师岗位展示、C/C++职位展示。
3 网络招聘数据可视化分析系统实现
3.1 系统实现环境
可视化分析系统的研发使用Python语言、scrapy
框架、Django框架,为实现研发效率的提升,研发环境
中操作系统选择应用最为普遍且更加熟悉的Win‐
dows。Python中内置了Python Shell和IDE,使程序开
发难度进一步降低。
3.2 实现过程
3.2.1 数据获取
系统需要的数据集通过scrapy框架进行获取,主要
收集的内容包括学历要求、薪资福利、工作地区、岗位名
以及企业名称等。新建scrapy项目,在项目下新建爬虫
文件。在项目文件中编写爬虫文件、items文件、管道文
件pipelines,配置settings。
3.2.2 数据导入
该模块负责将数据获取模块获取到的数据向系统
内部导入,使后续数据分析工作更加便捷。该模块的
功能包含两个方面:一为下载模块,二为上传数据的功
能。对于第一个功能来说,就是将数据格式文件存储
到保存静态文件的data目录中来,再在页面内利用<a
href="{% static 'upload/数据模板.xls' %}"</a>标签提供
模板下载的链接实现模板下载的功能。该功能通过页
面文件中的input标签对文件进行选择,再在Django后
台与模板文件匹配格式。匹配完成以后在upload文件
夹中保存相应的文件,为以后数据分析和数据处理提供依据。
3.2.3 数据处理
得到的数据基本上噪声偏多且规范性较差,因此要进行重复数据、缺失数据和异常数据的处理。文章对于此类数据的处理是通过Python内的pandas库来实现的,处理过程如下。
(1)数据提取。创建数据库连接对象,从MYSQ提取t(host='localhost',user='root',pass‐word='',db='liepindb',charset='utf8')。连接数据库成功后,对数据库中table数据表进行读取:data=db[col‐lection].find(query)读取结束以后,通过pandas库使数据库内部的数据向DataFrame形式进行转变:df=pd. DataFrame(list(data))。
(2)数据去重。可以通过drop_duplicate方法对清除DataFrame格式的重复数据,再将格式为DataFrame的数据进行返回。重复数据的清除对应代码为DataFrame. drop_duplicates(subset=None,keep='first',inplace=False)。
(3)填充数据。若数据缺失严重,完整性很低,就要删除数据,不过如果数据缺失情况不是很严重,并且缺失的数据并非重要数据,此时可通过填充方式来解决。本课题中填充数据是通过DataFrame.fillna()函数来实现的。
3.2.4 数据分析
数据分析模块最开始是要从数据库中将已经处理完成的文本读出来,还需要对其进行分词和清除停用词等处理过程,使后续数据分析更加便捷。本系统中对于分词预处理选择jieba分词工具,这种工具支持的分词模式主要有精确模式、全模式以及搜索引擎模式[5]。使用最大熵、支持向量机等多种经典机器学方法,逐步提高分类准确率,通过对词语所在的语句的语境和该词语与语句中其他词语的依赖关系进行分析,构建了文本表示模型。其中,jieba部分核心源代码如下:
vectorizer=CountVectorizer()
transformer=TfidfTransformer()
tfidf=transformer.fit_transform(vectorizer.fit_trans‐form(corpus))
_feature_names()
array()
nfo = {}
for i in range(len(weight)):
for j in range(len(word)):
nfo[word[j]]=int(weight[i][j]*1000)
return info
3.2.5 数据可视化
该系统首页设计是通过Bootstrap框架来完成的,首页设计简洁大气且美观入眼,用户能够从首页中利用相应的操作完成不同功能,如检索、登录或者注册等。如分析职位描述以后,对各个岗位展开相似的研究,提取关键词通过TF-IDF算法进行实现,生成词云图是由Python内的Wordcloud模块来完成的,能够很容易发现,技术岗位不同对应的专业技能需求也存在差异,词云图涵盖很多个人素质方面的要求,将企业对员工能力和素质方面等要求更直观地展现出来。总之,Python作为大数据处理的主要操作语言,可以有效处理海量数据,并将数据结果以直观图形显示,更易于数据使用人的读取和理解[6]。
4 结语
近年来,这些技术被越来越多地应用于招聘就业工作,以提高管理效率和就业质量。本文完成网络招聘数据可视化分析系统的研发,前台和后台分离是通过Django框架实现的,前台页面设计应用JQuery、CSS 和HTML等多种工具与技术。最后展现平台页面,具体页面有系统首页、用户注册与登录页面、用户管理页面,为求职者提供实用的数据支持,帮助他们更好地了解招聘市场的情况、分析市场趋势。
参考文献
[1]祝永志,荆静.基于Python语言的中文分词技术的研
究[J].通信技术,2019,52(7):1612-1619.
[2]姚振民,邢家溧,承海,等.基于TF-IDF的食品风险分
析模型的构建与应用[J].中国食品学报,2022,22(12): 324-331.
[3]王瑞梅.网络招聘数据可视化分析系统的设计与实
现[D].保定:河北师范大学,2020.
[4]黄春梅,王松磊.基于词袋模型和 TF-IDF 的短文本
分类研究[J].软件工程,2020,23(3):1-3.
[5]高佳希,黄海燕.基于TF-IDF和多头注意力Trans‐
former模型的文本情感分析[J/OL].华东理工大学学报(自然科学版):1-8[2023-06-20]./10.1 4135/jki.1006-3080.20221218002.
[6]班妙璇.基于Python的财务数据可视化应用探究[J].
数字技术与应用,2023,41(5):29-31.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论