《基于互聯(lián)網(wǎng)+大數(shù)據(jù)的輿情分析》課件-第2章_第1頁(yè)
《基于互聯(lián)網(wǎng)+大數(shù)據(jù)的輿情分析》課件-第2章_第2頁(yè)
《基于互聯(lián)網(wǎng)+大數(shù)據(jù)的輿情分析》課件-第2章_第3頁(yè)
《基于互聯(lián)網(wǎng)+大數(shù)據(jù)的輿情分析》課件-第2章_第4頁(yè)
《基于互聯(lián)網(wǎng)+大數(shù)據(jù)的輿情分析》課件-第2章_第5頁(yè)
已閱讀5頁(yè),還剩159頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第2章互聯(lián)網(wǎng)+用戶(hù)情感挖掘的技術(shù)與方法2.1情感詞典構(gòu)建方法2.2網(wǎng)絡(luò)爬蟲(chóng)技術(shù)2.3文本挖掘技術(shù)2.4傾向性分析技術(shù)

2.1情感詞典構(gòu)建方法

2.1.1基于函數(shù)優(yōu)化的通用情感詞典構(gòu)建

1.問(wèn)題描述及求解框架

計(jì)算詞匯的語(yǔ)義傾向,目的就是要對(duì)每個(gè)語(yǔ)氣待定的詞語(yǔ)賦予-1~+1之間的一個(gè)實(shí)數(shù)。其中,正負(fù)號(hào)用來(lái)表明詞語(yǔ)語(yǔ)義的褒貶;實(shí)數(shù)的絕對(duì)值表明了該詞語(yǔ)褒貶的強(qiáng)烈程度。為簡(jiǎn)單起見(jiàn),通常將詞語(yǔ)的傾向性標(biāo)為-1或+1。

如果這樣設(shè)想,則可用一個(gè)無(wú)向圖來(lái)表示字典中所有詞語(yǔ)的關(guān)系。構(gòu)建無(wú)向圖G={V,E},其中,V為圖中的節(jié)點(diǎn)集合,V={W0,W1,…,W9},代表字典中的每個(gè)單詞;E為圖中的連邊集合,E={S10,S12,…,S90}代表詞語(yǔ)兩兩之間的相似度,如圖2-1所示。

圖2-1詞語(yǔ)關(guān)系帶權(quán)無(wú)向圖

本方向基于這樣的假設(shè):具有較大的相似度的兩個(gè)詞語(yǔ)更有可能具有相同的語(yǔ)義傾向。這樣,詞語(yǔ)的語(yǔ)義傾向計(jì)算問(wèn)題可以歸結(jié)為對(duì)無(wú)向圖G進(jìn)行劃分,使得符號(hào)相同的節(jié)點(diǎn)子圖相似度之和最大;同時(shí),讓符號(hào)相異的節(jié)點(diǎn)子圖相似度之和最小。這樣,就確定了圖中每個(gè)詞語(yǔ)的語(yǔ)義傾向。

定義2.1

W為包含所有語(yǔ)義傾向的待定詞語(yǔ)的集合,所包含詞語(yǔ)的個(gè)數(shù)為N=|W|,且詞語(yǔ)i與詞語(yǔ)j的連接權(quán)重為

定義2.2

C1和C2為W的劃分,即C1

?W,C2

?W,C1

∪C2

=W,C1

C2=?。同時(shí),為了便于說(shuō)明,定義兩個(gè)指示函數(shù)如下:

以及

在經(jīng)典的圖劃分問(wèn)題中,對(duì)于多圖劃分問(wèn)題,通常將目標(biāo)函數(shù)定義為

對(duì)于圖的二分問(wèn)題,目標(biāo)函數(shù)可以簡(jiǎn)化為如下形式:

其中:

目標(biāo)函數(shù)中包含兩項(xiàng):其中一項(xiàng)用于減少子圖之間的連邊數(shù)量;另一項(xiàng)用于平衡兩個(gè)子圖的規(guī)模差異。

考慮情感詞語(yǔ)的語(yǔ)氣分類(lèi)問(wèn)題,由于事先不知道子圖的大小,因此不能假定正負(fù)語(yǔ)氣的兩個(gè)子圖規(guī)模大致相等,即不能采用式(2-5)中的平衡詞語(yǔ)。下面以“最小切分”為目標(biāo)對(duì)圖進(jìn)行劃分,目標(biāo)函數(shù)需滿(mǎn)足以下幾個(gè)條件:

(1)獎(jiǎng)勵(lì)子類(lèi)內(nèi)部的連邊;

(2)懲罰子類(lèi)內(nèi)部的非連邊;

(3)懲罰子類(lèi)間的連邊;

(4)獎(jiǎng)勵(lì)子類(lèi)間的非連邊,即

同時(shí),可以將目標(biāo)函數(shù)所滿(mǎn)足的條件歸為兩類(lèi):條件(1)和條件(2)用于增加子類(lèi)的內(nèi)聚性;條件(3)和條件(4)用于減少子類(lèi)之間的耦合性。具體的實(shí)現(xiàn)方法有以下三點(diǎn):

(1)利用詞語(yǔ)間關(guān)系構(gòu)建詞語(yǔ)無(wú)向圖;

(2)將詞語(yǔ)語(yǔ)義傾向計(jì)算問(wèn)題轉(zhuǎn)化為圖劃分問(wèn)題,并進(jìn)一步轉(zhuǎn)化為函數(shù)優(yōu)化問(wèn)題;

(3)構(gòu)建求解算法對(duì)目標(biāo)函數(shù)進(jìn)行求解。

2.詞語(yǔ)相似度計(jì)算

詞匯相似度計(jì)算是自然語(yǔ)言處理、信息檢索和信息抽取等領(lǐng)域的一項(xiàng)重要且基礎(chǔ)的工作,目的是度量詞語(yǔ)之間的相似程度。通常,相似度值被定義為0~1之間的一個(gè)實(shí)數(shù),絕對(duì)值越大,相似度越高。

計(jì)算相似度有兩種思路:一種是利用統(tǒng)計(jì)方法,通過(guò)分析大規(guī)模語(yǔ)料中的詞語(yǔ)分布規(guī)律,得出詞語(yǔ)的相似度;另一種是基于詞典的方法,比如英文詞典WordNet和中文詞典知網(wǎng)(英文名稱(chēng)為HowNet)。

1)基于語(yǔ)料的詞語(yǔ)相似度計(jì)算

互聯(lián)網(wǎng)作為一個(gè)巨大的語(yǔ)料庫(kù),其價(jià)值已被越來(lái)越多的人認(rèn)識(shí)。本章將傳統(tǒng)的基于詞語(yǔ)共現(xiàn)率計(jì)算相似度的方法進(jìn)行適當(dāng)變化,使其可以應(yīng)用于互聯(lián)網(wǎng)語(yǔ)料。

2)基于HowNet的詞語(yǔ)相似度計(jì)算

知網(wǎng)是一個(gè)以漢語(yǔ)和英語(yǔ)的詞語(yǔ)所代表的概念為描述對(duì)象,以揭示概念與概念之間以及概念所具有的屬性之間的關(guān)系為基本內(nèi)容的常識(shí)知識(shí)庫(kù)。

對(duì)于漢語(yǔ)詞匯,知網(wǎng)中的描述基于“義原”這一基本概念。義原,可以被認(rèn)為是漢語(yǔ)中最基本的、不易于再分隔的最小語(yǔ)義單位。

3.問(wèn)題求解

由于詞語(yǔ)的語(yǔ)義傾向問(wèn)題是一個(gè)NP完全問(wèn)題,因此本節(jié)引入模擬退火的思想,將解決問(wèn)題的過(guò)程轉(zhuǎn)化為在目標(biāo)函數(shù)的解空間中搜索最優(yōu)解的過(guò)程。

模擬退火算法是基于蒙特卡羅迭代求解策略的一種隨機(jī)尋優(yōu)算法,其出發(fā)點(diǎn)是基于物理中固體物質(zhì)的退火過(guò)程與一般組合優(yōu)化問(wèn)題之間的相似性。

