王 霞,張俊坤,陳 堯,文科歷
(攀枝花學(xué)院,四川 攀枝花 617000)
在大數(shù)據(jù)處理中,隨著Python 爬蟲技術(shù)的優(yōu)化與改進(jìn),能夠?qū)崿F(xiàn)對(duì)信息準(zhǔn)確挖掘,達(dá)到對(duì)關(guān)鍵字準(zhǔn)確檢索的目的。本文將釩鈦的相關(guān)信息進(jìn)行詞庫建立優(yōu)化,按照關(guān)鍵詞搜索指數(shù)、搜索類別進(jìn)行層級(jí)目錄建設(shè),并通過正則表達(dá)式提取網(wǎng)頁中的分類,用隨機(jī)深林算法完成詞語的詞性的分類[1]。
網(wǎng)絡(luò)爬蟲主要在于收集網(wǎng)絡(luò)上的各種資源,能夠自動(dòng)提取網(wǎng)頁程序,對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行抓取,為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成部分。就網(wǎng)絡(luò)爬蟲而言,其又稱為網(wǎng)頁蜘蛛、網(wǎng)頁機(jī)器人、網(wǎng)頁追逐者。網(wǎng)絡(luò)爬蟲處理數(shù)據(jù)過程一般可以分為3 個(gè)部分:第一部分?jǐn)?shù)據(jù)采集。向網(wǎng)站發(fā)起請求,獲取資源采集需要的數(shù)據(jù)。第二部分?jǐn)?shù)據(jù)處理。從待抓取的URL 中取出解析DNS 以及分析處理數(shù)據(jù)。第三部分?jǐn)?shù)據(jù)存儲(chǔ)。將提取的數(shù)據(jù)永久存放。所有被爬蟲抓取的網(wǎng)頁將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過濾,并建立索引,以便之后的查詢和檢索。對(duì)于爬蟲來說,這一過程所得到的分析結(jié)果還可以對(duì)以后抓取過程給出反饋和指導(dǎo)[2]。
首先,找到URL 地址,分析網(wǎng)頁性質(zhì),將找到的URL 地址使用requests 庫或selenium 進(jìn)行請求解析,獲取網(wǎng)頁的源碼內(nèi)容。其次,分析網(wǎng)頁源碼的內(nèi)容,使用css 選擇器或re 正則表達(dá)式用來解析提取想要獲取的內(nèi)容。最后,將提取的內(nèi)容保存至MySQL 數(shù)據(jù)庫。爬取本次網(wǎng)站主要由4 部分構(gòu)成:(1)主程序負(fù)責(zé)調(diào)用分配各模塊之間的關(guān)系;(2)數(shù)據(jù)庫用來存儲(chǔ)數(shù)據(jù);(3)數(shù)據(jù)采集模塊用來爬取網(wǎng)站的數(shù)據(jù),并解析獲取的數(shù)據(jù)保存至數(shù)據(jù)庫;(4)數(shù)據(jù)下載模塊主要獲取數(shù)據(jù)庫的URL 連接,并下載相對(duì)應(yīng)的文件[3]。網(wǎng)絡(luò)爬蟲整體流程如圖1 所示。
圖1 網(wǎng)絡(luò)爬蟲整體流程
在網(wǎng)站中,一個(gè)好的網(wǎng)站需要好的結(jié)構(gòu)布局,在建設(shè)初期如果能把網(wǎng)站所要優(yōu)化的關(guān)鍵詞大部分都挖掘出來并建立詞庫,會(huì)對(duì)網(wǎng)站內(nèi)鏈有指導(dǎo)性幫助。一個(gè)網(wǎng)站外鏈的建設(shè)需要合理的結(jié)構(gòu),在關(guān)鍵詞詞庫的幫助下建立更清楚頁面。一個(gè)站的關(guān)鍵詞指數(shù)是有限的,因此通過搜索引擎所帶來的流量也是有限[4]。本文研究目標(biāo)為攀枝花釩鈦相關(guān)咨詢關(guān)鍵詞,及釩鈦相關(guān)文獻(xiàn)、專利和科技報(bào)告。內(nèi)容為分析統(tǒng)計(jì)咨詢攀枝花釩鈦的關(guān)鍵詞、釩鈦相關(guān)文獻(xiàn),科技報(bào)告的查閱瀏覽,最后是對(duì)攀枝花釩鈦詞庫的分析建立[5]。
數(shù)據(jù)的采集模塊主要使用了requests 庫。本研究的目的主要是獲取網(wǎng)站的URL 的地址,將其存放至MySQL 數(shù)據(jù)庫。數(shù)據(jù)采集的主要步驟:(1)分析網(wǎng)頁性質(zhì),判斷網(wǎng)頁是否是動(dòng)態(tài)網(wǎng)頁,若為動(dòng)態(tài)網(wǎng)頁,則需進(jìn)一步分析查找URL 地址。(2)將找到的URL 地址,使用requests 庫請求該地址,獲取網(wǎng)頁的內(nèi)容。(3)將獲取的網(wǎng)頁內(nèi)容使用css 選擇器或re 正則表達(dá)式解析數(shù)據(jù),提取需要的數(shù)據(jù)。(4)對(duì)獲取的數(shù)據(jù)使用MySQL數(shù)據(jù)庫將其保存,數(shù)據(jù)量大于某一數(shù)值便停止爬去,想要使用數(shù)據(jù)時(shí)以便提取。
數(shù)據(jù)的下載模塊,主要使用的模塊為selenium 自動(dòng)化測試工具,下載內(nèi)容為數(shù)據(jù)采集模塊爬去的URL地址,URL 地址從數(shù)據(jù)庫獲取,下載的URL 文件格式為‘.pdf’,具體的實(shí)現(xiàn)過程如下:(1)從數(shù)據(jù)庫每次提取若干條數(shù)據(jù),將提取的數(shù)據(jù)依次使用selenium 下載,并將提取的數(shù)據(jù)從數(shù)據(jù)庫中刪除。判斷數(shù)據(jù)庫中的數(shù)據(jù)量是否小于某一數(shù)值,若小于則繼續(xù)調(diào)用數(shù)據(jù)采集模塊,直到數(shù)據(jù)庫中的數(shù)據(jù)量達(dá)到某一數(shù)值便停止采集。(2)將下載的內(nèi)容保存至事先準(zhǔn)備好的文件夾中,以便后續(xù)進(jìn)行對(duì)數(shù)據(jù)處理。
找到事先準(zhǔn)備好存儲(chǔ)數(shù)據(jù)的文件夾,讀取里面的pdf 文件,修改pdf 文件名,對(duì)修改后的文件名字使用pdfplumber 庫依次遍歷pdf 文件內(nèi)容,并將內(nèi)容全部寫進(jìn).txt 文件中。
在數(shù)據(jù)文件準(zhǔn)備好且格式轉(zhuǎn)換完之后,在詞庫建立之前,需要對(duì)文本數(shù)據(jù)進(jìn)行預(yù)處理,整合顯示格式,以達(dá)到較好的分詞統(tǒng)計(jì)效果。首先,將數(shù)據(jù)讀入為pandas 數(shù)據(jù)幀,對(duì)核心詞進(jìn)行整理。其次,對(duì)于文本數(shù)據(jù)中出現(xiàn)的大量數(shù)字、標(biāo)點(diǎn)符號(hào)以及空行和大量英文摘要轉(zhuǎn)換而成的英語數(shù)據(jù)進(jìn)行匹配,選取相應(yīng)索引,將滿足條件的索引進(jìn)行篩選刪除,以便更精確地對(duì)文本進(jìn)行分詞以及詞頻統(tǒng)計(jì)。
此外,在文本數(shù)據(jù)中需要對(duì)沒有實(shí)際意義的字、詞語進(jìn)行過濾。因此使用簡體中文停用詞表cn _stopwords.txt。停用詞是指在信息檢索中,為節(jié)省存儲(chǔ)空間和提高搜索效率,在處理自然語言數(shù)據(jù)(或文本)之前或之后會(huì)自動(dòng)過濾掉某些字或詞,這些字或詞即被稱為Stop Words(停用詞)。這些停用詞都是人工輸入、非自動(dòng)化生成的,生成后的停用詞會(huì)形成一個(gè)停用詞表。cn_stopwords.txt 里面所包含的詞在任何場景中都是高頻詞,并且沒有實(shí)際的含義,在應(yīng)用詞云分析前將其進(jìn)行清除。
TF-IDF(詞頻-逆文本頻率)是一種用以評(píng)估字詞在文檔中重要程度的統(tǒng)計(jì)方法。如果某個(gè)詞在一篇文章中出現(xiàn)的頻率即TF 高,并且在其他文檔中出現(xiàn)的很少,則認(rèn)為這個(gè)詞有很好的類別區(qū)分能力。
TF -IDFij=tfij×idfi
其中tfij=,分子為i詞在j文檔中出現(xiàn)的次數(shù),分母為j文檔中所有字詞出現(xiàn)的次數(shù)之和。首先,定義術(shù)詞頻-逆文檔頻率(tf-idf) 的向量化參數(shù),計(jì)算文檔中每個(gè)單詞出現(xiàn)的次數(shù),然后轉(zhuǎn)換成tf-idf矩陣。其次,使用 TF-IDF 權(quán)重。有些詞在文檔中經(jīng)常出現(xiàn),但在語料庫中權(quán)重并不是很高,這些詞被認(rèn)為與文檔的關(guān)聯(lián)更密切。利用TF—IDF 公式進(jìn)行釩鈦文檔主題詞權(quán)重大小排序,根據(jù)閾值劃分,得到一個(gè)文檔的候選主題詞序列。本文從語義角度繼續(xù)分析釩鈦文檔,以便于驗(yàn)證對(duì)比之后進(jìn)行的詞頻統(tǒng)計(jì)結(jié)果,以及更準(zhǔn)確地提取主題詞。
jieba 中文分詞支持繁體分詞,支持自定義詞典,MIT 授權(quán)協(xié)議且支持4 種分詞模式:精確模式、全模式、搜索引擎模式、paddle 模式。jieba.cut 方法接受四個(gè)輸入?yún)?shù):需要分詞的字符串;cut_all 參數(shù)用來控制是否采用全模式;HMM 參數(shù)用來控制是否使用 HMM模型;use_paddle 參數(shù)用來控制是否使用paddle 模式下的分詞模式;paddle 模式采用延遲加載方式,通過enable_paddle 接口安裝paddlepaddle-tiny,并且import相關(guān)代碼。目的是文本分析,于是使用全模式進(jìn)行分,jieba.lcut(temp,cut_all=False,HMM=True)得到數(shù)萬條詞語數(shù)據(jù)。
隨機(jī)森林屬于Bagging 類型,Bagging 策略來源于bootstrap aggregation:首先,從樣本集(假設(shè)樣本集N個(gè)數(shù)據(jù)點(diǎn))中重采樣選出Nb個(gè)樣本(有放回的采樣);其次,在所有樣本上,對(duì)這n個(gè)樣本建立分類器(如ID3,C4.5,CART 等),重復(fù)以上兩步m次,獲得m個(gè)分類器。最后,根據(jù)這m個(gè)分類器的投票結(jié)果,決定數(shù)據(jù)屬于哪一類。將釩鈦資源按以下分類,釩鈦資源分類如表1 所示。
表1 釩鈦資源分類
在確定關(guān)鍵詞為釩鈦的情況下,從知乎、萬維等論文資源網(wǎng)站上爬取收集大量與攀枝花釩鈦相關(guān)的相關(guān)文本數(shù)據(jù),并從其資料入手,基于jieba 模型對(duì)文本進(jìn)行分詞,對(duì)詞庫經(jīng)行類別分析,TF-IDF 特征值抽取與數(shù)據(jù)分類打分,從而找到熱點(diǎn)搜索關(guān)鍵詞,建立釩鈦搜索語料庫。為用戶了解攀枝花釩鈦的意向感知與搜索引擎提供一個(gè)知識(shí)庫,可并用加載于各大百度,搜狗詞典。