王 霞,张俊坤,陈 尧,文科历
(攀枝花学院,四川 攀枝花 617000)
在大数据处理中,随着Python 爬虫技术的优化与改进,能够实现对信息准确挖掘,达到对关键字准确检索的目的。本文将钒钛的相关信息进行词库建立优化,按照关键词搜索指数、搜索类别进行层级目录建设,并通过正则表达式提取网页中的分类,用随机深林算法完成词语的词性的分类[1]。
网络爬虫主要在于收集网络上的各种资源,能够自动提取网页程序,对网络数据进行抓取,为搜索引擎从万维网上下载网页,是搜索引擎的重要组成部分。就网络爬虫而言,其又称为网页蜘蛛、网页机器人、网页追逐者。网络爬虫处理数据过程一般可以分为3 个部分:第一部分数据采集。向网站发起请求,获取资源采集需要的数据。第二部分数据处理。从待抓取的URL 中取出解析DNS 以及分析处理数据。第三部分数据存储。将提取的数据永久存放。所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。对于爬虫来说,这一过程所得到的分析结果还可以对以后抓取过程给出反馈和指导[2]。
首先,找到URL 地址,分析网页性质,将找到的URL 地址使用requests 库或selenium 进行请求解析,获取网页的源码内容。其次,分析网页源码的内容,使用css 选择器或re 正则表达式用来解析提取想要获取的内容。最后,将提取的内容保存至MySQL 数据库。爬取本次网站主要由4 部分构成:(1)主程序负责调用分配各模块之间的关系;(2)数据库用来存储数据;(3)数据采集模块用来爬取网站的数据,并解析获取的数据保存至数据库;(4)数据下载模块主要获取数据库的URL 连接,并下载相对应的文件[3]。网络爬虫整体流程如图1 所示。
图1 网络爬虫整体流程
在网站中,一个好的网站需要好的结构布局,在建设初期如果能把网站所要优化的关键词大部分都挖掘出来并建立词库,会对网站内链有指导性帮助。一个网站外链的建设需要合理的结构,在关键词词库的帮助下建立更清楚页面。一个站的关键词指数是有限的,因此通过搜索引擎所带来的流量也是有限[4]。本文研究目标为攀枝花钒钛相关咨询关键词,及钒钛相关文献、专利和科技报告。内容为分析统计咨询攀枝花钒钛的关键词、钒钛相关文献,科技报告的查阅浏览,最后是对攀枝花钒钛词库的分析建立[5]。
数据的采集模块主要使用了requests 库。本研究的目的主要是获取网站的URL 的地址,将其存放至MySQL 数据库。数据采集的主要步骤:(1)分析网页性质,判断网页是否是动态网页,若为动态网页,则需进一步分析查找URL 地址。(2)将找到的URL 地址,使用requests 库请求该地址,获取网页的内容。(3)将获取的网页内容使用css 选择器或re 正则表达式解析数据,提取需要的数据。(4)对获取的数据使用MySQL数据库将其保存,数据量大于某一数值便停止爬去,想要使用数据时以便提取。
数据的下载模块,主要使用的模块为selenium 自动化测试工具,下载内容为数据采集模块爬去的URL地址,URL 地址从数据库获取,下载的URL 文件格式为‘.pdf’,具体的实现过程如下:(1)从数据库每次提取若干条数据,将提取的数据依次使用selenium 下载,并将提取的数据从数据库中删除。判断数据库中的数据量是否小于某一数值,若小于则继续调用数据采集模块,直到数据库中的数据量达到某一数值便停止采集。(2)将下载的内容保存至事先准备好的文件夹中,以便后续进行对数据处理。
找到事先准备好存储数据的文件夹,读取里面的pdf 文件,修改pdf 文件名,对修改后的文件名字使用pdfplumber 库依次遍历pdf 文件内容,并将内容全部写进.txt 文件中。
在数据文件准备好且格式转换完之后,在词库建立之前,需要对文本数据进行预处理,整合显示格式,以达到较好的分词统计效果。首先,将数据读入为pandas 数据帧,对核心词进行整理。其次,对于文本数据中出现的大量数字、标点符号以及空行和大量英文摘要转换而成的英语数据进行匹配,选取相应索引,将满足条件的索引进行筛选删除,以便更精确地对文本进行分词以及词频统计。
此外,在文本数据中需要对没有实际意义的字、词语进行过滤。因此使用简体中文停用词表cn _stopwords.txt。停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。cn_stopwords.txt 里面所包含的词在任何场景中都是高频词,并且没有实际的含义,在应用词云分析前将其进行清除。
TF-IDF(词频-逆文本频率)是一种用以评估字词在文档中重要程度的统计方法。如果某个词在一篇文章中出现的频率即TF 高,并且在其他文档中出现的很少,则认为这个词有很好的类别区分能力。
TF -IDFij=tfij×idfi
其中tfij=,分子为i词在j文档中出现的次数,分母为j文档中所有字词出现的次数之和。首先,定义术词频-逆文档频率(tf-idf) 的向量化参数,计算文档中每个单词出现的次数,然后转换成tf-idf矩阵。其次,使用 TF-IDF 权重。有些词在文档中经常出现,但在语料库中权重并不是很高,这些词被认为与文档的关联更密切。利用TF—IDF 公式进行钒钛文档主题词权重大小排序,根据阈值划分,得到一个文档的候选主题词序列。本文从语义角度继续分析钒钛文档,以便于验证对比之后进行的词频统计结果,以及更准确地提取主题词。
jieba 中文分词支持繁体分词,支持自定义词典,MIT 授权协议且支持4 种分词模式:精确模式、全模式、搜索引擎模式、paddle 模式。jieba.cut 方法接受四个输入参数:需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM模型;use_paddle 参数用来控制是否使用paddle 模式下的分词模式;paddle 模式采用延迟加载方式,通过enable_paddle 接口安装paddlepaddle-tiny,并且import相关代码。目的是文本分析,于是使用全模式进行分,jieba.lcut(temp,cut_all=False,HMM=True)得到数万条词语数据。
随机森林属于Bagging 类型,Bagging 策略来源于bootstrap aggregation:首先,从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样);其次,在所有样本上,对这n个样本建立分类器(如ID3,C4.5,CART 等),重复以上两步m次,获得m个分类器。最后,根据这m个分类器的投票结果,决定数据属于哪一类。将钒钛资源按以下分类,钒钛资源分类如表1 所示。
表1 钒钛资源分类
在确定关键词为钒钛的情况下,从知乎、万维等论文资源网站上爬取收集大量与攀枝花钒钛相关的相关文本数据,并从其资料入手,基于jieba 模型对文本进行分词,对词库经行类别分析,TF-IDF 特征值抽取与数据分类打分,从而找到热点搜索关键词,建立钒钛搜索语料库。为用户了解攀枝花钒钛的意向感知与搜索引擎提供一个知识库,可并用加载于各大百度,搜狗词典。