模擬退火算法是局部搜索算法的擴(kuò)展,它不同于局部搜索之處是:以一定的概率選擇領(lǐng)域中的最優(yōu)值狀態(tài)。

1)模擬退火算法的馬氏鏈描述

馬氏鏈?zhǔn)欠治瞿M退火算法的重要數(shù)學(xué)工具,下面首先介紹模擬退火算法的馬氏鏈描述。

2)基于模擬退火的詞語(yǔ)語(yǔ)義傾向判定算法

基于模擬退火的詞語(yǔ)語(yǔ)義傾向判定算法的偽代碼如下所示。

3)SOSA算法的收斂性

模擬退火算法要實(shí)現(xiàn)全局收斂,直觀上必須滿(mǎn)足以下幾個(gè)條件:

(1)狀態(tài)可達(dá)性,即對(duì)應(yīng)馬氏鏈的狀態(tài)圖是強(qiáng)連通的;

(2)初值魯棒性,即算法的最終結(jié)果不依賴(lài)于初值;

(3)極限分布的存在性。

2.1.2基于Modularity優(yōu)化的通用情感詞典構(gòu)建

1.背景

圖劃分方法能夠更好地利用詞語(yǔ)間的全局信息,因此,本節(jié)從圖劃分的角度進(jìn)行詞語(yǔ)語(yǔ)義傾向計(jì)算。

通常以最小切分為目標(biāo)的目標(biāo)函數(shù)需滿(mǎn)足以下幾個(gè)條件:

(1)獎(jiǎng)勵(lì)子類(lèi)內(nèi)部的連邊;

(2)懲罰子類(lèi)內(nèi)部的非連邊;

(3)懲罰子類(lèi)間的連邊;

(4)獎(jiǎng)勵(lì)子類(lèi)間的非連邊,即

至此可以發(fā)現(xiàn),公式(2-24)和(2-27)的形式是相似的,并且,當(dāng)η=1時(shí),有

2.算法基本過(guò)程

1)構(gòu)建詞語(yǔ)相似度矩陣

本節(jié)采用兩種詞語(yǔ)相似度計(jì)算方法構(gòu)建詞語(yǔ)相似度矩陣:第一種方法是利用HowNet提供的相似度函數(shù);第二種方法是利用語(yǔ)料中詞語(yǔ)的共現(xiàn)信息。

2)詞語(yǔ)語(yǔ)義傾向計(jì)算

基于之前得到的詞語(yǔ)相似度矩陣,我們以Modularity為目標(biāo)函數(shù),按照能夠使函數(shù)值極大的方式將其劃分為兩個(gè)不相交的子圖。

(1)通過(guò)詞語(yǔ)相似度鄰接矩陣構(gòu)建Modularity矩陣;

(2)找到對(duì)應(yīng)于最大特征值的特征向量,向量中每個(gè)元素對(duì)應(yīng)每個(gè)待計(jì)算語(yǔ)義傾向的詞語(yǔ),將這些詞語(yǔ)按照特征值的正負(fù)分為兩類(lèi);

(3)對(duì)于每類(lèi)詞語(yǔ),首先確定該類(lèi)中類(lèi)內(nèi)度數(shù)最大詞語(yǔ)的語(yǔ)義傾向,并用該語(yǔ)義傾向作為這個(gè)類(lèi)別的語(yǔ)義傾向;

(4)持續(xù)地在兩類(lèi)之間交換詞語(yǔ),直到Modularity值穩(wěn)定;

(5)返回測(cè)試集中每個(gè)詞語(yǔ)的語(yǔ)義傾向。

3.算法實(shí)現(xiàn)

現(xiàn)有詞語(yǔ)相似度的計(jì)算方法主要有兩種思路:一種是通過(guò)分析語(yǔ)料中的詞語(yǔ)分布規(guī)律,得出詞語(yǔ)的相似度;另一種是基于詞典的方法。本節(jié)分別采用了基于語(yǔ)料統(tǒng)計(jì)的相似度計(jì)算方法和語(yǔ)義詞典HowNet提供的詞語(yǔ)相似度計(jì)算方法來(lái)構(gòu)建詞語(yǔ)相似度矩陣。

4.優(yōu)化Modularity值

對(duì)于算法的第二部分(將問(wèn)題轉(zhuǎn)化為一個(gè)函數(shù)優(yōu)化問(wèn)題),可以使用各種方法對(duì)Modularity值進(jìn)行優(yōu)化,如貪婪算法、模擬退火算法、極值優(yōu)化等方法。

2.1.3基于擴(kuò)展信息瓶頸的領(lǐng)域情感詞典構(gòu)建

1.問(wèn)題描述

假設(shè)2.1包含褒(或貶)義詞較多的文檔表現(xiàn)為正(或負(fù))面語(yǔ)氣傾向;被較多正(或負(fù))面文檔包含的詞語(yǔ)表現(xiàn)為褒(或貶)義語(yǔ)義傾向。

該假設(shè)借鑒了PageRank、Hits等算法的假設(shè),利用了文檔與詞語(yǔ)之間的互相推薦。

假設(shè)2.2盡管源領(lǐng)域與目標(biāo)領(lǐng)域中情感詞的分布有所差異,但兩個(gè)領(lǐng)域之間一定存在一些共同的部分。

本節(jié)進(jìn)一步定義三種關(guān)系,用來(lái)指導(dǎo)目標(biāo)領(lǐng)域情感詞典構(gòu)建,具體如下:

(1)WDintra-Relationship:代表目標(biāo)領(lǐng)域中的情感詞W0與文檔D0之間的關(guān)系。

(2)WDintra-Relationship:代表源領(lǐng)域中的情感詞Wi和目標(biāo)領(lǐng)域情感詞W0之間的關(guān)系。

(3)WDintra-Relationship:代表源領(lǐng)域中的文檔Di與目標(biāo)領(lǐng)域情感詞W0之間的關(guān)系。

2.信息瓶頸方法

它反映了變量X(Y)包含的關(guān)于變量Y(X)的信息量。變量間互信息與熵之間的關(guān)系如圖2-2所示。圖2-2兩隨機(jī)變量間的熵、聯(lián)合熵、條件熵及互信息之間的關(guān)系

3.將領(lǐng)域知識(shí)引入信息瓶頸模型

2.1.4基于情感詞典的產(chǎn)品屬性挖掘系統(tǒng)

1.系統(tǒng)架構(gòu)

產(chǎn)品比較與挖掘系統(tǒng)的主要功能是當(dāng)用戶(hù)輸入要比較的某類(lèi)產(chǎn)品中不同的品牌或型號(hào)時(shí),系統(tǒng)可以對(duì)這些產(chǎn)品給出基于屬性的比較,從而幫助用戶(hù)合理地調(diào)整自己的購(gòu)買(mǎi)意向。

2.系統(tǒng)實(shí)現(xiàn)

分別介紹系統(tǒng)的主要模塊:候選產(chǎn)品屬性詞的抽取和規(guī)整、產(chǎn)品屬性詞類(lèi)別與評(píng)論語(yǔ)氣詞類(lèi)別構(gòu)建、產(chǎn)品屬性詞與評(píng)論語(yǔ)氣詞之間的關(guān)聯(lián)以及基于屬性的產(chǎn)品比較與推薦。

1)候選產(chǎn)品屬性詞的抽取和規(guī)整

IWP的計(jì)算公式如下:

2)產(chǎn)品屬性詞類(lèi)別與評(píng)論語(yǔ)氣詞類(lèi)別構(gòu)建

(1)問(wèn)題描述:在產(chǎn)品評(píng)論中,語(yǔ)氣詞被用來(lái)表達(dá)消費(fèi)者對(duì)于產(chǎn)品的態(tài)度和意見(jiàn),其中很大一部分的評(píng)論語(yǔ)氣詞都是針對(duì)特定的產(chǎn)品屬性的。

根據(jù)問(wèn)題需要,本節(jié)將產(chǎn)品抽象成包含一組評(píng)論屬性的集合F,而將評(píng)論語(yǔ)氣詞抽象成另一個(gè)包含情感詞的集合O。對(duì)于屬性級(jí)的意見(jiàn)挖掘任務(wù),識(shí)別這兩個(gè)集合之間的關(guān)系是一件重要的工作,其主要步驟可以概括如下:

