• 沒有找到結果。

第三章 方法描述與實作

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

相關文件