基於集成搜尋引擎的數據發現方法與流程
2023-06-17 03:09:26 1
本發明涉及數據檢索,特別涉及一種基於集成搜尋引擎的數據發現方法。
背景技術:
隨著web技術的不斷發展,網絡信息資源正以幾何速度的方式增長。如何從網際網路海量信息中快速檢索出與用戶相關的有用數據已成為當前急需解決的問題。搜尋引擎正是在信息檢索技術的基礎上發展起來的。搜尋引擎幫助本發明更好的表達和存儲現實世界中的本質信息,而且通過對搜尋引擎中的聯接信息進行分析,可作為一種挖掘隱藏信息的有用工具。現有搜尋引擎單純的依賴有限搜索詞去表達用戶需求,存在這表達不完整的問題。即使是同樣的搜索詞,不同的用戶所期望的結果可能也是不同的。例如微博系統,如果考慮微博以及相關交互對象的關係,它可以抽象為一個異構網絡,其中包含了微博、信息、標籤以及用戶等節點。微博和微博之間存在著關注和粉絲關係,微博和信息之間存在著發表和轉發關係,微博和標籤之間是一個包含關係,而用戶和微博之間存在著擁有關係。現有的搜索工具並未考慮上述多維對象形成的複雜環境進行數據挖掘。
技術實現要素:
為解決上述現有技術所存在的問題,本發明提出了一種基於集成搜尋引擎的數據發現方法,包括:
網絡爬蟲首先讀取程序配置文件,並預加載緩存採集時要用到的數據;事務管理器根據配置信息,初始化各個事務,並控制事務的運行;事務獲取處理任務,先進行爬取連結去重檢查,分析爬取連結的類型,對不同的採集類型執行不同的處理方式,在採集時,分析是新的採集事務還是更新任務,並在獲取到連結的網頁源碼後,對採集到的網頁源碼執行清洗、過濾,根據網頁信息相關特徵規律提取出有效信息;事務對提取出的信息進行轉換處理,進行緩存;當緩存待保存數據達到一定數量時,事務執行緩存數據入庫處理;同時事務管理器定時監控各個事務的執行狀態,對異常事務進行控制管理。
優選地,採用多層緩存結構,根據計算機的內存大小對各層緩存大小進行配置;
首先對全局爬取進行緩存;在對爬取資料庫的訪問連接過程中,採用一次性獲取批量爬取結果進行緩存;
其次採用單個事務自身的爬取緩存,每個事務各自擁有一個採集數據源緩存區域;
然後對事務在處理過程中的產生的數據進行緩存,包括在連結去重檢查時,緩存訪問過的網頁、媒體連結地址;
最後一層緩存是緩存待保存的數據,當待保存的數據達到一定數量以後,事務才對數據進行入庫保存。
優選地,在爬取之前,根據域名生成規則依次遍歷所有可能的組合域名,對組合域名進行依次檢測,識別有效域名與無效域名,建立根域名庫;然後獲取導航站點的網頁源碼,根據根域名組成規則從網頁源碼中提取根站點地址與連結文本,更新根域名庫。
優選地,對於頁面重複連結,為每個事務部署專門的去重容器,每個容器只存儲自己已經訪問過的連結地址的映射碼;去重容器只記錄自己訪問過在同一個根域名站點下的連結,對不屬於此根域名下的網頁地址進行丟棄處理;
當事務開始採集另一個根站點信息時,清空去重容器的歷史訪問記錄,重新記錄新的根站點訪問記錄;將信息採集器爬取站點的深度設置閾值,每個事務運行時,實際去重容器所佔的內存通過爬取站點深度的閾值來控制。
本發明相比現有技術,具有以下優點:
本發明提出了一種基於集成搜尋引擎的數據發現方法,利用事務控制策略進行高效數據採集,針對多維對象之間的耦合關係進行數據挖掘。
附圖說明
圖1是根據本發明實施例的基於集成搜尋引擎的數據發現方法的流程圖。
具體實施方式
下文與圖示本發明原理的附圖一起提供對本發明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發明,但是本發明不限於任何實施例。本發明的範圍僅由權利要求書限定,並且本發明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節以便提供對本發明的透徹理解。出於示例的目的而提供這些細節,並且無這些具體細節中的一些或者所有細節也可以根據權利要求書實現本發明。
本發明的一方面提供了一種基於集成搜尋引擎的數據發現方法。圖1是根據本發明實施例的基於集成搜尋引擎的數據發現方法流程圖。
本發明的搜尋引擎可分為採集模塊和分析模塊。採集模塊包括爬取站點資料庫、爬取站點調度單元,事務管理控制器、事務容器、數據控制器、基礎資料庫。事務管理控制器用於多個爬取事務的創建、啟動、運行控制和銷毀。事務有自己獨立的容器,用於事務資源的管理,具體包括:爬取站點緩存單元,用於在內存中建立隊列來緩存事務要爬取的站點數據;事務緩存單元,用於緩存事務自身的數據;存儲緩存單元,緩存待存儲到資料庫的相關數據;採集事務處理單元,用於對採集數據的加載、實現數據更新、連結去重、存儲處理;數據清洗抽取單元,對採集的代碼進行清洗,抽取出有效信息。這些有效信息包括網頁的標題、關鍵字、摘要、正文、網頁中出現的字體類型、媒體特徵信息。獲取網頁質量等級評價的相關信息和獲取網頁中新的爬取站點;數據存儲分析單元,將清洗抽取出來數據轉換為易存儲的形式,數據進行壓縮,組成待執行的資料庫搜索字符串。數據控制器用於程序與資料庫之間的數據交換處理;包括全局數據源緩存單元、數據調度單元、數據訪問管理單元。全局爬取緩存單元用於處理多事務在對臨界資源訪問時的事務等待,減少多事務對資料庫的操作訪問次數。每個網絡爬蟲只有一個全局爬取緩存單元實例。數據訪問管理單元用於資料庫與程序的數據交互處理。數據調度單元實現單事務爬取的調度,當單事務爬取緩存單元中沒有爬取時,由數據調度單元從全局爬取緩存單元中獲取若干爬取到事務爬取緩存單元。數據調度單元在整個程序中只有一個實例。
搜尋引擎的網絡爬蟲在工作時,首先讀取程序配置文件,並預加載緩存採集時要用到的數據;事務管理器。根據配置信息,初始化各個事務,並控制事務的運行;事務獲取處理任務,先進行爬取連結去重檢查,分析爬取連結的類型,對不同的採集類型執行不同的處理方式,在採集時,分析是新的採集事務還是更新任務,並在獲取到連結的網頁源碼後,對採集到的網頁源碼執行清洗、過濾,根據網頁信息相關特徵規律,提取出有效信息;事務對提取出的信息進行轉換處理,進行緩存;當緩存待保存數據達到一定數量時,事務執行緩存數據入庫處理;同時事務管理器定時監控各個事務的執行狀態,對異常事務進行控制管理。
在爬取之前,根據域名生成規則依次遍歷所有可能的組合域名,對組合域名進行依次檢測,識別有效域名與無效域名,建立根域名庫;然後獲取導航站點的網頁源碼,根據根域名組成規則從網頁源碼中提取根站點地址與連結文本,更新根域名庫。
每個網絡爬蟲只有一個全局的採集事務調度單元。當事務的爬取站點緩存為空時,事務請求或等待數據調度單元從全局採集緩存站點或資料庫傳送爬取站點。事務調度過程具體為:事務獲取數據調度單元控制權限;判斷全局採集緩存站點是否為空,如為空,則從資料庫獲取一定數量的爬取緩存到全局採集緩存源,如不為空,則從全局爬取站點獲取一定數量的爬取給當前事務的爬取緩存單元。
對於單事務,其採集流程具體如下:
1.事務從事務隊列中獲取一個非空採集事務對象。如果獲取到空事務對象,則執行事務調度。
2.判斷採集事務的深度是否超過最大的深度;事務從當前採集事務對象中獲取其當前事務對象所在的採集深度。如果採集深度超過系統配置的站點採集深度,則當前事務採集結束。如採集深度未超過系統配置的站點採集深度,則事務繼續步驟3。
3.判斷採集事務的類型;如果是網頁採集事務,則執行步驟4,如果不是網頁採集事務,則執行步驟5。
4.判斷是否是新網頁還是未完成的網頁連結;如果此採集事務訪問地址不在歷史抓取庫中,則按新發現的網頁進行採集即步驟7。如果此採集事務在歷史抓取庫中,從歷史抓取庫中獲取此網頁地址的上次採集信息:訪問地址、訪問時間、頁面大小、更新頻率、根域名。計算上次訪問時間與本次訪問當前時間的間隔時間是否已經超過更新頻率,如果未超過,則不進行採集,採集結束;如果已經超過,則比較當前網頁地址的頁面內容大小與上一次頁面內容大小,如果相等,則不進行採集,如果不相等,則繼續步驟6。
5.如果是媒體或文件連結,則執行相應的採集文檔處理;如果是非法連結,則記錄此異常連結。
6.獲取此網頁連結頁面源碼,更新歷史訪問庫中此網頁地址的採集信息,執行步驟8。
7.採集新任務網頁,獲取此網頁連結頁面的源碼,在歷史訪問庫中增加此網頁地址的訪問記錄。
8.執行網頁清洗抽取,該網頁清洗抽取步驟用於從網頁源碼中提取指定的特徵信息,清除網頁源碼中的無用信息或噪聲數據,然後再從清洗好數據中提取出需要的信息。進一步地,根據文本相似度算法,從網頁中提取標題,網頁中定義的關鍵字、描述性文本、標題,正文,網頁中的連結、媒體資源供排序分析使用。在清洗時,事務採集程序首先獲取當前事務的網頁編碼。啟動清洗器,並初始化。清除網頁編碼中的樣式編碼和註解編碼;清除網頁編號中的腳本代碼,並同時根據腳本編碼信息識別當前網頁是否存在媒體文件。如果存在則進行保存。將提取後的信息進行壓縮轉換成易於存儲的格式並進行存儲。
對於頁面重複連結,為每個事務部署專門的去重容器,每個容器只存儲自己已經訪問過的連結地址的映射碼。去重容器只需要記錄自己訪問過在同一個根域名站點下的連結,對不屬於此根域名下的網頁地址進行丟棄處理。當事務開始採集另一個根站點信息時,清空去重容器的歷史訪問記錄,重新記錄新的根站點訪問記錄。將信息採集器爬取站點的深度設置閾值,每個事務運行時,實際去重容器所佔的內存可以通過爬取站點深度閾值來控制。
為減少事務等待,本發明採用多層緩存結構,根據計算機的內存大小對各層緩存大小進行配置。首先對全局爬取進行緩存。在對爬取資料庫的訪問連接過程中,採用一次性獲取批量爬取結果進行緩存。其次採用單個事務自身的爬取緩存。每個事務各自擁有一個採集數據源緩存區域。然後對事務在處理過程中的產生的數據進行緩存,包括在連結去重檢查時,緩存訪問過的網頁、媒體連結地址。最後一層緩存是緩存待保存的數據。當待保存的數據達到一定數量以後,事務才對數據進行入庫保存。
所述搜尋引擎的分析模塊用於將採集回來的文本、媒體的基礎數據進行分析處理,為關鍵字建立索引,便於檢索系統的搜索。分析模塊對文本進行關鍵字提取時,依次對文本進行關鍵字提取。對於數字或中文數字漢字,如果是連續存在的,本發明當成一個關鍵詞進行處理。對於英文字母,如果遇到空格等非英文字母時,則進行劃分。對於中文漢字組成的句子,則按下面的次序進行處理:①如果字符是一連續的漢字數字,則將漢字數字連續放在一起。②如果連續三個漢字都是獨立的,沒有形成詞組,本發明將這個三個獨立的字作為一個新的詞組進行劃分。③如果①、②兩種情況都不存在,則採用基於詞庫算法進行劃分。對於其它不是數字、英文字母、簡體中文的計算機符號,則將這些計算機符號看成特別字符,每個特別字符為一個關鍵詞。
對文本進行關鍵字提取步驟進一步包括:
加載中文詞組。從分詞對象中獲取待劃分的文本;獲取分析位置及字符,判斷分析的位置是否已經是待劃分文本的末尾,如果是待劃分文本的最後位置,則劃分好的文本加上切分符,再加上待劃分文本的最後一個字符,組在新的劃分好的文本,此時文本劃分完成。從分析位置開始,尋找切分符位置。找到切分符的位置後,截取分析位置到切分符位置之間的字符,切分符加上劃分後的文本,組成已經劃分好的文本。
中文基礎詞庫的存儲採用雙層散列列表對象存儲。以單詞詞組的首個漢字為鍵,以另一個散列列表對象為鍵值的存儲結構;鍵值的散列列表對象存儲的是以鍵開頭的詞組的除去首個漢字後的詞組剩餘部分。首漢字的鍵值的存儲結構是以單詞的第二個漢字為鍵,以鏈式數組為鍵值。這個鏈式數組存儲詞庫中的單詞的前兩個漢字相同、從單詞的第三個漢字開始不同的文本序列。
通過使用詞庫為依據對文本進行劃分,來尋找詞組在詞庫中是否存在。如果在詞庫中存在,則繼續匹配過程,如果不存在於詞庫中,則匹配結束,進行劃分。
進一步地,在搜索得到網頁集合後,根據搜索和網頁自身內容特徵分別構造基於特徵的相似圖,同時基於搜索和網頁之間的興趣關係構建搜索網頁二元關係圖,在給定少量搜索和網頁類別標記的情況下預測未標記搜索和網頁的類別。
首先要根據樣本數據及其聯繫構建一個圖,節點表示樣本數據,邊表示樣本之間的聯繫,邊的權重表示樣本之間聯繫的緊密程度。包含了多種不同類型對象構建的搜尋引擎可以表示為g=(v,e),其中v=q∪d可以表示為不同類型的頂點的集合,e為連接頂點的邊的集合。q為搜索的集合,d為網頁的集合。e=eqq∪eqd∪edd,其中eqq=q×q,eqd=q×d,edd=d×d。令gq=(q,eqq),gqd=(q,d,eqd),gd=(d,edd),則g=gqq∪gqd∪gdd。其中gq表示由搜索節點構建的子圖,gd表示由網頁節點構建的子圖,gqd表示由搜索節點和網頁節點根據興趣關係構建的子圖。
基於節點之間的以下距離函數進行定義邊的權重wij
wij=exp(-d(xi,xj)/2σ2)
在文本計算中,為兩個文本向量xi,xj之間的夾角餘弦;xi和xj互為k近鄰中的節點;其中d(xi,xj)為距離函數||xi-xj||,σ為調節參數。
根據預先標記樣本的判別信息修改原有的圖結構:
1.構造gq和gd和gqd。計算gq上所有節點之間邊的平均權重wq,gd上所有節點之間邊的平均權重wd。
2:設搜索標記數據被劃分為c個類,表示為pq={pq1,pq2,...,pqc},其中pqi表示第i個類別的標記搜索的核心集。令mqi表示第i個搜索類別標記的成對約束集,若x∈pqi且y∈pqi,則將(x,y)加入mqi。設網頁標記數據被劃分為c個類,表示為pd={pd1,pd2,...,pdc},其中pdi表示第i個類別的標記網頁的核心集。令mdi表示第i個網頁類別標記的成對約束集,若x∈pdi且y∈pdi,則將(x,y)加入mdi。
3:若搜索樣本對(ql,qm)∈mqi,qk為ql和qm的鄰居,wlkwq,則將qk加入pqi,將(ql,qk)和(qm,qk)加入mqi。
4:重複3,直到pq不再變化。
5:若網頁樣本對(dl,dm)∈mdi,dk為dl和dm的鄰居,wlkwd,則將dk加入pdi,將(dl,dk)和(dm,dk)加入mdi。
6:重複5,直到pd不再變化。
7:若搜索樣本對(ql,qm)∈mqi,則修改gq令wlm=1,若ql∈pqi則修改gq令wlm=0。若網頁樣本對(dl,dm)∈mdi,則修改gd令wlm=1,若dl∈pdi則修改gd令wlm=0。
8:若搜索ql∈gp:且網頁dmgpj,則且修改gqd令wlm=1。
其中wlk,wmk,wlm分別為在搜索ql、qm、ql分別在網頁dk,dk,dm中的權重。
通過上述過程能夠豐富搜索和網頁之間的關係,使同類節點之間的聯繫更為緊湊,不同類別的節點之間的聯繫更加鬆散,從而可以更好的採用以下過程來進行分類:
1.對於類別j∈{1,...,c},以及上述子圖中的節點i∈{1,...,n},構造n×c的初始化標記矩陣y。
2.根據同構節點之間的相似性度量分別構造同構網絡上的鄰接矩陣wqq,wdd,根據異構節點之間的關係構造鄰接矩陣wqd及相應的轉置矩陣wdq。
3.構造矩陣其中
4.取f(0)=y,迭代計算f(t+1)=μαsf(t)+(1-μα)y,其中μα為介於(0,1)之間的參數。
5.設f*為{f(t)}序列的極限,則圖g中的節點vi根據yi=argmaxj<cfij進行分類標記。
上述在迭代過程中,圖的每個節點都不斷的將標記信息傳播給自己的鄰居節點直到它們達到一個穩定的狀態。
綜上所述,本發明提出了一種基於集成搜尋引擎的數據發現方法,利用事務控制策略進行高效數據採集,針對多維對象之間的耦合關係進行數據挖掘。
顯然,本領域的技術人員應該理解,上述的本發明的各模塊或各步驟可以用通用的計算系統來實現,它們可以集中在單個的計算系統上,或者分布在多個計算系統所組成的網絡上,可選地,它們可以用計算系統可執行的程序代碼來實現,從而,可以將它們存儲在存儲系統中由計算系統來執行。這樣,本發明不限制於任何特定的硬體和軟體結合。
應當理解的是,本發明的上述具體實施方式僅僅用於示例性說明或解釋本發明的原理,而不構成對本發明的限制。因此,在不偏離本發明的精神和範圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。此外,本發明所附權利要求旨在涵蓋落入所附權利要求範圍和邊界、或者這種範圍和邊界的等同形式內的全部變化和修改例。