①得到語(yǔ)氣詞集合O(包含極性信息);

②得到產(chǎn)品屬性集合F;

③識(shí)別F與O之間的關(guān)系。

(2)信息瓶頸方法:本節(jié)采用改進(jìn)的信息瓶頸算法作為迭代增強(qiáng)框架的核心,傳統(tǒng)的信息瓶頸模型在前面已進(jìn)行了介紹。

(3)將語(yǔ)義信息融入信息瓶頸方法:在傳統(tǒng)信息瓶頸方法中,通過(guò)計(jì)算兩個(gè)對(duì)象在合并前后信息量的損失來(lái)度量這兩個(gè)節(jié)點(diǎn)間的距離,這一結(jié)果是基于這兩個(gè)對(duì)象的共現(xiàn)信息得到的。這種計(jì)算方法忽略了這兩個(gè)對(duì)象之間的語(yǔ)義信息。

此外,在實(shí)際應(yīng)用中,由于語(yǔ)料規(guī)模、數(shù)據(jù)噪音等因素的存在,詞語(yǔ)間的共現(xiàn)信息是相對(duì)稀疏且多噪音的。如果考慮語(yǔ)義信息,則可以彌補(bǔ)共現(xiàn)信息稀疏且多噪音的不足。因此,本節(jié)對(duì)信息瓶頸方法中距離的度量方式作如下改進(jìn):

3)產(chǎn)品屬性詞與評(píng)論語(yǔ)氣詞之間的關(guān)聯(lián)

在獲得產(chǎn)品屬性詞集合F和評(píng)論語(yǔ)氣詞集合O之后,我們利用PMI計(jì)算產(chǎn)品屬性和評(píng)論語(yǔ)氣詞之間的關(guān)聯(lián):

4)基于屬性的產(chǎn)品比較與推薦

為了實(shí)現(xiàn)產(chǎn)品的比較和推薦,需要借助情感詞典的幫助。本節(jié)采用按照擴(kuò)展信息瓶頸方法生成的領(lǐng)域詞典,根據(jù)得到的產(chǎn)品屬性詞與評(píng)論語(yǔ)氣詞之間的關(guān)聯(lián)來(lái)完成基于屬性的產(chǎn)品比較和推薦。

基于屬性的產(chǎn)品評(píng)論可以有效地幫助潛在消費(fèi)者以及產(chǎn)品生產(chǎn)商或服務(wù)提供商:對(duì)于潛在消費(fèi)者,可以通過(guò)對(duì)各種產(chǎn)品的橫向比較,減少購(gòu)買(mǎi)的盲目性;對(duì)于產(chǎn)品生產(chǎn)商(服務(wù)提供商),可以更清楚地看到消費(fèi)者的關(guān)注熱點(diǎn)和競(jìng)爭(zhēng)者的優(yōu)勢(shì)與劣勢(shì),從而更好地改善產(chǎn)品質(zhì)量,提高市場(chǎng)競(jìng)爭(zhēng)力。

2.2網(wǎng)絡(luò)爬蟲(chóng)技術(shù)

網(wǎng)絡(luò)爬蟲(chóng)也稱(chēng)網(wǎng)絡(luò)蜘蛛或網(wǎng)絡(luò)機(jī)器人。它為搜索引擎從萬(wàn)維網(wǎng)上下載網(wǎng)頁(yè),并沿著網(wǎng)頁(yè)的相關(guān)鏈接在Web中采集資源,是一個(gè)功能很強(qiáng)的網(wǎng)頁(yè)自動(dòng)抓取程序,也是搜索引擎的重要組成部件,它的處理能力往往決定了整個(gè)搜索引擎的性能及擴(kuò)展能力等。

對(duì)比傳統(tǒng)的數(shù)據(jù)收集方法,立足于海量數(shù)據(jù)的研究有以下優(yōu)點(diǎn)。

(1)數(shù)據(jù)的真實(shí)性。

(2)樣本容量。

2.2.1網(wǎng)絡(luò)爬蟲(chóng)的分類(lèi)及工作原理

1.通用網(wǎng)絡(luò)爬蟲(chóng)

通用網(wǎng)絡(luò)爬蟲(chóng)根據(jù)預(yù)先設(shè)定的一個(gè)或若干初始種子URL,獲得初始網(wǎng)頁(yè)上的URL列表,在爬行過(guò)程中不斷從URL隊(duì)列中獲得一個(gè)URL,進(jìn)而訪(fǎng)問(wèn)并下載該頁(yè)面。頁(yè)面下載后,頁(yè)面解析器去掉頁(yè)面上的HTML標(biāo)記,得到頁(yè)面內(nèi)容,將摘要、URL等信息保存到Web數(shù)據(jù)庫(kù)中,同時(shí)抽取當(dāng)前頁(yè)面上新的URL,保存到URL隊(duì)列,直到滿(mǎn)足系統(tǒng)停止條件。其工作流程如圖2-3所示。

圖2-3通用網(wǎng)絡(luò)爬蟲(chóng)工作流程圖

通用網(wǎng)絡(luò)爬蟲(chóng)主要存在以下幾方面的局限性:

(1)由于抓取目標(biāo)是盡可能大地覆蓋網(wǎng)絡(luò),所以爬行的結(jié)果中包含大量用戶(hù)不需要的網(wǎng)頁(yè)。

(2)不能很好地搜索和獲取信息含量密集且具有一定結(jié)構(gòu)的數(shù)據(jù)。

(3)通用搜索引擎大多是基于關(guān)鍵字的檢索,對(duì)于支持語(yǔ)義信息的查詢(xún)和搜索引擎智能化的要求難以實(shí)現(xiàn)。

通用網(wǎng)絡(luò)爬蟲(chóng)想在爬行網(wǎng)頁(yè)時(shí),既保證網(wǎng)頁(yè)的質(zhì)量和數(shù)量,又保證網(wǎng)頁(yè)的時(shí)效性是很難實(shí)現(xiàn)的。

主題網(wǎng)絡(luò)爬蟲(chóng)要解決以下關(guān)鍵問(wèn)題:

(1)如何判定一個(gè)已經(jīng)抓取的網(wǎng)頁(yè)是否與主題相關(guān)。

(2)如何過(guò)濾掉海量的網(wǎng)頁(yè)中與主題不相關(guān)的或者相關(guān)度較低的網(wǎng)頁(yè)。

(3)如何有目的、有控制地抓取與特定主題相關(guān)的Web頁(yè)面信息。

(4)如何決定待訪(fǎng)問(wèn)URL的訪(fǎng)問(wèn)次序。

(5)如何提高主題爬蟲(chóng)的覆蓋度。

(6)如何協(xié)調(diào)抓取目標(biāo)的描述或定義與網(wǎng)頁(yè)分析算法及候選URL排序算法之間的關(guān)系。

(7)如何尋找和發(fā)現(xiàn)高質(zhì)量網(wǎng)頁(yè)和關(guān)鍵資源。

2)主題網(wǎng)絡(luò)爬蟲(chóng)模塊設(shè)計(jì)

主題網(wǎng)絡(luò)爬蟲(chóng)的目標(biāo)是盡可能多地發(fā)現(xiàn)和搜集與預(yù)定主題相關(guān)的網(wǎng)頁(yè),其最大特點(diǎn)在于具備分析網(wǎng)頁(yè)內(nèi)容和判別主題相關(guān)度的能力。根據(jù)主題網(wǎng)絡(luò)爬蟲(chóng)的工作原理,下面設(shè)計(jì)了一個(gè)主題網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),主要有頁(yè)面采集模塊、頁(yè)面分析模塊、頁(yè)面相關(guān)度計(jì)算模塊、頁(yè)面過(guò)濾模塊和鏈接排序模塊幾部分,其總體功能模塊結(jié)構(gòu)如圖2-4所示。

圖2-4主題網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu)圖

3)主題網(wǎng)絡(luò)爬蟲(chóng)流程設(shè)計(jì)

