第三章 系統架構與資料前處理
3.2 資料前處理
我們對標籤資料庫中各物件所具有的標籤會先進行字詞原形化 ( Stemming )
及停用詞移除 ( Remove Stop Words ) 等前處理,並以該標籤在物件對應標籤集的
出現次數來作為篩除標籤的依據。
我們使用 Porter 原型處理演算法 ( Porter Stemming Algorithm ) 來進行字詞原
形化,希望能夠藉由還原標籤字的原型詞態,避免計算次數分散的問題;停用
詞移除則是以 MySQL 提供的停用字清單 ( http://dev.mysql.com/doc/refman/5.5/en/
fulltext-stopwords.html ) 來過濾掉不具實際意義的標籤。
停用字移除與字詞原型化雖然能有效使標籤物件集內的標籤品質上升,但是
仍然有些例外標籤會影響系統查詢的效果,故我們設定一個頻率門檻值,先計算
各標籤在標籤資料庫中的出現次數,若標籤出現次數低於此門檻值,則從所有標
籤物件中刪除。
3.3 標籤物件集索引結構
本論文使用 [7] 提出的多階層索引結構對資料物件的標籤集建立索引,其目
的在於加速搜尋具相似標籤集物件的效率。以下先介紹此索引結構的特性。
3.3.1 索引結構介紹
此索引結構建立的基本概念為,將各標籤資料庫的標籤集合聚集成一些標籤
集群集 ( Tag Cluster ) ,本論文中一個標籤集群集以 C 來表示。經由標籤集合和
標籤集群集的距離計算,將相似的標籤集合聚集成一個群集。此索引結構為一個
樹狀結構圖,群集可以擁有子群集形成多階層的樹狀結構。葉節點群集(沒有子
群集的群集)中的標籤集合分別存在數個批次集 ( Batch ) 中,本論文一個批次集
以 B 來表示,而批次集中的各標籤集合會記錄具有對應到擁有此標籤集合物件
的標號列表。以圖 3.2 為例:C1 為一個根節點群集,C2、C3 為其子群集,且為
葉節點群集。葉節點群集 C2 中有 B1 、B2 兩個批次集。我們以 O 來表示一個標
籤資料物件,O.tagset 表示 O 所擁有的標籤集合。如圖 3.2 顯示 B3中有兩個標
籤集合為 { a, d, e } 及 { c, d, e } ,其中 { c, d, e } 可以對應到 O5、O6 兩個物件,
表示 O5.tagset、O6.tagset皆為 { c, d, e }。
圖 3.2: 多階層索引結構 [7]
每個群集 C (或批次集 B ) 記錄兩個特徵:C.Co( 或 B.Bo ) 表示 C ( 或 B ) 中
所有標籤集合的聯集;C.Ci ( 或 B.Bi) 表示 C ( 或 B ) 中所有標籤集合的交集。
在決定是否可加入一個新的標籤集合 Ti 到群集 C 中時,藉由 Ti 加入 C 後新的
C.Co和 C.Ci 的差集大小,也就是| C.Co− C.Ci | 來判斷。此值越大表示群集 C
中所包含的標籤集合之間的相似度越低,越小表示群集 C 中所包含的標籤集合
之間的相似度越高。舉例來說,有一個物件 Oi,它的標籤集合 Oi.tagset尚未存
於此索引結構,因此需要將 Oi.tagset加入其索引結構。從根節點開始檢查,若
將 Oi.tagset加入根節點 C1,系統會計算加入 Oi.tagset後的 C1.Ci與 C1.Co之差
集大小是否違反一個設定門檻值 M axd_root ,若符合則加入此群集,違反則不
加入。若同時有多個根節點群集皆可加入 Oi.tagset,則選擇| Ck.Co− Ck.Ci | 值
最小的群集 Ck做為加入 Oi.tagset的群集,以此來控制每個群集內標籤集合的相
似度。若 Ck具有子群集,則以相同方式找到適當的子群集節點加入 Oi.tagset,
直到加入葉節點群集的批次集。如果找不到可加入的群集,則會建立一個新的群
集來儲存 Oi.tagset。
每個葉節點群集中包含相同標籤數目的標籤集合,會形成一個批次集。一個
批次集 B 中的標籤集與上層葉節點 C 的 C0之差集大小為固定,以 dvo 表示。而
一個批次集 B 中的標籤集與上層葉節點 C 的 Ci 之差集大小也為固定,以 dvi 表
示。因此每個批次集會記錄一組和上層葉節點 C 的邊界差集數組 (dvo, dvi) 。以
圖 3.2 來說,B2 中的標籤集合 { a, b, c, d } 、{ b, c, d, e} 和 C2.Co( 此例中為 { a,
b, c, d, e } ) 以及和 C2.Ci (此例中為 { b, c, d} ) 的差集大小皆為 1 ,因此 B2 的差 集數組為 ( 1, 1 )。
3.3.2 建立索引結構群集門檻值之定義
系統將標籤資料庫中的物件逐一加入至索引結構的過程中會使用三個門檻
值,來控制索引結構中各階層(如群集或批次集)標籤集合的相似程度。各個門
檻值的名稱及對應意義如下所述:
(I) M axd_root :為控制根節點群集的門檻值。索引結構下所有根節點群集 C 的外邊界 C.Co 和內邊界 C.Ci之差集大小不能大於此值。M axd_root 值越
大,則根節點群集內標籤集合間的差集大小越大,反之越小。
大,則葉節點群集內的標籤集合間差集大小越大,反之越小。
(III) M axd_batch :為控制批次集的門檻值。索引結構下所有批次集 B 的外邊 界 B.Co和內邊界 B.Ci 之差集大小不會大於此值。M axd_batch 值越大,則
批次集內的標籤集合間差異越大,反之越小。
上述定義之名詞符號可整理如表 3.2 所示。
表 3.2: 相關名詞符號定義
符號 定義
C 一個群集 (cluster)
C.Co 外邊界 (outer border) ,所有 C 包含的標籤集合之聯集
C.Ci 內邊界 (inner border),所有 C 包含的標籤集合之交集
B 一個批次集 (Batch)
B.Bo 批次集外邊界,所有 B 底下標籤集合的聯集
B.Bi 批次集內邊界,所有 B 底下標籤集合的交集
dvo 批次集 B 和上層的群集 C 各自標籤集合聯集的差集個數
dvi 批次集 B 和上層的群集 C 各自標籤集合交集的差集個數
Oi 具有標籤集合的資料物件, i 為物件之編號
Oi.tagset 資料物件 Oi 的標籤集合