Blog Post Extraction using Text-to-Tag Ratio and Maximum
Scoring Subsequence
陳志銘 陳柏志 吳文斌 985202018 995202017 995202021 國立中央大學 資訊工程學系 國立中央大學資訊工程學系 國立中央大學資訊工程學系 [email protected] w [email protected] w [email protected] w摘要
近年來,部落格為主的相關研究蓬勃 發展,例如:意見檢索、情緒分析。因此 ,部落格主文擷取即是所需的前處理程序 。由於部落格網頁來自於不同網站,呈現 的樣式風格多變,無法簡單地透過正規表 示式擷取主要文章 再者,HTML網頁中 包含許多和主題不相關的資訊,例如:廣 告、導覽列…等,使得擷取部落格主文是 一項相當複雜的工作。因此,我們先計算 網頁中每一行的Text-to-Tag Ratio,再利用 Maximum Scoring Subsequence演算法擷取 部落格主文 實驗結果顯示F-Measure可達 到89% 此系統可應用於PDA、手機…等 螢幕較小的裝置,以及自然語言處理、文 件自動摘要...等其他研究領域,並提供後 續相關研究之參考與應用。 關鍵字:Content Extraction Blog Post Extraction1.
緒論
部落格是Web 2.0的主要網路服務之 一,隨著部落格蓬勃發展,不僅只有純文 字格式,還可結合照片、音樂、影像等多 元模式呈現,部落格的走向、定位、性格 ,不同於一般BBS、討論區,其所記錄的 生活札記、小道消息,到政治議題、專業 知識,完全取決於作者的自我論點,並可 與讀者討論和互動。 近幾年,部落格的相關研究受到越來 越多的關注,例如:意見檢索(opinion retrieval)、情緒分析(sentiment analysis)、垃圾文章偵測(spam blog post detection)等 ,並且也有針對部落格文章摘要與留言評 論的相關應用和論文發表。由於上述提及 的研究議題,皆需從大量不同的部落格網 頁中抓取作者撰寫的文章進行分析,因此 擷取部落格主文便成為一項重要的工作。 部落格網頁不同於一般網頁,文章內 容可能是圖文並茂,有時使用者會因個人 喜好加入影音資訊,亦或只有簡短的句子 和少量的詞彙。除此之外,不同網站的部 落格網頁擺放主文的位置不固定,並且文 章附近經常包含許多各式各樣的雜訊,例 如:廣告、導覽列、選單列表...等。正因 如此,如何擷取部落格主文,是一項困難 複雜且相當具有挑戰性的工作。 使用正規表示式擷取網頁中的主要文 章是最直接的方法,但需針對特定網站撰 寫特定規則,然而部落格網頁風格多元, 單一規則無法適用於多個不同網頁。除此 之外,部落格網頁的版面架構其更動頻率 相當高,可能會造成原本的擷取程式產生 錯誤,需經常更新維護或重新撰寫,是一 個效率低落且信任度較差的方法。 目前大多數擷取網頁內容的演算法, 是基於DOM tree的架構將網頁分割成許多 區塊,接著利用HTML標籤語法的特性或 是機器學習的方法擷取主要文章。然而, 建構DOM tree並運用此架構所花費的時間 複雜度相當高,無法快速的處理大量網頁 。另外,機器學習的方法需要標記訓練資 料,若以人工標記則相當的耗時耗力。因 此,我們將Weninger等人提出的Text-to-Tag Ratio計算方法做更進一步的修改,使
其能適用於部落格網頁,並結合Maximum Scoring Subsequence演算法擷取部落格網 頁的主要文章。實驗結果顯示F-Measure 可達到89%,是一個有效率的方法。 此篇報告架構如下,第二節介紹相關 研究,第三節描述擷取部落格主文的方法 ;第四節介紹Adaptive Text-to-Tag Ratio演 算法及Naïve Bayes分類模型;第五節描述 K-means分群和Maximum Scoring Subsequence演算法;第六節為實驗的環境 建置;第七節為實驗結果 最後總結這篇 論文及介紹未來研究。
2. 相關研究
本章節介紹網頁內容擷取(Content Extraction)的相關研究與技術。 一般說來,許多之前的研究會將網頁 分割成許多區塊,接著計算區塊的重要程 度,進而擷取網頁主要內文,並且實驗資 料集大多針對新聞網頁。 Cai等人提出Vision-based Page Segment (VIPS)[1]演算法,不同於傳統基 於DOM tree架構的切割方式,利用特定的 視覺線索規則將網頁切割成許多區塊,但 需要設定參數並能精確標記主文才可擷取 出網頁的主要文章。 Cao等人[2]設計一個兩階段的方法擷 取部落格網頁的文章和評論。首先,基於 DOM樹的架構,計算每一個節點之有效 內容機率,並透過網頁中的CSS語法獲得 每一個節點所呈現的視覺寬度,藉此找出 主要文章的範圍。接著尋找最小資訊量的 位置作為文章和留言的區分點。 Pasternack與Roth透過Naïve Bayes分 類器,計算每一個HTML標籤、詞彙與標 點符號包含於主要內文的機率,並將此機 率值轉換成-0.5至0.5之間的分數,最後利 用Maximum Scoring Subsequence演算法, 求得唯一且最長的子序列,進而擷取網頁 中的主要文章。實驗資料集主要是針對新 聞網頁,且需事先標記訓練資料。 Weninger等人提出藉由計算HTML檔 案中每一行的Text-to-Tag Ratio並轉換成二 維模型,接著透過K-means分群演算法擷 取主要文章。實驗資料集也是針對新聞網 頁,優點在於不需標記訓練資料,且實驗 結果顯示F-Measure平均可達到93.9%3.
部落格主文擷取
當使用者以關鍵字搜尋部落格時,搜 尋引擎即傳回其索引資料庫中相關部落格 網頁的連結,此時需要針對部落格網頁進 行主文的擷取以提供後續相關研究更進一 步的分析。 首先,需先判斷搜尋引擎呈現的相關 連結是否為部落格網頁 接著,擷取部落 格作者撰寫的主要文章 最後,將多餘的 標籤及雜訊濾除。 3.1.辨識部落格網頁
如何辨識是否為部落格網頁可當作是 一個分類問題,2009年張嘉惠教授和楊萍 華的論文當中,參考Cao等人以及 Elgersma和Rijke為了區分部落格與非部落 格而提出的特徵 利用LibSVM建立部落 格與非部落格分類器,實驗結果顯示F-measure可達90.7%,因此我們假設此分類 器存在的狀況下,後續的實驗資料集是從 各式各樣的部落格網站蒐集而來的部落格 網頁。 3.2.擷取主要文章
我們嘗試將部落格網頁分別以HTML 原始碼當中的每一行和每一個token這兩種 方式做切割,token可能為一個HTML標籤 、詞彙或是標點符號。接著 計算每一行 的Text-to-Tag Ratio和利用Naïve Bayes計算 每一個token包含於主要文章的機率,再分 別實作K-means分群與Maximum Scoring Subsequence演算法擷取部落格網頁的主要 文章,流程如圖一所示。實驗結果顯示Text-to-Tag Ratio和Maximum Scoring Subsequence演算法是最佳的組合,F-Measure可達到89%
圖1. 系統流程圖
4. Computational Method
Weninger等人提出的Text-to-Tag Ratio 計算方法可以有效率的擷取新聞網頁中的 主要內容。然而,部落格網頁不同於新聞 網頁,文章內容可能是圖文並茂,有時使 用者會因個人喜好加入影音資訊,亦或只 有簡短的句子和少量的詞彙。我們將此方 法實作於擷取部落格網頁的主要文章 其 結果顯示F-Measure只有80%。因此,我們 根據部落格網頁的特性與架構做適當的修 改,使其能廣泛適用於擷取各式各樣部落 格網頁的主要文章4.1.
Adaptive Text-to-Tag Ratio
簡單來說,Text-to-Tag Ratio即是計算 HTML標籤個數與非標籤的字元長度之比 例。在部落格網頁中,主要文章的呈現方 法各式各樣,若只考慮HTML標籤個數與 非標籤的字元長度之比例,會遺失許多重 要的資訊 例如:圖片、影音、表格...等 非文字和特殊格式的內容,並間接影響到 上下文的Text-to-Tag Ratio 我們根據HTML標籤語法特性做適當 的修改 <p> <br> <blockquote>此類型 的標籤經常出現於部落格網頁的主要文章 ,因此我們將其視為內容相關的標籤 (Content Tag),在計算的過程中給予較高 的權重。另外,針對圖片和影音類型的資 訊 我們在計算Text-to-Tag Ratio時考慮其 呈現寬度和周遭非標籤的字元長度。關於 網頁中表格類型的內容,我們藉由計算表 格中的非標籤的字元長度當作每一行的 Text-to-Tag Ratio Adaptive Text-to-Tag Ratio演算法如圖2所示。
Input: D ← Blog page
Output: T ← Text-to-Tag Ratio
Define α ← text length threshold β ← image width threshold γ ← video width threshold for all i ← 1 to |D| do
x ← nonTagChars (Di) y ← tags (Di)
if (y > 0)
if Content Tag exists then if (y – Content Tag) > 0 then
Ti ← x / (y – Content Tag)
else
if (x > 0) then Ti ← x
else Ti ← max (Ti-1, Ti-2)
else Ti ← x / y
if image width > α then
if x > β then Ti ← image width + x / y
else Ti ← (image width + x) / y
if video width > γ then Ti ← video width
if Table Tag exists then Ti ← table length
else
if (x > 0) then Ti ← x
else Ti ← 0
end for
圖2. Algorithm for computing Adaptive Text-to-Tag Ratio
我們以一個典型的部落格網頁作為計 算Adaptive Text-to-Tag Ratio的範例 如圖 三所示 圖四為此網頁每一行的Adaptive Text-to-Tag Ratio,以長條圖表示。
圖3. 部落格網頁 1 21 41 61 81 101 121 141 161 181 201 Line Number 0 100 200 300 400 500 600 700 TTR Array
圖4. AdaptiveText-to-Tag Ratio line by line from the blog page example
4.2.
模糊化處理
對Adaptive Text-to-Tag Ratio做模糊化 處理,可避免在擷取主要文章時遺失和文 章內容有關的資訊,例如:標題、日期、 段落換行、較短的句子或段落...等。公式 如下 2 1 '
r TTRArray T r i r i k k i 將每一行的Adaptive Text-to-Tag Ratio與前後相鄰的兩 個值相加計算其平均值,即是模糊化後的 結果。 圖五為經過模糊化處理的結果,和圖 三相比,更明顯的表現出主要文章的可能 位置。 1 21 41 61 81 101 121 141 161 181 201 Line Number 0 50 100 150 200 250 300 TTR Array
圖5. Smoothed Adaptive Text-to-Tag Ratio line by line of the blog page example
4.3.
Naïve Bayes Classifier
我們採用Pasternack與Roth提出的兩種 特徵建立Naïve Bayes訓練模型,即trigram 和most-recent-unclosed-tag 用以預測每一 個token包含於主要文章的機率 假設一個序列U = (u1, u2,..., un) 表示有 n個token 則代表第i個token的trigram特徵 為<ui, ui+1, ui+2> most-recent-unclosed-tag特
徵的計算是利用堆疊(stack)形式的資料結 構,將起始標籤放入堆疊,如果比對到相 對應的結束標籤則將此起始標籤輸出,第i 個token的most-recent-unclosed-tag特徵即 是目前位於堆疊頂端的標籤。若測試資料 中的trigram特徵未出現於訓練資料,則將 此token包含於主要文章的機率值設為 0.5 out) | P(t in) | P(t
5. Extraction Method
5.1.Algorithm
本節將介紹Maximum Scoring Subsequence的運作方式及目的 假設一個 序列S = (s1, s2,..., sn) 其中si為實數,可當 作是一個分數 此演算法之目的即是找出 在序列S當中,分數加總最大的一個連續 子序列,令其為T = (sa, sa+1,..., sb) 其中1 ≤ a ≤ b ≤ n 演算法如圖六所示,時間複雜 度為O (n)Given: S = (s1, s2,...,sn) Output: maxSS start = 0 sum = 0 maxSS = (-∞) for i = 1 to n do sum = sum + si
if sum > value (maxSS) then maxSS = (sstart, sstart+1,...,si)
if sum < 0 then start = i + 1 sum = 0 end for
圖6. Algorithm for finding the maximum scoring subsequence
5.2.
Applying Maximum Scoring
Subsequence
我們將模糊化後的每一行Text-to-Tag Ratio相加計算其平均值,再藉由減去此平 均值將每一行的Text-to-Tag Ratio轉換成一 個分數,進而透過Maximum Scoring Subsequence此演算法擷取部落格網頁的主 要文章 另外,我們也採用Pasternack與Roth提 出的方法,藉由將每一個token經由Naïve Bayes預測包含於主要文章的機率值,以 減去0.5的方式轉換成一個分數,進而透過 Maximum Scoring Subsequence此演算法擷 取部落格網頁的主要文章5.3.
Applying K-means Clustering
我們採用Weninger等人提出的方法, 先將模糊化後的每一行Text-to-Tag Ratio 轉換成二維模型的資料。公式如下: ' 0 ' i j i j i T T G
Ti’表示模糊化後的 Text-to-Tag Ratio,ω於實驗中設為3 計 算出來的值代表每一行Text-to-Tag Ratio增 加或減少的趨勢。最後,將Gi取絕對值, 即Gˆ Gi' 作為第二維度的資料。 另外,每一個token經由Naïve Bayes 預測包含於主要文章的機率,也依照上述 方法轉換成二維模型的資料,此時Ti’為每 一個token包含於主要文章的機率值。 我們利用K-means演算法對二維資料 做分群,將中心最接近原點的群視為非主 要文章,剩下的群皆視為包含於主要文章 ,K於實驗中設為36. Experimental Setup
6.1.Data Set
我們從Blogspot Technorati和Yahoo這 三個部落格網站,蒐集十個主題的部落格 網頁,前五個主題抓取限定在 Blogspot.com的部落格網頁作為訓練資料 ,並針對Blogspot.com部落格網站撰寫 Wrapper自動標記答案 後五個主題則抓取 上述三個部落格網站的網頁做為測試資料 並從每一個主題隨機挑選25篇網頁 以 人工的方式標記答案,如表一和表二所示 表1. 訓練資料 Topic #page applebee 261 batman 582 beige book 512 iphone 522 obama 539 表2. 測試資料Topic #page #select page
bmw 351 25 phone fake 450 25 red sox 358 25 science friday 433 25 south park 426 25 6.2.
Preprocessing
以HTML原始碼當中的每一行切割部 落格網頁之前,我們先利用 HTML Tidy修 正HTML檔案中的標籤錯誤並自動格式化 再刪除JavaScript CSS語法和開發人員 撰寫的程式碼註解,也將空白行移除,並 讓不常使用或是自行定義的標籤名稱轉換 成<UNKNOWN>,接著找到“comment”這 個字在網頁中最後出現的位置,將其後面 的內容刪除。上述之前處理程序,其用意 皆是避免計算Text-to-Tag Ratio時受到雜訊 干擾而導致實驗結果產生誤差。至於以token的方式切割部落格網頁, 其前處理程序同上,只需再經過 Stemming的步驟將詞型及時態變化還原成 原型,提升Naïve Bayes訓練模型的效率, 本篇論文於實作上採用Porter Stemming演 算法 6.3.
Performance Metrics
我們以Precision Recall和F-Measure 三種計算方式來評量實驗的結果。公式如 下 R P PR F W W W R W W W P L L P P L P , , 1 2 WP表示擷取結果的字集,WL表示標記答案 的字集7. Results
7.1.Baseline
我們分別將Weninger等人提出二維模 型Text-to-Tag Ratio搭配K-means分群演算 法 和Pasternack與Roth提出以Naïve Bayes 搭配Maximum Scoring Subsequence演算法 實作於部落格網頁,由於K-means分群演 算法為非監督式,不需要準備訓練資料, 因此實驗資料集為訓練資料加上隨機挑選 的測試資料,結果如表三所示。表3. Baseline
Method Precision Recall F-Measure 2DTR + K-means 81.49% 84.79% 80.42% Naïve Bayes + MSS 90.46% 86.83% 87.26% 我們可以發現將Weninger等人提出的 方法F-Measure只有80%左右 並不適用於 部落格網頁 原因在於 計算Text-to-Tag Ratio時只單純考慮HTML標籤個數與非標 籤的字元長度之比例,忽略了圖片、影音 、表格...等非文字和特殊格式的內容,因 此遺失許多包含於主要文章的資訊。 7.2.
Our Framework
我們將Text-to-Tag Ratio做更進一步的 修改,以期能適用於部落格網頁,並加入 Naïve Bayes的計算方式,交叉比較K-means分群與Maximum Scoring Subsequence兩種擷取方法的效果,實驗結 果如表四所示。 表4. Our FrameworkMethod Precision Recall F-Measure Naïve Bayes + K-means 79.68% 84.48% 80.28% Adaptive 2DTR + K-means 87.40% 90.15% 87.03% Adaptive TTR + MSS 89.15% 92.81% 89.23% 我們可以發現,修改過後的Text-to-Tag Ratio搭配Maximum Scoring Subsequence演算法 F-Measure可達到89% 左右,優於Pasternack與Roth提出以Naïve Bayes搭配Maximum Scoring Subsequence 演算法,效果最佳且不需要再額外準備訓 練資料 另外,將修改過後的Text-to-Tag Ratio轉換成二維資料並搭配K-means分群 演算法,F-Measure也有87%左右,兩者與 Weninger等人提出的方法相比皆有顯著的 效能提升,效果可以超過9% (F-Measure)。上述皆可證明我們修改過後的 Text-to-Tag Ratio計算方法更適用於部落格 網頁。 7.3.
Discussion
由表四可知,修改過後的Text-to-Tag Ratio搭配Maximum Scoring Subsequence演 算法適用於部落格網頁。但是,仍然存在 某些情況會造成判斷錯誤。例如:部落格 的主要文章只有一行文、少許連結...等, 這些不明確或偏向垃圾文件的內容,皆會 使我們無法藉由Text-to-Tag Ratio的計算辨 別主要文章。另外,採用Adaptive Text-to-Tag Ratio 的優點在於,它屬於非監督式學習演算法 ,不需要再額外準備訓練資料,是一個快 速且有效率的方法。
8. 結論
本篇論文的研究目的為建立一個部落 格網頁主文擷取的系統。我們以HTML原 始碼當中的每一行切割網頁,並提出適用 於部落格網頁的Text-to-Tag Ratio計算方式 且有效地結合Maximum Scoring Subsequence演算法擷取部落格網頁的主要 文章。實驗結果顯示F-Measure可達到89%,而且不需準備訓練資料,是一個快 速有效率的方法。 部落格主文擷取為意見檢索、情緒分 析...等相關研究的前處理步驟。未來的研 究方向,我們希望建立一個部落格意見搜 尋引擎並結合本篇論文所提出的部落格主 文擷取方法,藉由精確快速的前處理步驟 ,提升意見檢索與情緒分析等相關研究的 準確度,使得搜尋引擎更有效率地呈現相 關搜尋的結果
參考文獻
[1] M.F. Porter. An algorithm for suffix stripping. Program, vol.14, no. 3, pp 130−137, 1980.
[2] Walter L. Ruzzo and Martin Tompa. A Linear Time Algorithm for Finding All Maximal Scoring Subsequences. AAAI 1999.
[3] Suhit Gupta, Gail Kaiser, David Neistadt, Peter Grimm. DOM-based Content Extraction of HTML Documents. WWW 2003.
[4] D. Cai, S. Yu, J.-R. Wen and W.-Y. Ma. VIPS: a Vision-based Page Segmentation Algorithm, Microsoft Technical Report, MSR-TR-2003-79, 2003.
[5] E. Elgersma and M. de Rijke. Learning to Recognize Blogs: A Preliminary Exploration. ECAL 2006 Workshop.
[6] John Gibson, Ben Wellner, Susan Lubar. Adaptive Web-page Content Identification. WIDM 2007.
[7] D. Cao and X. Liao and S. Bai. Blog Post and Comment Extraction Using Information Quantity of Web Format. AIRS 2008, pp. 298-309.
[8] Jeff Pasternack and Dan Roth. Extracting Article Text from the Web with Maximum Subsequence Segmentation. WWW 2009.
[9] Tim Weninger, William H. Hsu and Jiawei Han. CETR – Content Extraction via Tag Ratios. WWW 2010.
[10] Ping-Hua Yang and Chia-Hui Chang. Automatic Labeling for Blog Post