主題網(wǎng)絡(luò)爬蟲(chóng)需要根據(jù)一定的網(wǎng)頁(yè)分析算法,過(guò)濾掉與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它會(huì)根據(jù)一定的搜索策略從待抓取的隊(duì)列中選擇下一個(gè)要抓取的URL,并重復(fù)上述過(guò)程,直到滿(mǎn)足系統(tǒng)停止條件為止。所有被抓取網(wǎng)頁(yè)都會(huì)被系統(tǒng)存儲(chǔ),經(jīng)過(guò)一定的分析、過(guò)濾,然后建立索引,以便用戶(hù)查詢(xún)和檢索。這一過(guò)程所得到的分析結(jié)果可以對(duì)以后的抓取過(guò)程提供反饋和指導(dǎo),其工作流程如圖2-5所示。

圖-5主題網(wǎng)絡(luò)爬蟲(chóng)的工作流程

3.深度網(wǎng)絡(luò)爬蟲(chóng)

深度網(wǎng)絡(luò)爬蟲(chóng)用于搜索引擎難以發(fā)現(xiàn)的信息內(nèi)容的Web頁(yè)面。深度Web中的信息量比普通的網(wǎng)頁(yè)信息量多,而且質(zhì)量更高。但是普通的搜索引擎由于技術(shù)限制而搜集不到這些高質(zhì)量、高權(quán)威的信息。這些信息通常隱藏在深度Web頁(yè)面的大型動(dòng)態(tài)數(shù)據(jù)庫(kù)中,涉及數(shù)據(jù)集成、中文語(yǔ)義識(shí)別等諸多領(lǐng)域。如此龐大的信息資源如果沒(méi)有采用合理的、高效的方法去獲取,將是巨大的損失。因此,對(duì)于深度網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的研究具有極為重大的現(xiàn)實(shí)意義和理論價(jià)值。

常規(guī)的網(wǎng)絡(luò)爬蟲(chóng)在運(yùn)行中無(wú)法發(fā)現(xiàn)隱藏在普通網(wǎng)頁(yè)中的信息和規(guī)律,缺乏一定的主動(dòng)性和智能性。比如需要輸入用戶(hù)名和密碼的頁(yè)面,或者包含頁(yè)碼導(dǎo)航的頁(yè)面均無(wú)法爬行。針對(duì)常規(guī)網(wǎng)絡(luò)爬蟲(chóng)的這些不足,深度網(wǎng)絡(luò)爬蟲(chóng)的結(jié)構(gòu)做了改進(jìn),增加了表單分析和頁(yè)面狀態(tài)保持兩個(gè)部分,如圖2-6

所示,分析網(wǎng)頁(yè)的結(jié)構(gòu)并將其歸類(lèi)為普通網(wǎng)頁(yè)或存在更多信息的深度網(wǎng)頁(yè),針對(duì)深度網(wǎng)頁(yè)構(gòu)造合適的表單參數(shù)并提交,以得到更多的頁(yè)面。深度網(wǎng)絡(luò)爬蟲(chóng)的流程圖如圖2-6所示。

圖2-6深度網(wǎng)絡(luò)爬蟲(chóng)流程圖

深度網(wǎng)絡(luò)爬蟲(chóng)的目標(biāo)是盡可能多地訪(fǎng)問(wèn)和收集互聯(lián)網(wǎng)上的網(wǎng)頁(yè)。由于深度頁(yè)面是通過(guò)提交表單的方式來(lái)訪(fǎng)問(wèn)的,因此爬行深度頁(yè)面存在以下三個(gè)方面的困難:

(1)深度網(wǎng)絡(luò)爬蟲(chóng)需要有高效的算法去應(yīng)對(duì)數(shù)量巨大的深層頁(yè)面數(shù)據(jù);

(2)很多服務(wù)器端DeepWeb要求輸入校驗(yàn)表單,如用戶(hù)名、密碼、校驗(yàn)碼等,如果校驗(yàn)失敗,將不能爬到DeepWeb數(shù)據(jù);

(3)需要JavaScript等腳本支持客戶(hù)端DeepWeb。

2.2.2網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的體系結(jié)構(gòu)

本節(jié)采用的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的基本結(jié)構(gòu)如圖2-7所示。圖2-7網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的體系結(jié)構(gòu)

2.2.3網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)模塊

整個(gè)系統(tǒng)主要有六個(gè)模塊:爬蟲(chóng)主控模塊、網(wǎng)頁(yè)下載模塊、網(wǎng)頁(yè)解析模塊、URL調(diào)度模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)顯示模塊。這幾個(gè)模塊之間相互協(xié)作,共同完成網(wǎng)絡(luò)數(shù)據(jù)抓取的功能。

(1)爬蟲(chóng)主控模塊:主要是完成一些初始化工作,生成種子URL,并將這些URL放入待爬取的URL隊(duì)列,啟動(dòng)網(wǎng)頁(yè)下載器下載網(wǎng)頁(yè),然后解析網(wǎng)頁(yè),提取需要的數(shù)據(jù)和URL地址,進(jìn)入工作循環(huán),控制各個(gè)模塊的工作流程,協(xié)調(diào)各個(gè)模塊之間的工作。

(2)網(wǎng)頁(yè)下載模塊:主要功能就是下載網(wǎng)頁(yè)。網(wǎng)絡(luò)上數(shù)據(jù)豐富,對(duì)于不同的數(shù)據(jù),需要不同的下載方式,主要分為以下幾種情況:對(duì)于可以匿名訪(fǎng)問(wèn)的網(wǎng)頁(yè),可直接下載;對(duì)于需要身份驗(yàn)證的,就需要模擬用戶(hù)登錄后再進(jìn)行下載;對(duì)于需要數(shù)字簽名或數(shù)字證書(shū)才能訪(fǎng)問(wèn)的網(wǎng)站,就需要獲取相應(yīng)證書(shū),加載到程序中,通過(guò)驗(yàn)證之后才能下載網(wǎng)頁(yè)。數(shù)據(jù)下載完成后,將下載的網(wǎng)頁(yè)數(shù)據(jù)傳遞給網(wǎng)頁(yè)解析模塊,將URL地址放入已爬取的URL隊(duì)列中。

(3)網(wǎng)頁(yè)解析模塊:主要功能是從網(wǎng)頁(yè)中提取滿(mǎn)足要求的信息傳遞給數(shù)據(jù)清洗模塊,提取URL地址傳遞給URL調(diào)度模塊。另外,網(wǎng)頁(yè)解析模塊還通過(guò)正則表達(dá)式匹配的方式或直接搜索的方式來(lái)提取滿(mǎn)足特定要求的數(shù)據(jù),將這些數(shù)據(jù)傳遞給數(shù)據(jù)清洗模塊。

(4)

URL調(diào)度模塊:接收網(wǎng)頁(yè)解析模塊傳遞來(lái)的URL地址,然后將這些URL地址和已爬取URL隊(duì)列中的URL地址進(jìn)行比較。如果URL存在于已爬取的URL隊(duì)列中,就丟棄這些URL地址;如果不存在于已爬取的URL隊(duì)列中,就按系統(tǒng)采取的網(wǎng)頁(yè)抓取策略,將URL放入待爬取URL地址相應(yīng)的位置。

(5)數(shù)據(jù)清洗模塊:接收網(wǎng)頁(yè)解析模塊傳送來(lái)的數(shù)據(jù)。網(wǎng)頁(yè)解析模塊提取的數(shù)據(jù)一般是比較雜亂或樣式不規(guī)范的數(shù)據(jù),這就需要對(duì)這些數(shù)據(jù)進(jìn)行清洗、整理,將這些數(shù)據(jù)整理為滿(mǎn)足一定格式的數(shù)據(jù),然后將這些數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。

(6)數(shù)據(jù)顯示模塊:根據(jù)用戶(hù)需求,統(tǒng)計(jì)數(shù)據(jù)庫(kù)中的數(shù)據(jù),將統(tǒng)計(jì)結(jié)果以文本或者圖文的方式顯示出來(lái),也可以將統(tǒng)計(jì)結(jié)果存入不同格式的文件中,永久保存。

