Categories
程式開發

搜索引擎中的 web 數據挖掘


導讀:今天為大家分享的是搜索引擎中的 web 數據挖掘。首先介紹下搜索引擎。實際上,我們每天都會使用的搜索引擎,我們會輸入關鍵詞 query 和需求,搜索引擎會根據算法將於 query 最相關且最權威的結果呈現給用戶。

搜索引擎中的 web 數據挖掘 1

搜索引擎有3個核心部分:

第一:理解用戶行為,從最初文字輸入到語音和圖片輸入。

第二:收錄並分析互聯網數據。

第三:將用戶行為與數據建立聯繫,為用戶推薦結果。

搜索引擎中的 web 數據挖掘 2

今天主要介紹第二部分內容:互聯網 web 數據分析技術。首先看一下 web 數據挖掘與收錄系統,也就是 spider 系統。 Spider 系統是比較成熟的技術, 目標是:快速、全面、準確的收錄並分析網頁數據, 一般全網搜索引擎類似google、百度、搜狗的spider 系統,每日調度10億級鏈接,Spider 數據庫存儲千億級網頁與萬億級鏈接。我們可以認為spider 系統是一個環狀的系統,從鏈接數據庫開始,經過相關算法:如鍊接調度與篩選相關算法,對周期內需要調度的鏈接進行抓取,然後發給抓取器,進行網頁的下載和渲染。然後輸入到數據挖掘與計算系統中,對內容進行提取,將網頁中的內容保存到內容數據庫,鏈接保存到鏈接數據庫中。我們今天的重點是網頁下載之後,網頁相關的一些數據挖掘算法。

搜索引擎中的 web 數據挖掘 3

首先我們看一個例子,互聯網用戶會瀏覽新聞、微博等各式各樣的網頁。我們觀察一下網頁,思考兩個問題,第一個問題,在你觀察的網頁有什麼特徵及內容。第二個問題,從整體看來,這是怎樣的網頁,如何描述這個網頁。具體的分析如下:

搜索引擎中的 web 數據挖掘 4

搜索引擎中的 web 數據挖掘 5

Web 分析技術最核心是對網頁特徵提取,比如:導航、標題、時間、主圖等等。網頁內部特徵是數據引擎進行排序時用到的關鍵特徵。例如在排序中,時間特徵也比較關鍵,將實效性高且相關網頁排在前面。除內部特徵之外,還有網頁整體特徵。我們會用到一些分類和自然語言處理的技術,剛才的例子就是一個新聞網頁,內容是科技相關的。會同時計算語義特徵和結構特徵,例如主圖、排版、文本段落等。

搜索引擎中的 web 數據挖掘 6

Web 數據挖掘中,需要計算並提取網頁的百餘個網頁屬性字段,在此之中會使用一些技術,如機器學習的分類、聚類、回歸、自然語言處理、規則聚合、主題模型等等。最終的目標是充分的理解網頁,為搜索引擎排序提供準確的網頁屬性。

搜索引擎中的 web 數據挖掘 7

網頁分析用到了許多基礎的算法和數據結構。獲取網頁屬性,需要用很多模型計算相應的字段,低層需要構造很多數據結構。了解網頁首先需要建立一個 html 樹的結構。在這個數據結構中, 如圖藍色的代表標籤節點,綠色代表文本節點。文本節點是 html 的內容,內容可以展示在瀏覽器中。在分析過程中,一些內容比較關鍵,如標題、超鏈接與文本內容等相關重要字段。

搜索引擎中的 web 數據挖掘 8

下面介紹頁面分析的一個算法:我們希望充分的理解網頁, 在此過程中, 我們可以通過算法劃分出不同的區域。如劃分為上下左右區域,根據不同的區域提取字段,最終可以對網頁進行更深層次的理解,比如說主體邊框、標題、關鍵內容識別理解。

搜索引擎中的 web 數據挖掘 9

在將網頁劃分為不同區域的過程中, 需要用到較多的數據結構。例如:依賴 HTML 樹構建統計樹。所謂統計樹就是在建立了 HTML 樹之後,對樹節點增加統計屬性,例如坐標、寬高、樣式等等基礎信息。往往在識別節點類型(正文節點、圖片節點)時,這些基本信息可以幫我們排除沒有意義的節點。

