APP下载

基于Django的网络招聘数据可视化分析系统的设计与实现

2023-11-01姜永成

科技资讯 2023年19期
关键词:分词页面可视化

姜永成

(黔南民族职业技术学院 贵州 都匀 558000)

当前,社会高速发展,已然从IT 时代走向DT 时代。在此背景下,国外与国内企业相继开展人才争夺战,如今人才已成为了最紧缺资源之一,企业为了吸引人才、用好人才、留住人才,采取了一系列措施。在信息化网络快速发展的今天,以往传统的招聘方式已经不适应当今企业对人才招聘的需求。网络招聘由于具有覆盖范围广、成本低、信息传播速度快以及信息甄别优等特点受到广大企业的追捧,已经成为当下主流的招聘方式。

1 网络招聘数据可视化分析系统需求分析

软件研发由多个部分构成,需求分析是非常重要的部分,是在调查研究、分析和与用户交流之后对软件具体需求有全面的掌握,再将具体需求制定成规范性的、清晰完整的需求文档,对系统性能与功能等方面的要求进行确定。系统需求分析也可以称为软件需求分析或者需求分析工程等。本文首先进行调研分析,并以网络招聘具体情况和需求为基础,完成系统功能性需求的明确,具体包含数据获取、导入、处理、分析和可视化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框架完成爬虫程序对猎聘网和前程无忧两个招聘网站的职位数据进行爬取。数据爬取以前利用浏览器对这两个招聘网站进行访问,使用鼠标点击页面中的统一资源定位器(Uniform 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出现频率,如果一个词语ti在文档dj中出现了ni,j次,那么ti的词频可表示为

逆向文件频率简称IDF,可对一个字词在文档中普遍重要性衡量,IDF 为文档总数乘以全部包含该字词的文档总数,然后获取的结果去对数后就是该字词的IDF[4]。对应的计算公式为

式(2)中,分子|D|为指语料库内文章总体数量,分母表示含有此词组的文章数量,通常会将分母进行加1,其目的是保证分母不会等于0,对应公式为

接下来利用下面公式将TF 与IDF 相乘后就能够得到结果。

提取特征时Document是招聘信息,经过分词处理和清除停用词后就是Term。接下来计算TF-IDF 并按从大到小排列计算得到的结果,抽取出招聘数据中的新的特征词,并在此前提下利用TF-IDF 加权词向量,这样加权词矩阵就完成建立。

2.5 可视化模块设计

前台页面设计与可视化显示构成可视化模块,前台页面中注册与登录功能是非常重要的,任何用户如果要对招聘信息分析结果进行查看,就要按照网页提醒完成注册操作,然后再进行登录,这种方式能够使平台安全得到更好的保证。系统会将分析结果可视化展现给用户,其中菜单栏主要包括总体信息概览、Java 职位展示、前端开发岗位展示、Android岗位展示、数据分析工程师岗位展示、C/C++职位展示。

3 网络招聘数据可视化分析系统实现

3.1 系统实现环境

可视化分析系统的研发使用Python 语言、scrapy框架、Django 框架,为实现研发效率的提升,研发环境中操作系统选择应用最为普遍且更加熟悉的Windows。Python 中内置了Python Shell 和IDE,使程序开发难度进一步降低。

3.2 实现过程

3.2.1 数据获取

系统需要的数据集通过scrapy框架进行获取,主要收集的内容包括学历要求、薪资福利、工作地区、岗位名以及企业名称等。新建scrapy项目,在项目下新建爬虫文件。在项目文件中编写爬虫文件、items文件、管道文件pipelines,配置settings。

3.2.2 数据导入

该模块负责将数据获取模块获取到的数据向系统内部导入,使后续数据分析工作更加便捷。该模块的功能包含两个方面:一为下载模块,二为上传数据的功能。对于第一个功能来说,就是将数据格式文件存储到保存静态文件的data 目录中来,再在页面内利用标签提供模板下载的链接实现模板下载的功能。该功能通过页面文件中的input标签对文件进行选择,再在Django后台与模板文件匹配格式。匹配完成以后在upload文件夹中保存相应的文件,为以后数据分析和数据处理提供依据。

3.2.3 数据处理

得到的数据基本上噪声偏多且规范性较差,因此要进行重复数据、缺失数据和异常数据的处理。文章对于此类数据的处理是通过Python内的pandas库来实现的,处理过程如下。

(1)数据提取。创建数据库连接对象,从MYSQ提取db=pymysql.connect(host='localhost',user='root',password='',db='liepindb',charset='utf8')。连接数据库成功后,对数据库中table 数据表进行读取:data=db[collection].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部分核心源代码如下:

3.2.5 数据可视化该系统首页设计是通过Bootstrap 框架来完成的,首页设计简洁大气且美观入眼,用户能够从首页中利用相应的操作完成不同功能,如检索、登录或者注册等。如分析职位描述以后,对各个岗位展开相似的研究,提取关键词通过TF-IDF 算法进行实现,生成词云图是由Python内的Wordcloud模块来完成的,能够很容易发现,技术岗位不同对应的专业技能需求也存在差异,词云图涵盖很多个人素质方面的要求,将企业对员工能力和素质方面等要求更直观地展现出来。总之,Python 作为大数据处理的主要操作语言,可以有效处理海量数据,并将数据结果以直观图形显示,更易于数据使用人的读取和理解[6]。

4 结语

近年来,这些技术被越来越多地应用于招聘就业工作,以提高管理效率和就业质量。本文完成网络招聘数据可视化分析系统的研发,前台和后台分离是通过Django 框架实现的,前台页面设计应用JQuery、CSS和HTML 等多种工具与技术。最后展现平台页面,具体页面有系统首页、用户注册与登录页面、用户管理页面,为求职者提供实用的数据支持,帮助他们更好地了解招聘市场的情况、分析市场趋势。

猜你喜欢

分词页面可视化
刷新生活的页面
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
分词在英语教学中的妙用
基于CGAL和OpenGL的海底地形三维可视化
结巴分词在词云中的应用
结巴分词在词云中的应用
“融评”:党媒评论的可视化创新
网站结构在SEO中的研究与应用
论英语不定式和-ing分词的语义传承