2.2.4網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

1.請(qǐng)求連接模塊

1)客戶(hù)端與服務(wù)器間的會(huì)話(huà)

基于Http協(xié)議的客戶(hù)端與服務(wù)器之間的會(huì)話(huà)如圖2-8所示。

圖2-8客戶(hù)端與服務(wù)器之間的會(huì)話(huà)

(1)客戶(hù)端通過(guò)socket套接字、三次握手和服務(wù)器建立通信連接。

(2)客戶(hù)端向服務(wù)器發(fā)出了Http請(qǐng)求信息。

Http請(qǐng)求消息分為三部分:第一部分叫請(qǐng)求行,第二部分叫Http

Header,第三部分是body。求消息分為三部分:第一部分叫請(qǐng)求行,第二部分叫Http

Header和body之間有個(gè)空行,如圖2-9所示。

圖2-9

Http請(qǐng)求消息結(jié)構(gòu)圖

(3)當(dāng)對(duì)等的服務(wù)器收到一個(gè)

Http請(qǐng)求之后,會(huì)立即解釋請(qǐng)求行的請(qǐng)求方法,并返回相應(yīng)的

Http應(yīng)答消息。其消息的結(jié)構(gòu)和

Http請(qǐng)求消息的結(jié)構(gòu)基本一樣。如圖2-10所示。

圖2-10

Http

響應(yīng)消息結(jié)構(gòu)圖

(4)服務(wù)器和客戶(hù)端之間關(guān)閉連接。

如圖2-11所示,爬蟲(chóng)系統(tǒng)與對(duì)等服務(wù)器端的交互過(guò)程是:首先網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)對(duì)要進(jìn)行請(qǐng)求的URL資源進(jìn)行報(bào)文段的組裝;之后建立和對(duì)等服務(wù)器端的連接,發(fā)送Http

請(qǐng)求,當(dāng)服務(wù)器發(fā)送的Http

響應(yīng)到達(dá)時(shí),提取出網(wǎng)頁(yè)內(nèi)容,并對(duì)其進(jìn)行處理。

圖2-11爬蟲(chóng)系統(tǒng)與Http

服務(wù)器的交互序列圖

2)采用Libevent框架庫(kù)的I/O多路復(fù)用

(1)創(chuàng)建和初始化event_bast。

(2)對(duì)事件進(jìn)行操作。

在Libevent,可以實(shí)現(xiàn)其功能的函數(shù)有以下幾種:

在爬蟲(chóng)系統(tǒng)的主線(xiàn)程中定義一個(gè)Libevent實(shí)例,它監(jiān)聽(tīng)所有網(wǎng)絡(luò)I/O事件,在本程序中,主要用來(lái)監(jiān)聽(tīng)連接套接字可讀事件。如果有未被抓取的URL,則建立該網(wǎng)站與其站點(diǎn)的連接,把該連接套接字的可讀事件加入主線(xiàn)程的Libevent實(shí)例中,發(fā)起Http請(qǐng)求。若可讀事件就緒時(shí),Libevent監(jiān)聽(tīng)到此狀態(tài)的變化,則及時(shí)調(diào)用綁定在該事件的回調(diào)函數(shù)來(lái)進(jìn)行處理。圖2-12所示為使用Libevent監(jiān)聽(tīng)連接套接字的流程圖。

當(dāng)

Libevent監(jiān)聽(tīng)的某個(gè)socketfd的寫(xiě)事件就緒時(shí),需要調(diào)用其之前設(shè)置好的回調(diào)函數(shù),處理其中的邏輯工作。圖2-13所示為處理就緒套接字流程。

圖2-12

Libevent監(jiān)聽(tīng)連接套接字流程圖

在回調(diào)函數(shù)中主要完成以下工作:

(1)主線(xiàn)程接收Http響應(yīng),從中提取出網(wǎng)頁(yè)內(nèi)容;

(2)依據(jù)roundrobin算法輪詢(xún)到一個(gè)工作線(xiàn)程;

(3)將提取到的網(wǎng)頁(yè)內(nèi)容放入主線(xiàn)程與工作線(xiàn)程之間的隊(duì)列中;

(4)利用主線(xiàn)程與工作線(xiàn)程之間的管道,通知工作線(xiàn)程有任務(wù)到來(lái)。

圖2-13處理就緒套接字流程圖

2.數(shù)據(jù)分析模塊

1)robots.txt文件的分析

在搜索引擎中,要獲取互聯(lián)網(wǎng)上海量的網(wǎng)頁(yè)數(shù)據(jù),需要先使用爬蟲(chóng)系統(tǒng)抓取到本地磁盤(pán)。如果某一個(gè)站點(diǎn)不希望搜索引擎收錄它所包含的全部或者部分內(nèi)容,可以在網(wǎng)站的根目錄下創(chuàng)建一個(gè)純文本文件robots.txt,在該文件中對(duì)該網(wǎng)站不愿被爬蟲(chóng)程序訪(fǎng)問(wèn)的部分進(jìn)行聲明。舉例來(lái)說(shuō),當(dāng)訪(fǎng)問(wèn)一個(gè)網(wǎng)站時(shí),爬蟲(chóng)程序會(huì)首先檢查該網(wǎng)站是否存在robots.txt文件。如果存在,它將按照其內(nèi)容決定訪(fǎng)問(wèn)權(quán)限的范圍;若不存在,則對(duì)該爬蟲(chóng)沒(méi)有限制作用,爬蟲(chóng)可以抓取站點(diǎn)的全部?jī)?nèi)容作為搜索引擎的數(shù)據(jù)。

圖2-14是對(duì)一個(gè)站點(diǎn)robots.txt文件進(jìn)行解析的過(guò)程。圖2-14

robots.txt解析流程圖

2)HTML頁(yè)面的分析

在對(duì)一個(gè)站點(diǎn)下的robots.txt文件請(qǐng)求分析后,就可以對(duì)該站點(diǎn)下的URL進(jìn)行調(diào)度,發(fā)送HTML頁(yè)面的請(qǐng)求。發(fā)送請(qǐng)求后,等待對(duì)等服務(wù)器相應(yīng)的應(yīng)答消息。

圖2-15所示為對(duì)應(yīng)答消息的分析原理。

圖2-15對(duì)應(yīng)答消息的分析原理

在圖2-

6所示的HTML解析流程圖中,描述了對(duì)站點(diǎn)下HTML文件進(jìn)行請(qǐng)求解析的過(guò)程。當(dāng)獲得對(duì)等服務(wù)器發(fā)送的Http響應(yīng),要對(duì)其中狀態(tài)碼的開(kāi)頭字符進(jìn)行判別:

(1)若狀態(tài)碼為2XX,則表示服務(wù)器對(duì)Http請(qǐng)求進(jìn)行了正確響應(yīng),可以提取出網(wǎng)頁(yè)內(nèi)

容,對(duì)網(wǎng)頁(yè)進(jìn)行邏輯處理,如網(wǎng)頁(yè)去重,提取網(wǎng)頁(yè)中的URL,保存網(wǎng)頁(yè)頁(yè)面等。

(2)若狀態(tài)碼為3XX,則表示需要檢查并請(qǐng)求重定向后的URL。

(3)若為其他狀態(tài)碼,則表示出錯(cuò),需進(jìn)行出錯(cuò)處理。

3.URL管理模塊

1)

URL的多級(jí)隊(duì)列管理

當(dāng)爬蟲(chóng)系統(tǒng)開(kāi)始運(yùn)行后,可以從抓取到的頁(yè)面中提取到大量的URL。

爬蟲(chóng)系統(tǒng)中,對(duì)URL進(jìn)行多級(jí)管理,采用4個(gè)級(jí)別的URL爬行隊(duì)列,在主循環(huán)每一遍查詢(xún)中進(jìn)行判斷選擇。URL的多級(jí)管理的具體實(shí)現(xiàn)如圖2-17所示。

圖2-17

URL多級(jí)管理