搜索引擎中的 web 數據挖掘 10

在構造樹的過程中,會對節點的特徵進行計算,例如節點的面積、顏色等。依賴這些節點特徵對節點進行分類標記。例如說網頁的佈局節點,js 節點,這些具有對應的特徵屬性,基於此對網頁進行分類。分類之後將樹形的節點轉化成數組的形式,方便後續分析。

搜索引擎中的 web 數據挖掘 11

如左圖,該網頁包含 body 主體,佈局節點從上到下一次排開。同樣在右圖的統計樹上,根節點就是 body 節點,下面的四個子節點代表網頁塊元素。在統計樹上進行層次遍歷,以保留有效佈局結構節點,將樹縮減為一個更加簡單的樹。在遍歷過程中,需要算法來計算節點的排列順序。例如根節點下有4個子節點,分別代表網頁中的不同佈局塊。左圖四個佈局塊是從上到下的排列方式,在右圖中會根據深度進行標記。

搜索引擎中的 web 數據挖掘 12

構造完結構樹之後,還會對樹進行變換:節點刪除,節點壓縮。左圖網頁中橙色的節點,對於表示頁面意義不大,原因是:根節點下的子節點都是從上到下排列的,橙色節點的子節點排序順序相同,因此可以對橙色節點刪除,將其子節點上移。

搜索引擎中的 web 數據挖掘 13

總結:為網頁劃分區域,為構造平面數據結構做準備。我們從 html tree 做了許多化簡得到 layout tree,根據 layout tree 計算區域,從而得到多個分區。

搜索引擎中的 web 數據挖掘 14

如何根據 layout tree 劃分平面,劃分思想就是構造劃分平面的容器(類比與 c++ 中的 vector)。我們按廣度優先遍歷 layout tree,來判斷節點是否可以放入到容器中。可以使用規則或者機器學習模型來進行判斷。如圖中黃框的節點,面積比較小,寬比高的值較大,且包含一些語義信息:導航等,就可判斷節點屬於上區域容器中。但是5號節點面積較大,判斷為上區域是不合適的。那麼上區域容器收集完成了。所以5號節點會在下一層進行相應的劃分。也可以通過分類模型來判斷是否要放入到容器中。

搜索引擎中的 web 數據挖掘 15

完成平面構造之後,可以利用它們對網頁中元素提取。例如圖中在提取評論內容,訓練一個評論塊識別模型,就可以從不同網頁中,商品、新聞等網頁中提取評論內容。

搜索引擎中的 web 數據挖掘 16

最後介紹網頁分類,這是一個比較通用技術,無論是結構分類還是語義分類思路是比較類似的。例如對網頁分類,就是對提取網頁的特徵向量(如圖片數量,鏈接數量等等統計信息),利用有監督的機器學習模型(如隨機森林、邏輯回歸等)進行訓練,識別網頁類型。一般的網頁分類系統是多個二分類模型疊加在一起的。例如有多個模型:娛樂,體育新聞等,最終我們會對這些模型結果串聯到一起,這樣每個類型相互沒有依賴,升級迭代比較方便。

本次分享的技術部分就到這裡,謝謝大家。

搜索引擎中的 web 數據挖掘 17

作者介紹

沐沐老師,前百度資深研發工程師。 10餘年C/C++研發與算法設計經驗,致力於搜索與推薦引擎及其子系統的研發、迭代與優化,數據分析與挖掘領域專家;沐沐老師多年擔任校園招聘、社會招聘面試官,面試過不計其數的候選人;大學時代的沐沐老師曾獲得ACM國際大學生程序設計競賽、GCJ、百度之星等多個算法競賽的各種獎項。

木雨堂由多位來自百度、阿里、微軟等一線互聯網科技公司的資深研發工程師共同創立,為互聯網、計算機相關從業者與在校同學提供高質量的免費、付費的互聯網相關技術原創視頻內容,幫助同學們快速學習互聯網、人工智能等前沿技術知識。

本文來自 DataFun 社區

原文鏈接

https://mp.weixin.qq.com/s/-VAE-QeiykYwwAmf0q9NhQ