第三章 方法描述與實作
3.1 文章前處理
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
11
第三章 方法描述與實作
在這一章節中,我們將完整介紹演算法的設計流程。本研究的目的希望可以在高度分散 式環境下,使得 Top-k 相似文件的查詢可以有效率的處理,並且達到最大的準確率 (Recall)。由兩種前處理的方法組成與特徵索引表的建立,以達到上述預期效果。
我們的流程分成三個步驟,首先,會利用分群演算法先針對各節點資料庫作前處理,
並且透過區域切割和建立特徵索引表,最後達到減少查詢時間的效果。在過去的分散式 環境上,當需要進行 Top-k 相似文件檢索時,我們無法單純的將每個節點資料庫中的 Top-k 結果做合併後,輸出為查詢結果,因為這樣產生的數量過於龐大且耗時,而是希 望藉由少部份的資訊提供者即可回傳結果。因此我們提出的架構中,主要概念是希望藉 由前處理事先建立的特徵索引表來加速查詢處理,在此章節我們會詳細的介紹整體架構 流程。
3.1 文章前處理
首先,在前處理步驟中,我們會先針對各文件資料庫內的文件作特徵抽取,包括三階段 的處理,利用傳統資訊檢索常用的技術,諸如斷詞切字 (Tokenization)將語句拆解為 單字,包含空白及標點符號等 (表 3.1)、去除停用字 (Stop-word removal)、詞幹還原 (Stemming) 等步驟,並且根據各資料庫內的每一份文件內容計算其詞頻 (Term
Frequency, tfi) 做為權重後,得到數個特徵向量做為該文件的壓縮資訊描述。
去除停用字是透過 Frequency-based Indexing Method 的方法,先將文件內的字詞 分類為功能字詞 (Function words) 和內容字詞 (Content words)兩大類,前者常用於 表示文法結構,像是 the, and, or…等常出現的介詞;後者則是實際給予文件內容涵義 的字詞。舉例來說:「This lazy dog is sleeping on the floor.」中,即包含了四個
‧
功能字詞 (This, is, on, the) 與四個內容字詞 (lazy, dog, sleeping, floor),分 別用來表示文章結構及內容。接著採用一停用字列表 (Stoplist) (表 3.2) 將功能字詞
automate, automatic, automation 屬於同義字,必須表示為同一字。因此我們採用波 特詞幹還原演算法 (Porter Stemming Algorithm) 進行還原字根的處理。
表 3.1:斷詞切字的範例 輸入:This lazy dog is sleeping on the floor.
輸出:<This, lazy, dog, is, sleeping, on, the, floor>
表 3.2:停用字列表的部分範例
‧
‧
ALGORITHM : Hierarchical Agglomerative Clustering(N
C, C)
1: Let each document d be in a singleton cluster {d}
9: end ALGORITHM Hierarchical Agglomerative Clustering 可以較少量的群集特徵向量來表達所擁有的大量文件資訊。
3.1.2 分群演算法
在分群演算法的挑選上,我們使用的是階層式聚集分群演算法 (Hierarchical
Agglomerative Clustering, HAC) (表 3.3),對同一資料庫下的文件集合做分群。該方 法的分群流程,首先是在特徵空間中,將每一份文件轉換為特徵向量,因此在分群過程 中,我們會將每份文件視為一個各自獨立的群集,然後每次迭代皆選取距離最近的兩個 群集做合併,形成新的群集,反覆遞迴直到分群數目達到系統要求為止。最後依此邏輯 逐序將單一資料庫下的所有文件,建立成一階層群集樹 (Hierarchical Clustering Tree, HCT) (圖 3.1),而兩群集之間在特徵空間中的距離是以餘弦相似度 (Cosine Similarity) 做為計算方式。以下定義我們在分群演算法中,所使用到的變數說明:
𝑵𝑪 : 系統要求的分群數量 C : 目前系統內的群集數量 α、β : 目前系統內分群的子群集 γ : 合併後產生的新群集
表 3.3:階層式聚集分群演算法
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
15
圖 3.1:階層群集樹示意圖
如圖 3.1 所示,在分群的過程中,各個節點資料庫必須設定一群集相似度門檻值 (Cluster Similarity Threshold),做為文件彼此之間的分群依據。一般來說,在階層 群集樹較低層的兩群集,若需做合併處理,必須擁有較高的相似度才可執行,而此門檻 值會隨著群集合併的規模變大而調降。因此,系統便可依據相似度門檻值大小的調整,
建構出各個節點資料庫合適的群集數量。
而在分群演算法的過程中,當同一節點資料庫中的兩群集透過餘弦相似度計算後,
大於事先設定的群集相似度門檻值時,則兩群集的特徵向量必須做合併,當中的字詞特 徵也需做聯集 (Union) 運算。因此,各個字詞特徵的權重也須重新計算:
𝐖𝐭′:字詞 t 的新權重
𝐰𝐭,𝑪𝒊:字詞t 在群集𝐶𝑖內的詞頻
𝐃𝑪𝒊,𝑪𝒋:在群集𝐶𝑖和𝐶𝑗內,擁有字詞t 的文件數量
𝑾
𝒕′= { 𝐥𝐨𝐠 ∑
𝑪𝒊,𝑪𝒋𝒘
𝒕,𝑪𝒊+ 𝒘
𝒕,𝑪𝒋𝑫
𝑪𝒊,𝑪𝒋, 𝑖𝑓 𝒘
𝒕,𝑪𝒊, 𝒘
𝒕,𝑪𝒋> 𝟎
𝟎 , 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
16
最後,每份文件群集會根據新的權重,對群集內的特徵向量做排序,保留住 Top-k 的特徵向量,作為該群集的壓縮資訊描述,如表 3.4。上述的前處理步驟是必須在所有 的節點資料庫中區域性執行,藉由兩步驟的前處理,各個資料庫已先擁有系統性的整合 資訊,方便未來查詢處理時利用。
表 3.4:節點資料庫中各群集 Top-k 字詞特徵的存放圖 Peeri ClusterC1 ClusterC2 ClusterC3
Top-1 feature featuref1 0.87 featuref4 0.74 featuref7 0.92 Top-2 feature featuref2 0.75 featuref5 0.7 featuref8 0.85 Top-3 feature featuref3 0.72 featuref6 0.64 featuref9 0.76