由于內(nèi)存中的空間是有限的,但內(nèi)存的存取速度非常快,因此在內(nèi)存空間中一定要設(shè)置大小合適的隊(duì)列。為了快速高效地爬行,爬蟲(chóng)系統(tǒng)依據(jù)運(yùn)行時(shí)的具體環(huán)境動(dòng)態(tài)擴(kuò)大隊(duì)列。內(nèi)存隊(duì)列和內(nèi)存的等待隊(duì)列結(jié)構(gòu)一致,如圖2-18所示。

圖2-18

磁盤(pán)隊(duì)列的結(jié)構(gòu)如圖2-19所示。圖2-19磁盤(pán)隊(duì)列

在內(nèi)存中,讀寫(xiě)線(xiàn)程之間的交互過(guò)程如圖2-20所示。圖2-20

2)URL的去重

當(dāng)從一個(gè)頁(yè)面中提取到一條URL后,必須檢測(cè)該URL是否已經(jīng)被操作處理過(guò),應(yīng)把已經(jīng)處理的URL(即重復(fù)的URL)丟棄掉。如果在數(shù)據(jù)庫(kù)上實(shí)現(xiàn)URL去重,則空間消耗太大,代價(jià)較高,進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)時(shí)會(huì)在很大程度上降低爬蟲(chóng)系統(tǒng)的效率。因?yàn)榕老x(chóng)面對(duì)海量的URL進(jìn)行爬行,所以對(duì)URL的檢測(cè)效率和速度要求非常高。目前,實(shí)現(xiàn)URL去重比較常用的是哈希算法。

3)URL的DNS請(qǐng)求與管理

DNS的請(qǐng)求使用Linux系統(tǒng)的gethostbyname函數(shù)來(lái)實(shí)現(xiàn)。此方法的優(yōu)點(diǎn)是簡(jiǎn)單、易用。在內(nèi)存中建立一個(gè)哈希表用于標(biāo)識(shí)已經(jīng)進(jìn)行過(guò)DNS請(qǐng)求的URL,這樣可以避免多次對(duì)同一個(gè)站點(diǎn)進(jìn)行DNS請(qǐng)求,從而在很大程度上提高了效率。

爬蟲(chóng)系統(tǒng)中DNS的解析過(guò)程如圖2-21所示。

圖2-21爬蟲(chóng)系統(tǒng)中DNS的解析過(guò)程

4.URL調(diào)度模塊

爬蟲(chóng)系統(tǒng)對(duì)URL調(diào)度部分的管理包括URL的添加、解析,讀取磁盤(pán)中的URL,把URL寫(xiě)入磁盤(pán)等。內(nèi)存容量相對(duì)于磁盤(pán)很小,當(dāng)內(nèi)存中的URL數(shù)量達(dá)到一定量時(shí),需要將URL內(nèi)存隊(duì)列寫(xiě)入磁盤(pán)中,采用的是內(nèi)存隊(duì)列、磁盤(pán)隊(duì)列的多級(jí)隊(duì)列方式。當(dāng)需要解析URL時(shí),再?gòu)拇疟P(pán)中讀取回來(lái),這樣既可保證內(nèi)存開(kāi)銷(xiāo),又快速有效。另外,還初始化了nameSiteList數(shù)組,用來(lái)存放解析的DNS。在爬蟲(chóng)系統(tǒng)的DNS模塊中,理論上只要對(duì)一個(gè)站點(diǎn)進(jìn)行一次DNS解析之后就不需要再進(jìn)行解析,充分減少了解析次數(shù),大大提高了效率。

如圖2-22所示圖2-22

URL隊(duì)列的管理

2.3文本挖掘技術(shù)

2.3.1文本挖掘概念

文本挖掘是一個(gè)從非結(jié)構(gòu)化文本數(shù)據(jù)中獲取用戶(hù)感興趣或者有價(jià)值的信息的過(guò)程。被普遍認(rèn)可的文本挖掘定義如下:文本挖掘是指從大量文本數(shù)據(jù)中抽取事先未知的、可理解的、最終可用的知識(shí)的過(guò)程,同時(shí)運(yùn)用這些知識(shí)更好地組織信息以便將來(lái)參考。

2.3.2中文文本挖掘流程

中文文本與西方語(yǔ)言文本有很大的不同,所以其挖掘步驟也有很大差異。中文文本挖掘主要由以下步驟組成:

(1)數(shù)據(jù)源:這是文本挖掘的起始點(diǎn),文本的數(shù)據(jù)源有網(wǎng)頁(yè)、郵件、圖書(shū)、文章、日志等,這些都蘊(yùn)含著豐富的價(jià)值。

(2)文本的預(yù)處理:整理需要挖掘的文本,包括文本解析。

(3)文本挖掘:在完成文本預(yù)處理后,可以利用數(shù)據(jù)挖掘、數(shù)據(jù)分析以及機(jī)器學(xué)習(xí)等方法提取面向特定應(yīng)用目標(biāo)的信息或模式。

(4)

模式評(píng)估與展現(xiàn):這是文本挖掘的最后一個(gè)環(huán)節(jié),是指利用已經(jīng)定義好的評(píng)估指標(biāo)對(duì)獲取的信息或模式進(jìn)行評(píng)價(jià)。

文本挖掘作為自然語(yǔ)言處理的研究領(lǐng)域之一,是對(duì)半結(jié)構(gòu)化或者非結(jié)構(gòu)化的自然語(yǔ)言文本進(jìn)行處理,并采用一定的技術(shù)從中發(fā)現(xiàn)和提取特定信息的過(guò)程。網(wǎng)絡(luò)文本挖掘是首先通過(guò)收集網(wǎng)絡(luò)文本資源,建立目標(biāo)文本集合,然后通過(guò)采用文本預(yù)處理、特征選擇、特征表示和數(shù)據(jù)挖掘等技術(shù)對(duì)文本集合進(jìn)行處理,并得到用戶(hù)所需要的特定信息的過(guò)程。文本挖掘的基本處理過(guò)程如圖2-23所示。

圖2-23文本挖掘的基本處理過(guò)程

2.3.3中文文本挖掘工具

1.R文本挖掘應(yīng)用

R文本中的幾個(gè)中文分詞軟件包有:復(fù)旦大學(xué)黃榮貴寫(xiě)的rsmartcn包、rmmseg4j包及李艦編寫(xiě)的Rordseg包。

1)rsmaetcn包

rsmaetcn包的作者是復(fù)旦大學(xué)的黃榮貴,這是一個(gè)做中文分詞的R軟件包,只能應(yīng)用于簡(jiǎn)體中文。

此包把簡(jiǎn)體中文分詞軟件lucene-smartcn-3.4.0jar包裝成R的函數(shù)。smartcn的使用算法分為三步:

(1)進(jìn)行原子切分,目的是完成單個(gè)漢字的切分;

(2)根據(jù)“詞庫(kù)字典coredict”找出所有原子之間所有可能的組詞方案;

(3)中文分詞有N最短路徑方法,smartcn用的是1最短路徑方法。

2)rmmseg4j包

rmmseg4j包的作者也是黃榮貴,使用的是Chin-HaoTsai的MMSeg算法。

采用MMSeg算法分詞比較容易理解,主要是chunk和四個(gè)規(guī)則。

一個(gè)chunk就是一句話(huà)的一種分詞方式,包括一個(gè)詞條數(shù)組和四個(gè)屬性。

一個(gè)chunk具有以下四個(gè)重要屬性:

(1)長(zhǎng)度:chunk中各個(gè)詞的長(zhǎng)度之和。這里兩個(gè)chunk的長(zhǎng)度都是4。

(2)平均長(zhǎng)度:長(zhǎng)度/詞數(shù)。

(3)標(biāo)準(zhǔn)差平方:chunk中各個(gè)詞條的長(zhǎng)度減去平均長(zhǎng)度的差的平方和,再除以詞條

數(shù)目。

(4)自由語(yǔ)素度:各單詞條詞頻的對(duì)數(shù)之和。

四個(gè)規(guī)則如下:

規(guī)則1:取最大匹配的

chunk,也就是取

chunk長(zhǎng)度最長(zhǎng)的幾個(gè)。

