上篇内容我们介绍了Python
职位的抓取、清洗以及统计分析。这篇文章我们继续介绍如何用文本挖掘的方式对Python
职位进行分析。主要包括:
- 文本预处理
- 去除html标签
- 分词
- 去停用词
- 词云
- FP-Growth关联分析
- LDA主题模型分析
这篇会包含一些数据挖掘算法,但我希望这篇文章面向的是算法小白,里面不会涉及算法原理,会用,能解决业务问题即可。
3.0 文本预处理
文本预处理的目的跟上篇介绍的数据清洗一样,都是为了将数据处理成我们需要的,这一步主要包含分词、去除停用词两步。
我们基于上篇处理好的py_jobs_final
DataFrame进行后续的处理,先来看下职位正文
py_jobs_final[['pId', 'pDetail']].head(2)
职位正文是pDetail
列,内容就是我们经常看到的“岗位职责”和“岗位要求”。上图我们发现职位要求里包含了html标签,如:
,这是因为pDetail
本来是需要显示在网页上的,所以里面会有html标签,还好我们有爬虫的基础,使用BeautifulSoup
模块就很容易处理掉了
from bs4 import BeautifulSoup
# 使用BeautifulSoup 去掉html标签, 只保留正文内容,并转小写
py_jobs_final['p_text'] = py_jobs_final['pDetail'].map(lambda x: BeautifulSoup(x, 'lxml').get_text().lower())
py_jobs_final[['pId', 'pDetail', 'p_text']].head(2)
去除html标签后,再用jieba
模块对正文分词。jieba
提供了三种模式进行分词,全模式、精确模式和搜索引擎模式。具体差异我们看一个例子就明白了。
import jieba
job_req = '熟悉面向对象编程,掌握java/c++/python/php中的至少一门语言;'
# 全模式
seg_list = jieba.cut(job_req, cut_all=True)
# 精确模式
seg_list = jieba.cut(job_req, cut_all=False)
# 搜索引擎模式
seg_list = jieba.cut_for_search(job_req)