王忠振
摘要:領(lǐng)域關(guān)聯(lián)處理就是處理網(wǎng)絡(luò)信息中各領(lǐng)域中的詞匯關(guān)聯(lián),該文將應(yīng)用到維基百科上的分類來獲取特征詞,用這些特征詞從維基百科、百度搜索和新浪微博中獲得網(wǎng)絡(luò)信息。這里的網(wǎng)絡(luò)信息內(nèi)容包含有文字、圖片、聲音、視頻等,因此在獲取信息時(shí),需要對(duì)網(wǎng)頁內(nèi)容進(jìn)行預(yù)處理,去除大量的無用信息,包括圖片、聲音、視頻等。
關(guān)鍵詞:特征詞;語料;領(lǐng)域
中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)19-0007-04
在處理領(lǐng)域詞義關(guān)聯(lián)過程中,要獲取領(lǐng)域的特征詞庫,并以其做了維基百科的詞條進(jìn)行爬取語料;特征還將做了百度搜索和新浪微博的關(guān)鍵字進(jìn)行相關(guān)數(shù)據(jù)的獲取。由于網(wǎng)絡(luò)資源極其豐富,做全網(wǎng)測(cè)試難度較大,這里從維基百科、百度搜索和新浪微博上獲取相關(guān)領(lǐng)域語料,涉及對(duì)不同形式的網(wǎng)站進(jìn)行獲取語料,這里就需要多模式爬蟲,如今互聯(lián)網(wǎng)上的語料數(shù)據(jù)基本都是通過“網(wǎng)絡(luò)機(jī)器人”來實(shí)現(xiàn)的,本文的語料從通過三種方式自動(dòng)提取語料的程序:
1維基百科信息的爬取
圖1中可以看出維基百科詞條的一類形式,可依據(jù)領(lǐng)域特征詞對(duì)特定詞條進(jìn)行爬取,對(duì)詞條內(nèi)相關(guān)詞條的屬性形成內(nèi)鏈接進(jìn)行第二層爬取,對(duì)網(wǎng)頁去除噪音等處理,通過爬取得到領(lǐng)域文本集合。由于維基百科語料中存在漢語的繁體字,因此有必要做繁體向簡(jiǎn)體轉(zhuǎn)換操作。
這里“詞條”都是維基百科的基本單元,“詞條”由一篇文章進(jìn)行解釋,可能包含有圖片,有些復(fù)雜的詞條頁面圖可能還包含結(jié)構(gòu)化、模板化的解釋,圖1是維基百科中有代表性的詞條,其詞為“護(hù)士”,其詞為同義詞為“護(hù)理人員”,詞條里有對(duì)詞匯解釋的內(nèi)鏈接,可以根據(jù)自己的興趣跳轉(zhuǎn)到屬性解釋頁面;有涉及同義詞的重定向,重定向就是含義相同而表述不同的詞條用相同的頁面來解釋;而這里歧義比較大的例如在解釋的時(shí)候,涉及護(hù)士工作或?qū)W習(xí)地方有“學(xué)?!?,“學(xué)?!弊鳛閮?nèi)鏈接所得到的語料內(nèi)容雖然是護(hù)士工作或?qū)W習(xí)的地點(diǎn),但內(nèi)容應(yīng)該屬于教育領(lǐng)域;詞條頁面里列舉圖片一般是起到典型的解釋作用,比如“南丁格爾”。
圖2是對(duì)維基百科內(nèi)鏈接的一個(gè)圖示。
由于領(lǐng)域語料的豐富,需要從領(lǐng)域中找出領(lǐng)域特征詞,這個(gè)數(shù)據(jù)量是少的,找出特征詞的URL隊(duì)列,對(duì)由Java開發(fā)的Ti-ka1.4的開源項(xiàng)目進(jìn)行擴(kuò)展來實(shí)現(xiàn)模塊功能。本文用它來從網(wǎng)上抓取想要的資源,它具有良好的可擴(kuò)展性,對(duì)其實(shí)現(xiàn)的功能進(jìn)行豐富,可以實(shí)現(xiàn)自動(dòng)爬取。首先要在開始爬取時(shí)提供特征詞隊(duì)列的維基的URL給種子文件,獲得了初始的URL后,在爬取維基詞條過程中,不斷從當(dāng)前詞條中獲取詞條屬性詞的URL種子文件放人URL,直到滿足功能模塊提供參數(shù)時(shí)停止。注意在新增加的URL中,對(duì)隊(duì)列原有的URL種子列表進(jìn)行匹配,如果在原來隊(duì)列中存在,則不進(jìn)行添加,否則添加。
這里對(duì)深度優(yōu)先爬蟲進(jìn)行修改,因?qū)S基百科中進(jìn)行爬取,往往會(huì)對(duì)詞條內(nèi)一層內(nèi)鏈接進(jìn)行再爬取,因其一般會(huì)對(duì)詞條有解釋作用,有助于深度學(xué)習(xí)算法對(duì)語料集中領(lǐng)域詞義關(guān)聯(lián)進(jìn)行計(jì)算,這里詞條的內(nèi)鏈接URL會(huì)被提取,需要對(duì)鏈接地址進(jìn)進(jìn)行查復(fù),就在爬取的隊(duì)列中是否存在,如果存在則拋出,否則把鏈接地址追加爬取隊(duì)列的底部等待爬取,也就達(dá)到了去重目的。歧義的詞條頁面語料出現(xiàn)畢竟其數(shù)據(jù)很少,所以在大量的領(lǐng)域語料中一般其詞頻的閾值不會(huì)構(gòu)成干憂。
這里爬蟲獲取語料屬于預(yù)定領(lǐng)域的可以被稱為正領(lǐng)域,否則稱為負(fù)領(lǐng)域,根據(jù)上述方法,如果用戶提供的特征詞越豐富爬全率越高;用戶提供的特征詞越準(zhǔn)確則爬準(zhǔn)率越高。在這種情況下,爬準(zhǔn)率和爬全率顯得更為重要,分別測(cè)試了領(lǐng)域語料的準(zhǔn)確性和完整性,這里通過領(lǐng)域區(qū)分的混合矩陣可以得出這兩個(gè)特性的評(píng)估標(biāo)準(zhǔn),高的爬全率一般是犧牲爬準(zhǔn)率為代價(jià)的,就是爬取語料越多,語料里跨領(lǐng)域的信息就越多,因此語料數(shù)量適中就好。
2百度搜索信息的爬取
因?yàn)榫S基百科具有兩個(gè)優(yōu)勢(shì):沒有爬蟲陷阱和沒有拒絕服務(wù)攻擊。相比之下百度百科API設(shè)置了頻繁訪問次數(shù)和時(shí)間間隔,因此適合廣度搜索,并設(shè)置爬取時(shí)間間隔。
2.1百度搜索信息獲取的方法
為了獲取各大門戶網(wǎng)站上關(guān)于某個(gè)領(lǐng)域的新聞情況時(shí)可以通過百度搜索,由于本文所做的是一段時(shí)間內(nèi)的研究,因此這里對(duì)領(lǐng)域內(nèi)每條特征詞進(jìn)行兩百條的搜索并進(jìn)行爬取,經(jīng)興趣小組人工檢測(cè),這個(gè)數(shù)量相當(dāng)于一個(gè)月的新聞總數(shù),除非在此領(lǐng)域有重特大事件發(fā)生。百度百科沒有提供API接口并且設(shè)置了頻繁訪問次數(shù)和時(shí)間間隔,這大大增加了獲取語料的難度。
圖5中可以看出,在百度搜過中,每個(gè)搜索詞對(duì)應(yīng)各類型站點(diǎn),網(wǎng)頁的編碼形式也不盡相同,因此對(duì)每一個(gè)網(wǎng)頁都需要做出預(yù)處理。
這里不同于維基百科,因?yàn)槊總€(gè)網(wǎng)頁可能屬性不同的頁面,課題的需求就是對(duì)網(wǎng)頁的正文部分進(jìn)行爬取,但這里存在的問題就是,網(wǎng)頁i(1《i≤n)與網(wǎng)頁i(1≤j≤n)可能在內(nèi)容大部分相似;特征詞2中的網(wǎng)頁也可能與特征詞1里的網(wǎng)頁相似,這里需要對(duì)內(nèi)容相似部分進(jìn)行去重處理,本文采用余弦向量法進(jìn)行相似性檢測(cè)。
其實(shí)百度百科的漢語領(lǐng)域語料相當(dāng)全面,但由于其設(shè)定對(duì)用戶的頻繁訪問限制,因此不適合做類似于維基百科的領(lǐng)域語料。上面領(lǐng)域的語料體系豐富后,要對(duì)網(wǎng)上的關(guān)于某領(lǐng)域的新聞動(dòng)態(tài)進(jìn)行追蹤,這里用到百度搜索。這里的爬取方法與上面的不同,這里通過特征詞表提供的詞匯輸入到隊(duì)列,利用百度搜索引擎接口,對(duì)每個(gè)特征詞搜索200條,這個(gè)值不是固定,如果體系一直在運(yùn)行狀態(tài),可以改成20條,因?yàn)槊刻旄碌男畔?shù)量并不是特別大,除了新發(fā)生的熱點(diǎn)事件。這里需要強(qiáng)調(diào)即使是熱點(diǎn)事件,很多新聞的內(nèi)容都大致相同,所以這里需要相似性計(jì)算,如計(jì)算得出兩個(gè)以上的新聞內(nèi)容相似性高則只保留一篇。
2.2百度搜索信息獲取模塊的去重
兩個(gè)文本的相似性檢測(cè),文本主要是由詞和短語對(duì)比構(gòu)成,所以這里需要對(duì)文本進(jìn)行分詞,分詞的方法可以采用以字符串為匹配的分詞方法,是在爬取后進(jìn)行分詞,把分詞的文本另存儲(chǔ)到備份目錄,因此其相似度用單位向量?jī)?nèi)積的方法檢測(cè):
為了證明實(shí)例,這里有維基百科中醫(yī)療領(lǐng)域的兩個(gè)詞條:
詞條1:患者是指患有疾病、忍受疾病痛苦的人。
詞條2:病人是指生有疾病、等待接受內(nèi)外科醫(yī)生的治療與照料的人。
列出tf-idf權(quán)重矩陣:對(duì)這個(gè)兩個(gè)詞條相似性進(jìn)行計(jì)算:(1)兩個(gè)向量的點(diǎn)積:
因此在本文中,即便內(nèi)容不一致的兩個(gè)文檔也運(yùn)用空間向量模型運(yùn)算都可能有很高的相似度。如果百度搜索爬取的網(wǎng)頁出現(xiàn)在爬取的文本B與語料庫中文本A相似度高于90%的就被判定其相似,導(dǎo)致文本B不存于語料庫中。這里還有一個(gè)好處就是,進(jìn)行相似性匹配時(shí),為各別網(wǎng)站的拒絕服務(wù)式攻擊延遲了時(shí)間。
2.3百度搜索信息獲取中的爬準(zhǔn)率和爬全率
在百度搜索中,有些領(lǐng)域特征詞雖然屬于這個(gè)領(lǐng)域,由于媒體編輯的隨意性,導(dǎo)致有些語料并不屬于這個(gè)領(lǐng)域,因此影響爬準(zhǔn)率;而且百度搜索中,雖然能夠鏈接屬于這個(gè)領(lǐng)域的,但其網(wǎng)頁解析出的內(nèi)容沒有價(jià)值,比如本文是作詞義關(guān)聯(lián)的,網(wǎng)頁中如有涉及圖片視頻的內(nèi)容,有些就不是課題需要的內(nèi)容,這影響爬全率。百度的爬全率不同于維基的爬全率,維基的爬取基數(shù)是不可預(yù)測(cè)的,而百度搜索的是設(shè)定固定的值,那么能爬下來的信息所占的比重就是百度的爬全率;百度的爬準(zhǔn)率是在爬下來的數(shù)據(jù)中,屬于預(yù)設(shè)領(lǐng)域語料所點(diǎn)的比重:
本文中每個(gè)特征詞設(shè)置了200條,比醫(yī)療這個(gè)領(lǐng)域的“護(hù)士”特征詞,其中有4條是圖片或視頻新聞,不采集,因此爬全率是:96%;在96篇文檔中65篇是護(hù)士招聘或影視信息、4篇是游戲內(nèi)容,不屬于課題需要研究的內(nèi)容,因此爬準(zhǔn)率是:(96-69)/96=28%。也不能因?yàn)橐粋€(gè)特征詞就不采取百度搜索的語料,因?yàn)轭I(lǐng)域的特征詞并不只是一個(gè),像“導(dǎo)彈”就有82%爬準(zhǔn)率,這里跟每個(gè)時(shí)間是否在該領(lǐng)域內(nèi)有熱點(diǎn)事件有關(guān),百度搜索的爬取有助于熱點(diǎn)事件的追蹤。
3新浪微博信息的爬取
中國的微博用戶數(shù)量已成世界第一,特別是新浪微博,作為傳播媒介,廣大用戶都成為微博信息傳播的驅(qū)動(dòng)力,對(duì)新浪微博上博文進(jìn)行爬取,有效分析每天產(chǎn)生的上億條微博對(duì)熱點(diǎn)事件的影響。但是傳統(tǒng)的網(wǎng)絡(luò)爬蟲方式?jīng)]有新浪微博的身份驗(yàn)證,獲取的微博數(shù)量有限,而調(diào)用新浪API進(jìn)行爬取,也會(huì)受到調(diào)用次數(shù)的限制。
因此采用基于爬蟲模擬登錄的策略實(shí)現(xiàn)微博爬取。
4多源語料并行爬取框架
為了節(jié)省整個(gè)體系中服務(wù)器的處理器、硬盤、網(wǎng)絡(luò)的開消,上述三種資源開銷都可能成為體系的瓶頸,網(wǎng)絡(luò)受限于帶寬的控制、服務(wù)器的處理速度以及磁盤的尋道和傳輸時(shí)間。如需要提高爬蟲效率,則需要設(shè)置合適的并發(fā)線程或進(jìn)程服務(wù)數(shù)目。
軟件工程中要求,“高內(nèi)聚、低耦合”,領(lǐng)域詞義關(guān)聯(lián)體系在各個(gè)模塊部分中要求把數(shù)據(jù)處理好,每個(gè)塊塊都只有一個(gè)入口,一個(gè)出口,這樣才能保證輸入輸出數(shù)據(jù)一致。在語料爬取模塊分為三個(gè)部分:維基百科,由于這部分語料更新較慢,所以提前做好的;百度新聞,則是面對(duì)各大網(wǎng)站的新聞,還包換個(gè)人的博客,論壇的帖子等,這里先不考慮其語料的真實(shí)性;新浪微博,以每天人們對(duì)新興事件的發(fā)帖、評(píng)論或轉(zhuǎn)發(fā),也以繼續(xù)對(duì)熱點(diǎn)事件新介入的因素進(jìn)行關(guān)注和評(píng)論。