規(guī)則2:取平均詞長(zhǎng)最大的

chunk,也就是取

chunk平均長(zhǎng)度最大的幾個(gè)。

規(guī)則3:取詞長(zhǎng)標(biāo)準(zhǔn)差最小的

chunk。

規(guī)則4:取單字詞自由語(yǔ)素度之和最大的

chunk。

這里要利用一個(gè)單字的詞頻詞典,比如說(shuō)“的”字的

3)Rwordseg包

Rwordseg是R中的中文分詞工具,它通過(guò)rJave來(lái)調(diào)用Jave分詞工具Ansj。Ansj是一個(gè)開(kāi)源的Jave中文分詞工具,基于中科院的ICTCLAS分詞算法,采用隱馬爾科夫模型,其作者重寫(xiě)了Jave版本,并使得Ansi可用于人名、地名、組織機(jī)構(gòu)名的識(shí)別,多級(jí)詞性標(biāo)注,關(guān)鍵詞提取,指紋提取等領(lǐng)域,支持行業(yè)詞典、自定義詞典的擴(kuò)展。

(4)Rwordseg包功能很強(qiáng),可以安裝新的詞典,一次安裝后,每次啟動(dòng)此包時(shí)就會(huì)自動(dòng)加載。而且支持每行一詞的文本詞典和Sogou的Secl格式細(xì)胞詞典,這樣便于我們自己編輯詞典,也可以從Sogou細(xì)胞詞庫(kù)搜索下載專(zhuān)業(yè)詞匯并加到字典中,從而使我們的分詞更加準(zhǔn)確。

(5)Rwordseg不只能對(duì)字符串進(jìn)行分詞,對(duì)文本文件可以直接分詞,而且效率也非常高。我們可以用它作分詞,但是作為一個(gè)集成的系統(tǒng),需要使用rJave調(diào)用R命令,因此最好用其底層的Ansj這個(gè)開(kāi)源的Jave包。

2.CHQ′S文本多分類(lèi)系統(tǒng)

CHQ′S文本多分類(lèi)系統(tǒng)可以進(jìn)行中文文本多分類(lèi),包括中文廣告分類(lèi)、中文垃圾郵件分類(lèi)、文本分類(lèi)等。一旦訓(xùn)練出模型,分類(lèi)的速度會(huì)非常快。

該系統(tǒng)基于以下的算法開(kāi)發(fā):

(1)使用中科院的ICTCLAS進(jìn)行分詞,用自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)。

(2)基于文檔頻率、TF-LDF、IG的特征選擇降維方法對(duì)文本進(jìn)行特征提取和降維。

(3)基于SVM的分類(lèi)算法,采用林智仁的LibSVM。

2.3.4中文文本挖掘方法

1.分類(lèi)模型

分類(lèi)是指找出數(shù)據(jù)庫(kù)中一組數(shù)據(jù)對(duì)象的共同特點(diǎn),并按照分類(lèi)模式將其劃分為不同的類(lèi),其目的是通過(guò)分類(lèi)模型,將數(shù)據(jù)中的數(shù)據(jù)項(xiàng)映射到某個(gè)給定的類(lèi)別。分類(lèi)不同于常見(jiàn)的回歸分析和聚類(lèi)?;貧w分析是產(chǎn)生一個(gè)將數(shù)據(jù)項(xiàng)映射到一個(gè)實(shí)值預(yù)測(cè)變量的函數(shù),聚類(lèi)是把一組數(shù)據(jù)按照相似度和差異性分成,按照同一類(lèi)別的數(shù)據(jù)間差異盡可能小而不同類(lèi)別的數(shù)據(jù)間差異盡可能大的規(guī)則將數(shù)據(jù)分為幾個(gè)類(lèi)別。

常用的分類(lèi)模型有基于統(tǒng)計(jì)的模型(如廣義線(xiàn)性模型)、基于樹(shù)的模型(如分類(lèi)樹(shù))、基于規(guī)則的模型(如神經(jīng)網(wǎng)絡(luò)模型、支持向量機(jī)模型)、基于概率論與圖論的概率圖模型(如樸素貝葉斯分類(lèi)模型)、基于模型組合的集成模型(如隨機(jī)森林模型)等。

1)分類(lèi)樹(shù)模型

分類(lèi)樹(shù)是基于決策樹(shù)算法構(gòu)建的模型,而決策樹(shù)是一種知識(shí)表示形式,是對(duì)所有樣本數(shù)據(jù)的高度概括。決策樹(shù)能夠準(zhǔn)確地識(shí)別所有樣本的類(lèi)別與取值,并有效地識(shí)別新樣本的類(lèi)別與取值。不同于決策樹(shù)算法中的回歸樹(shù),分類(lèi)樹(shù)解決的是因變量為離散型數(shù)據(jù)形式,本質(zhì)上是根據(jù)數(shù)據(jù)集自變量的取值將其映射為某一類(lèi)因變量的過(guò)程。

測(cè)度信息量的方法有很多。例如,可以用熵測(cè)度一個(gè)樣本中的信息量,其定義如下:

2)隨機(jī)森林模型

隨機(jī)森林是一種集成模型,使用一般的分類(lèi)樹(shù)(決策樹(shù))作為基分類(lèi)器,通過(guò)自助法,多次隨機(jī)地有放回抽取樣本數(shù)據(jù),并在抽取的樣本數(shù)據(jù)上隨機(jī)選取少數(shù)變量作為每一個(gè)分類(lèi)樹(shù)的節(jié)點(diǎn),建立分類(lèi)樹(shù),使得樣本隨機(jī)產(chǎn)生,節(jié)點(diǎn)變量也隨機(jī)產(chǎn)生,讓每個(gè)分類(lèi)樹(shù)盡可能地生長(zhǎng),不進(jìn)行剪枝,最后通過(guò)這些分類(lèi)樹(shù)以投票的方式對(duì)每個(gè)數(shù)據(jù)點(diǎn)進(jìn)行分類(lèi)。隨機(jī)森林模型是基于分類(lèi)數(shù)據(jù)的集成模型,而集成模型的好處是可以有效地解決不平衡數(shù)據(jù)的分類(lèi)問(wèn)題。

2.不平衡數(shù)據(jù)

對(duì)于因變量為離散型無(wú)序變量的數(shù)據(jù)集,不平衡數(shù)據(jù)是指因變量中有些類(lèi)型的數(shù)量遠(yuǎn)遠(yuǎn)大于其他類(lèi)型的數(shù)量。如果數(shù)據(jù)不平衡,則預(yù)測(cè)結(jié)果為比例更大的類(lèi)別將具有一個(gè)較高的預(yù)測(cè)精度。

對(duì)于不平衡數(shù)據(jù),有兩種常見(jiàn)的解決方法。

(1)從數(shù)據(jù)集入手,人為地把數(shù)據(jù)集平衡一下。

(2)從分類(lèi)模型入手,對(duì)一些分類(lèi)模型進(jìn)行組合后,再

進(jìn)行分類(lèi)。這樣可以有效地處理不平衡數(shù)據(jù)的分類(lèi)。

結(jié)合使用兩種方法,選取隨機(jī)森林模型這種組合模型來(lái)處理不平衡問(wèn)題。在隨機(jī)森林模型建模時(shí),對(duì)三種不同類(lèi)型的數(shù)據(jù)選取相同的樣本點(diǎn)數(shù)量,也就是在生成分類(lèi)樹(shù)時(shí)使用欠抽樣的方法,使得每次生成分類(lèi)樹(shù)時(shí)不再?gòu)乃袠颖局须S機(jī)選取樣本,而是在多數(shù)樣本與少數(shù)樣本中隨機(jī)選取相同數(shù)量的樣本點(diǎn)生成分類(lèi)樹(shù),使得訓(xùn)練每棵分類(lèi)樹(shù)時(shí)大類(lèi)樣本個(gè)數(shù)與小類(lèi)樣本個(gè)數(shù)相同,從而避免了不平衡問(wèn)題的發(fā)生。

3.交叉驗(yàn)證

