張玉霞 陳浩然
[摘要]重點對Web使用挖掘中模式挖掘前進行的工作多且事務(wù)識別不夠準確,提出新的解決方法,主動數(shù)據(jù)收集技術(shù),然后從網(wǎng)絡(luò)廣告的邏輯結(jié)構(gòu)、模式挖掘所需的數(shù)據(jù)結(jié)構(gòu)、重點算法和軟件架構(gòu)等方面研究主動數(shù)據(jù)收集技術(shù)。結(jié)果表明主動數(shù)據(jù)收集技術(shù),為Web使用挖掘提供比服務(wù)器日志更全面而準確的數(shù)據(jù)。
[關(guān)鍵詞]數(shù)據(jù)挖掘使用挖掘Web挖掘網(wǎng)絡(luò)廣告數(shù)據(jù)收集
中田分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0210065-02
一、網(wǎng)絡(luò)廣告和Web挖掘
廣告對于企業(yè)的生存和發(fā)展有著重要的作用和影響,而相對傳統(tǒng)廣告而言,網(wǎng)絡(luò)廣告又有其獨特優(yōu)勢。在[1]中,提到廣告的作用有:情報性功能、娛樂性功能、提醒性及說服性功能、協(xié)助促銷的功能、增加價值的功能。企業(yè)利用廣告促使消費者認識公司的名稱、品牌,在存在多種產(chǎn)品競爭時,廣告可以創(chuàng)造消費者對品牌的心理差異,起到促銷,增加利潤的作用,它是現(xiàn)代企業(yè)促銷的重要方法之一[2]。
數(shù)據(jù)挖掘是從數(shù)據(jù)庫、數(shù)據(jù)倉庫或其他信息庫中的大量數(shù)據(jù)中挖掘有趣知識的過程[3]。
Web使用挖掘[4],它通過挖掘Web日志記錄來發(fā)現(xiàn)用戶訪問Web頁面的模式,通過分析和探究Web日志記錄中的規(guī)律,可以識別電子商務(wù)的潛在客戶,增強對最終用戶的因特網(wǎng)信息服務(wù)的質(zhì)量和交付,并改進Web服務(wù)器系統(tǒng)的性能和結(jié)構(gòu)。
二、問題的提出
下面我們將對當前的Web數(shù)據(jù)挖掘作分析,然后分析其中的問題,最后提出解決方法及其優(yōu)點。
(一)目前Web使用挖掘的狀況
目前幾乎所有的Web使用挖掘,都是從服務(wù)器端的日志記錄和用戶的個人信息中自動發(fā)現(xiàn)隱藏在數(shù)據(jù)中的模式信息,了解系統(tǒng)的訪問模式以及用戶的行為模式,從而做出預(yù)測性分析。
在[5]中建立的Web使用挖掘的框架模型如下圖2-1:
根據(jù)[6],模式挖掘之前工作繁多。首先,數(shù)據(jù)清洗(data cleaning)解決“臟數(shù)據(jù)(dirty data)”問題,消解數(shù)據(jù)中的不一致性,并將多個數(shù)據(jù)源中的數(shù)據(jù)統(tǒng)一成一個數(shù)據(jù)存儲。然后,事務(wù)識別中,用戶Session的識別問題是一個難點。如多個用戶訪問同一頁面,在Proxy服務(wù)器日志中可能只列出一次;同時Internet服務(wù)提供商如采用動態(tài)分配IP將使得用戶識別變得困難。最后,還要將數(shù)據(jù)集成到數(shù)據(jù)庫中。
(二)解決方法的提出及其優(yōu)點
我們將上述基于日志的Web挖掘中的數(shù)據(jù)收集方法稱為被動數(shù)據(jù)收集。從2.1節(jié)的分析中不難看出為了得到模式挖掘的輸入數(shù)據(jù),經(jīng)過了很多的步驟,而且更重要的是結(jié)果有些并不一定準確。
現(xiàn)在我們提出主動的數(shù)據(jù)收集方法,也就是通過JsP頁面中的JavaBean調(diào)用用于數(shù)據(jù)收集的java包中的類,并傳入Web服務(wù)器已經(jīng)構(gòu)造好的Request和Response對象,然后將用戶Session信息保存到數(shù)據(jù)庫,并在瀏覽器端添加用戶信息的Cookie。
這樣做的優(yōu)點有:
1.不用進行數(shù)據(jù)清洗。最后保存到數(shù)據(jù)庫中的信息,不會包括對一些非主頁面請求的信息,如,不會包括對圖片的請求;因為不存在多個數(shù)據(jù)源,所以也不存在數(shù)據(jù)的不一致性。
2.不用進行費時而且不準確的事務(wù)識別。因為Web服務(wù)器將為我們做這些工作,而且是在用戶訪問時做,它所識別的Session幾乎是完全正確。
3.不用進行數(shù)據(jù)集成。因為用戶瀏覽完頁面之后,數(shù)據(jù)就已經(jīng)持久化到數(shù)據(jù)庫中了。
4.可以識別多個Session來自同一臺主機。因為我們放置了Cookie在瀏覽器端。
5.留有和主商務(wù)邏輯的接口。也就是可以將事務(wù)識別的Session和主商務(wù)邏輯中的客戶聯(lián)系起來,即使用戶在不同的機器登陸。
6.一個瀏覽器端有多個客戶登陸,也可進行一定的Session和客戶之間的對應(yīng)。
三、主動數(shù)據(jù)收集的研究
我們現(xiàn)在的工作是:從分析網(wǎng)絡(luò)廣告的邏輯結(jié)構(gòu)出發(fā),確定進行模式挖掘輸入數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),然后確定獲取這些數(shù)據(jù)的算法,最后編寫類庫,以便使用JavaBean獲取數(shù)據(jù),并保存到數(shù)據(jù)庫中。
(一)廣告的邏輯結(jié)構(gòu)
廣告的邏輯結(jié)構(gòu)可以用圖3-1進行簡單的示意。單個頁面的內(nèi)容由多個服務(wù)器提供,同一頁面上的多個廣告可來自不同的服務(wù)器。內(nèi)容服務(wù)器由廣告商提供的;廣告服務(wù)器由廣告經(jīng)紀人或者廣告客戶提供,服務(wù)器可根據(jù)Session記錄的用戶信息制訂個性化的頁面。
廣告商有三種選擇為廣告預(yù)留頁面空間。1.常規(guī)HTML幀;2.使用新的內(nèi)嵌幀;3.使用單獨的窗口。
(二)數(shù)據(jù)結(jié)構(gòu)
通過分析[6],模式挖掘的輸入數(shù)據(jù)的一般格式為:訪問者的IP、端口號、時間、請求的URL。
但這些是通過服務(wù)器日志獲取輸入數(shù)據(jù)的,現(xiàn)在需使用JavaBean來獲得數(shù)據(jù)。我們設(shè)計了數(shù)據(jù)結(jié)構(gòu)并建立了基于SQL Server 2000的數(shù)據(jù)庫物理模型,如圖3-2:
下面對數(shù)據(jù)庫物理模型做一下說明:首先,用戶的每一次請求動作(page_action)包括一個請求頁(page),以及可能有的廣告空間提供頁(ad_provider_page);其次,用戶的一次會話(session_action)包含一個或多個用戶的頁面請求(page_action);然后,一個客戶端主機(host_action)會有一次或多次會話(session_action);最后,為了能和商務(wù)邏輯結(jié)合,我們預(yù)留了客戶(customer),客戶(customer)可以在多臺主機(host_action)上建立會話(session_action)。
(三)主要算法
為得到上述數(shù)據(jù)結(jié)構(gòu)對應(yīng)的數(shù)據(jù),最難的就是如何把客戶端主機(host action)和會話(session_action)關(guān)聯(lián)起來,及如何把客戶(customer)和會話(session_action)關(guān)聯(lián)起來。下面分析主要算法。
1.對于客戶的每一個頁面請求,先判斷是否屬于一個新會話。對不同的情況使用對應(yīng)的算法。
2.對于當前Session已經(jīng)判定為新Session時,算法如下:
(1)創(chuàng)建新的SessionAction;
(z)判斷是否可以從Session中獲得Customer的信息,如果可以則向下執(zhí)行,否則跳到e;
(3)將此Customer對應(yīng)的Cookie保存到客戶端:
(4)將建立的SessionAction和此Customer對象關(guān)聯(lián),然后跳到0;
(5)從Cookies中獲得CustomerCookie的個數(shù);
(6)判斷CustomerCookie的個數(shù)是否為l,如果是則向下執(zhí)行,否則跳到j(luò):
(7)通過這個CustomerCookie的信息,試著從數(shù)據(jù)庫中得到Customer
對象;
(8)判斷是否成功獲得Customer對象,如果成功向下執(zhí)行,否則跳到o;
(9)將建立的SessionAction和此Customer對象關(guān)聯(lián),然后跳到0:
(10)判斷是否可從Cookie中獲得HostAction信息,如果可以則向下執(zhí)行,否則跳到1;
(11)通過這個HostAction的Cookie的信息,試著從數(shù)據(jù)庫中得到HostAction對象;
(12)如果沒有HostAction~Cookie,或者HostAction沒有建立成功,則向下執(zhí)行,否則跳到n;
(13)創(chuàng)建HostAction對象,并保存到數(shù)據(jù)庫中,將此HostAction對應(yīng)的Cookie保存到客戶端;
(14)將建立的SessionAction和此HostAction關(guān)聯(lián);
(15)保存非空對象。
3.對于當前Session已經(jīng)判定為非新Session時,算法如下:
對于這種情況,SessionAction對象在判斷是否是新用戶會話時,就應(yīng)該建立,并且在此算法開始前必須已經(jīng)建立。
(1)將PageAction~SessionAction相關(guān)聯(lián);
(2)保存PageAction:
(3)判斷Customer對象是否為空,如果是向下執(zhí)行,否則跳到o:
(4)從Session中獲得Customer的信息;
(5)判斷Customer對象是否為空,如果是向下執(zhí)行,否則跳到o;
(6)從Cookies中獲得CustomerCookie的個數(shù);
(7)判斷CustomerCookie的個數(shù)是否為1,如果是向下執(zhí)行,否則跳到k:
(8)通過這個CustomerCookie的信息,試著從數(shù)據(jù)庫中得到Customer對象;
(9)判斷是否成功獲得Customer對象,如果是向下執(zhí)行,否則跳到o;
(10)將建立的SessionAction和此Customer對象關(guān)聯(lián),然后跳到o;
(11)判斷是否有HostAction的Cookie,如果沒有則向下執(zhí)行,否則跳到o;
(12)從SessionAction中獲得HostAction;
(13)判斷HostAction是否為空,如果不為空則向下執(zhí)行,否則跳到0;
(14)將HostAction的信息保存到Cookie中;
(15)判斷Customer對象是否為空,如果不為空則向下執(zhí)行,否則跳到r;
(16)將此Customer對應(yīng)的Cookie保存到客戶端;
(17)將建立的SessionAction和此Customer對象關(guān)聯(lián);
(18)保存非空對象。
(四)建立軟件系統(tǒng)架構(gòu)
圖3-3是此軟件系統(tǒng)的架構(gòu)圖,它基于典型的軟件設(shè)計架構(gòu)——業(yè)務(wù)組件架構(gòu),有良好的擴展性和維護性。
1.表示層:為用戶提供界面,在本系統(tǒng)中就是JSP頁面。通過JavaBean來調(diào)用Log Service。
2.代理層:Log Service只是一個接口,我們用Java抽象類來寫這個接口。
3.業(yè)務(wù)邏輯層:業(yè)務(wù)邏輯層主要由三個類實現(xiàn),它們是:LogServicelmpl、DaoService和CookieService。其中LogServiceImpl將調(diào)用DaoService和CookieService。LogServiceImpl繼承了LogService,因此可通過修改LogServiceImpl來滿足需求的改變,而無需修改表示層和代理層。DaoService提供數(shù)據(jù)庫的存取接口,它將LogServiceImpl需要的數(shù)據(jù)庫的存取處理集中到一個類中。CookieService將LogServiceImpl需要的Cookies的處理集中到一個類中。
4基于資源層:也可稱為持久化層,采用了成熟的Hibernate,負責(zé)業(yè)務(wù)對象(BO)和數(shù)據(jù)庫中記錄的轉(zhuǎn)換,并提供事務(wù)支持,鏈接池機制。
四、結(jié)束語
我們已經(jīng)將對應(yīng)的軟件打包成Jar文件,程序開發(fā)者可以輕松的使用和部署它。實驗結(jié)果表明主動數(shù)據(jù)收集技術(shù),為Web使用挖掘提供了比服務(wù)器日志更全面而準確的數(shù)據(jù)。
作者簡介:
張玉霞,女,漢,河北許昌人,碩士,中山職業(yè)技術(shù)學(xué)院計算機系教師,主要研究方向:圖像處理,網(wǎng)絡(luò)信息技術(shù):陳浩然,男,漢,湖北咸寧人。碩士,中國工商銀行(廣州天河)軟件開發(fā)中心工程師,主要研究方向;網(wǎng)絡(luò)信息技術(shù)。