交叉驗(yàn)證是一種判斷模型好壞的重要方法,其一般過(guò)程為:首先將原數(shù)據(jù)集中的一部分?jǐn)?shù)據(jù)作為訓(xùn)練集進(jìn)行建模,然后將在訓(xùn)練模型時(shí)沒(méi)有用到的數(shù)據(jù)集作為測(cè)試集,得到模型的泛化誤差,進(jìn)而對(duì)模型進(jìn)行比較。K折交叉驗(yàn)證是把原數(shù)據(jù)集分為K份,每一次建模使用數(shù)據(jù)集的K-1份數(shù)據(jù),用剩下的1份數(shù)據(jù)作為測(cè)試集,得到每次建模的泛化誤差。N重K折交叉驗(yàn)證是將隨機(jī)把數(shù)據(jù)分成K份的過(guò)程重復(fù)N次,得到多個(gè)不同的K折交叉驗(yàn)證測(cè)試集的泛化誤差,即將K折交叉驗(yàn)證重復(fù)N次。

對(duì)于分類(lèi)模型而言,模型對(duì)應(yīng)的真實(shí)泛化誤差表現(xiàn)為模型的真實(shí)誤判率,使用交叉驗(yàn)證的方法,所得到的測(cè)試集的誤判率就是真實(shí)誤判率的一個(gè)良好估計(jì)。一個(gè)分類(lèi)模型對(duì)應(yīng)的測(cè)試集誤判率本身是一個(gè)隨機(jī)變量,與折數(shù)、測(cè)試集的選取有關(guān)。對(duì)于模型Mi,定義測(cè)試集誤判率如下:

4.非參數(shù)假設(shè)檢驗(yàn)

對(duì)于非參數(shù)假設(shè)檢驗(yàn),百度百科給出的定義是:非參數(shù)假設(shè)檢驗(yàn)是在總體方差未知或知道甚少的情況下,利用樣本數(shù)據(jù)對(duì)總體分布形態(tài)等進(jìn)行推斷的方法。非參數(shù)假設(shè)檢驗(yàn)不涉及或很少涉及對(duì)數(shù)據(jù)分布等的假定。在數(shù)據(jù)集滿(mǎn)足一定分布假定的條件下,非參數(shù)檢驗(yàn)方法沒(méi)有參數(shù)方法高效,而對(duì)于一些復(fù)雜的數(shù)據(jù)集,前者相較于后者而言有較高的普適性,可用于分析這些較為復(fù)雜的數(shù)據(jù)類(lèi)型。同時(shí),非參數(shù)假設(shè)檢驗(yàn)一般對(duì)中位數(shù)進(jìn)行檢驗(yàn),這就使得非參數(shù)假設(shè)檢驗(yàn)的檢驗(yàn)結(jié)果較使用均值得到的檢驗(yàn)結(jié)果更為穩(wěn)健。

符號(hào)檢驗(yàn)是一種經(jīng)典的非參數(shù)檢驗(yàn)方法,適用于檢驗(yàn)一組數(shù)據(jù)的中位數(shù)是否為0,該法利用觀測(cè)值數(shù)據(jù)與原假設(shè)的中位數(shù)數(shù)據(jù)的差的符號(hào)來(lái)構(gòu)造假設(shè)檢驗(yàn)。它對(duì)觀測(cè)數(shù)據(jù)的分布沒(méi)有任何假定。對(duì)一個(gè)數(shù)據(jù)集建立分類(lèi)模型,因?yàn)殚_(kāi)始不知道此模型的真實(shí)泛化誤差的分布,通過(guò)這個(gè)分類(lèi)模型建立模型后,其交叉驗(yàn)證結(jié)果(即誤判率的分布形式)是未知的,所以,兩個(gè)分類(lèi)模型建模后,兩組交叉驗(yàn)證結(jié)果的差的分布也未知。若將交叉驗(yàn)證結(jié)果視為表示兩模型泛化能力差異的觀測(cè)值,用以比較兩模型,較為穩(wěn)健的做法是使用符號(hào)檢驗(yàn)的方法檢驗(yàn)這組觀測(cè)值的中位數(shù)是否為0。

2.4傾向性分析技術(shù)

機(jī)器學(xué)習(xí)的基本流程如圖2-24所示,首先從外部環(huán)境中得到刺激,然后使用特定的方法來(lái)對(duì)這些外部刺激進(jìn)行學(xué)習(xí),之后將學(xué)習(xí)結(jié)果存入知識(shí)庫(kù),最后利用知識(shí)庫(kù)中的知識(shí)去執(zhí)行某些功能,在執(zhí)行中會(huì)產(chǎn)生新的刺激,又可以將新的刺激返回給學(xué)習(xí)階段,利用這種方法不斷地學(xué)習(xí),從而增強(qiáng)處理能力。

圖2-24機(jī)器學(xué)習(xí)的基本流程

2.4.1樸素貝葉斯

貝葉斯分類(lèi)器諸多算法中,樸素貝葉斯分類(lèi)模型是最早被提出的。它的算法邏輯簡(jiǎn)單,運(yùn)算速度比同類(lèi)算法快很多,分類(lèi)所需的時(shí)間也比較短,并且大多數(shù)情況下分類(lèi)精度也比較高,因而在實(shí)際中得到了廣泛的應(yīng)用。樸素貝葉斯分類(lèi)器有一個(gè)樸素的假定:將屬性的類(lèi)條件獨(dú)立性假設(shè)作為前提,即在給定類(lèi)別狀態(tài)的條件下,屬性之間是相互獨(dú)立的。樸素貝葉斯分類(lèi)器的結(jié)構(gòu)示意圖如圖2-25所示。

圖2-25樸素貝葉斯分類(lèi)器的結(jié)構(gòu)示意圖

樸素貝葉斯分類(lèi)模型的算法描述如下:

(1)對(duì)訓(xùn)練樣本數(shù)據(jù)集和測(cè)試樣本數(shù)據(jù)集進(jìn)行離散化處理和缺失值處理;

(2)掃描訓(xùn)練樣本數(shù)據(jù)集,分別統(tǒng)計(jì)訓(xùn)練集中類(lèi)別Ci的個(gè)數(shù)

di和屬于類(lèi)別Ci的樣本中屬性Ak

取值為xk的實(shí)例樣本個(gè)數(shù)

dik,構(gòu)成統(tǒng)計(jì)表;

(3)計(jì)算先驗(yàn)概率P

(Ci)=

di/d和條件概率P

(

Ak=

xk|Ci)=

dik/

di,構(gòu)成概率表;

(4)構(gòu)建分類(lèi)模型V(X)=argmaxP

(Ci)

P(X|Ci);

(5)掃描待分類(lèi)的樣本數(shù)據(jù)集,調(diào)用已得到的統(tǒng)計(jì)表、概率表以及構(gòu)建好的分類(lèi)準(zhǔn)則得出分類(lèi)結(jié)果。

樸素貝葉斯分類(lèi)模型有諸多優(yōu)點(diǎn):邏輯簡(jiǎn)單,易于實(shí)現(xiàn),分類(lèi)過(guò)程中算法的時(shí)間和空間開(kāi)銷(xiāo)比較??;算法比較穩(wěn)定,分類(lèi)性能對(duì)于具有不同數(shù)據(jù)特點(diǎn)的數(shù)據(jù)集合其差別不大,即具有比較好的健壯性。

樸素貝葉斯分類(lèi)器的缺點(diǎn)是:在很多實(shí)際問(wèn)題中,屬性的類(lèi)條件獨(dú)立性假設(shè)并不成立,如果在屬性間存在相關(guān)性的實(shí)際問(wèn)題中忽視這一點(diǎn)將會(huì)導(dǎo)致分類(lèi)效果下降。

樸素貝葉斯分類(lèi)模型雖然在某些不滿(mǎn)足獨(dú)立性假設(shè)的情況下分類(lèi)效果仍比較好,但是大量研究表明,可以通過(guò)各種改進(jìn)方法來(lái)提高樸素貝葉斯分類(lèi)器的性能。樸素貝葉斯分類(lèi)器的改進(jìn)方法主要有兩類(lèi):

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論