• 沒有找到結果。

系統建置索引流程

第三章 結構化文件索引與語意索引的結合

第二節 系統建置索引流程

系統建置索引流程圖如圖 6 所示:

圖 6:系統索引建置流程圖

產生索引資料必須經過斷詞切字、結構索引以及語意索引三個步驟,斷詞切 字的目的在於從文字資料中擷取出含有語意的詞鍵;結構索引則是為斷詞切字後 的結構化文件建置索引;最後再將這些含有階層式架構的詞鍵交付語意索引步驟 以找出詞鍵間相似性的語意矩陣。

在索引建置過程中產生的 K-ary樹狀結構與語意矩陣即可提供給使用者作檢 索,經由檢索機制與使用者所下的檢索關鍵詞作相似性比對,即可達到本文整合 兩種索引的目的。下面我們便根據此三步驟逐一說明。

3.2.1 斷詞切字

由相關的研究工作可發現,在索引建置前必須先對原始的文件資料作斷詞切 字之前置處理,才能產生出可供使用者檢索用的詞鍵。本文中的詞鍵長度均為二 個中文字,也就是我們只針對雙字詞(Bi- gram)來作處理,這是因為在中文文件中 雙字詞所能提供的檢索能力已經相當完整,即使我們再加入三字詞、四字詞甚至

語意索引 結構索引

斷詞切字 定義詞鍵

計算詞鍵 語意強度

計算權重

結構文件 語法分析

UID 配置

K-ary 樹狀結構

語意矩陣 相互關連 強度分析 結構化

文件

五字詞,只會增加系統的運算時間而無法有效地提升檢索的查全率(Recall)及查 準率(Precision),故本文中略去三字詞以上的詞鍵。

詞鍵在文件中所出現的次數稱為詞鍵頻率(Term Frequency) ,它會影響檢索 的好壞。若建立高頻率詞鍵的索引會增加檢索的查全率,但卻會降低檢索的查準 率。在中文字中有許多字的出現太過頻繁,不宜將之納入索引之中,因此在建立 詞鍵索引時不予考慮,我們將這些文字稱作功能性文字(Function Words)。功能性 文字在文件中出現次數大致是一樣多,但是非功能性文字在不同類型文件中出現 的次數則會有差異。以「資訊」而言,是一個非功能性文字,它在資訊科學系或 是資訊工程系的論文中出現的次數就可能會較多,而「論文」兩字為一個功能性 文字,其出現次數無論在何種類型的論文中都可能差不多;故非功能性文字出現 次數的多寡,即代表該詞鍵在文件中的重要性。根據詞鍵頻率的觀念,我們可依 照下列步驟來產生建置索引所要用的詞鍵:

1. 讀入所有的中文字 2. 將所有功能性文字刪除

3. 依文字出現順序選出前後相鄰的中文字以組成詞鍵

4. 計算詞鍵頻率並計算其語意強度,語意強度代表的是一個由二中文 字組成的詞鍵含有完整語意的強度,

5. 決定臨界頻率與臨界語意強度以篩選出欲納入索引的詞鍵

假設讀入的資料為「電腦的世界是多采多姿的。」,則系統會判別出「的」、

「是」與「。」皆屬於功能性文字,而「電」、「腦」、「世」、「界」、「多」、「采」、

「多」及「姿」為非功能性文字。接著系統由非功能性文字產生出候選詞鍵如下:

「電腦」、「世界」、「多采」、「采多」與「多姿」。其中由於「腦」與「世」字中 間被一個功能字隔開,故不列入於候選詞鍵中,同理可知「界多」亦不被列入。

最後經過計算詞鍵頻率與語意強度並篩選之後,我們應可從「電腦的世界是多采 多姿的。」文句中擷取出正確且語意強度夠高的詞鍵:「電腦」、「世界」、「多采」、

與「多姿」。

語意強度可以利用下面的公式計算得到:

足夠代表該文件的詞鍵。我們利用傳統資訊擷取的公式來作詞鍵在文件中的權重 計算,公式如下:

方程式 6:詞鍵在文件中的權重計算公式 [Kowalski97]

其中 wij代表詞鍵 j 在文件 i 中的權重,權重越高表示該詞鍵越能代表該文件 的內容。tfij代表詞鍵 j 在文件 i 中出現的次數,dfj則是出現詞鍵 j 的文件數量。

tfij代表的意義是提高出現次數較多的詞鍵權重,但考慮到有些詞鍵是很常見且並 非對該文件有特別意義,故加入了

dfj

log N 來減低在很多文件中皆出現的詞鍵權

重。

綜合以上所述,在經過斷詞切字後,每一個文件皆可找出足以代表文件內容 且語意夠強的詞鍵,稱為文件描述子(Document Descriptor)。當我們針對文件下 檢索關鍵詞時,即可根據這些文件描述子來找到感興趣的文件資料,不需要再根 據全文資料去作檢索。

3.2.2 結構索引

圖 7:XML 文件範例

處理完斷詞切字的程序後,接著必須將文章的階層式架構轉換成文件樹狀結 構(Document Tree Structure),最後利用 K-ary Tree 的概念將每一個分析出來的節

<?xml version=”1.0” encoding=”big-5”?>

<?xml-stylesheet type=”text/xsl” href=”show_book.xsl”?>

<叢書>

<書籍>

<作者>張三</作者>

<書名>Linux 白皮書</書名>

<出版年>1999</出版年>

</書籍>

</叢書>

j ij

ij df

tf N w = ×log

點皆配置一個 UID。我們使用微軟的 XML Parser 來作為結構化文件的結構分析 工具,XML Parser 可分析出結構化文件的節點資訊,以圖 7 之 XML 文件為例,

XML Parser 會將該結構化文件展開成圖 8 之樹狀結構圖,其中以方框框起來的 表示資料而非節點資訊。

圖 8:XML 樹狀結構圖

在此一 XML 文件中,XML Parser 根據結構化文件階層式的特性將每一個節 點都分析出來並存放於一個樹狀結構中。如圖 8 所示,「叢書」是整個樹狀結構 的根節點(Root Node),「書籍」則是其子節點,同樣地「書籍」本身亦擁有多個 子節點,每一個子節點則分別擁有不同的資料。

圖 9:UID 配置演算法

藉 由 XML Parser 的 分 析 , 可 得 到 一 個 文 件 樹 狀 結 構 (Document Tree 叢書

└書籍

├作者

│ └張三

├書名

│ └Linux 白皮書

└出版年 └1999

CurrentLevel = 0;

CurrentBrahch = 0;

Function Traverse(Node p){

IF (ChildExist(p) && NotVisited) { // 檢查是否存在尚未配置過的子節點 CurrentLevel ++;

CurrentBranch++;

// 根據 CurrentBranch 跟父節點的 UID 配置此節點之 UID

p.UID = MaxBranch*(p.parent->UID-1)+CurrentBranch+1;

Traverse(p.child[CurrentBranch]); // 往下處理第 CurrentBranch 個子節點資訊 } ELSE

Traverse(p.parent); // 跳回父節點繼續處理 }

表示資料

Structure),我們再根據深度優先搜尋法(Depth First Search)瀏覽整個樹狀結構並 配置 UID,將原始的樹狀結構轉換成為 K-ary Tree,即可完成結構化文件之索引。

以圖 7 之文件為例,首先得知其最大分支數為 3,故必須將之對應至一個 3-ary Tree 上面。利用深度優先搜尋法配置 UID 的演算法如圖 9 所示。

根據 K-ary Tree 的特性,只要知道本身節點的 UID 即可計算子節點的 UID,

公式為child(i, j)=k(i−1)+ j+1,其中 i 表示此節點的 UID,j 表示欲計算第 j 個子節點的 UID,而 k 表示最大的分支個數。以<作者>節點為例,欲配置<作者

>節點之 UID,則必先取得父節點<書籍>之 UID 為 2,且<作者>為<書籍>節點的 第一個分支節點,故<作者>節點之 UID 為 3(2-1)+1+1=5。以圖 7 為例,最後配 置完成的 UID 如表格 3 所示。

節點 UID 叢書 1 書籍 2 作者 5 張三 14 書名 6 Linux 白皮書 17

出版年 7 1999 20 表格 3:UID 配置結果

配置完成 UID 的動作後,必須將所有分析過的文件資料儲存起來,我們使 用的資料結構為(DID, UID, Level, Element Type, Content)。以圖 7 為例,最後真 正儲存成索引的資料如表格 4 所示:

DID UID Level Element Type 節點 1 1 1 Root 叢書 1 2 2 Element 書籍 1 5 3 Element 作者 1 14 4 Text 張三 1 6 3 Element 書名 1 17 4 Text Linux 白皮書 1 7 3 Element 出版年 1 20 4 Text 1999

表格 4:最後儲存索引

3.2.3 語意索引

傳統的語意索引方法將兩兩詞鍵用語意相似性串連起來,進而建構成一個兩 兩相連的網路脈絡,實際的呈現方法稱之為「語意矩陣(Semantic Matrix)」或「語 意網路(Semantic Network)」。使用者可以藉由一個詞鍵來瀏覽網路脈絡中與之相 似性高的其他詞鍵。以圖 10 為例,以「數位圖書館」為中心,可找出較相關的 幾個詞鍵:「電子圖書館」、「內容管理」、「資訊擷取」、「知識管理」以及「網際 網路」。

在圖 10 中由「數位圖書館」指出去的箭號代表著和「數位圖書館」語意相 關之其他詞鍵的權重,權重越高則表示其語意關連性越強,值得注意的是,在語 意相似網路中箭號是有方向性的,亦即「數位圖書館」相對於「資訊擷取」的權 重,並不一定等於「資訊擷取」相對於「數位圖書館」的權重。

圖 10:語意關連性示意圖

傳統語意索引的概念可以幫助使用者找到文件中詞鍵與詞鍵的相似性,應用 在結構化文件上亦可得到相同的功能,但在傳統文件中建置索引的方法乃是利用 詞鍵在文件中出現的頻率以及出現的文件總數做權重計算,沒有將結構化文件的 階層式資訊考慮進去,當使用者下了一個檢索關鍵詞,系統只能找出與該檢索關 鍵詞語意相近的「文件」,而非在找出語意相近的「元素」。

有鑑於此,本文提出一個新的權重計算方式將結構化文件的階層式資訊考慮 進來。在斷詞切字的處理流程中,我們不儲存詞鍵出現在文件中的頻率,改成儲

數位圖書館

知識管理 網際網路

資訊擷取

內容管理

電子圖書館 0.76

0.79 0.93 0.86 0.83

存詞鍵在每一個元素中出現的頻率,並在計算權重的地方做了些調整。原始相似

j WeightingFactor T

d

度。樹狀結構中越上層的元素代表著越廣泛的範圍,越底層的元素則會具有較精 來作相似性權重計算。此時會衍生出一個問題:tfe 與 ef 的元素層(Element Level) 資訊是否能由下而上地還原且滿足文件層(Document Level)的資訊?

由方程式 8 中可得知欲還原文件層的資訊,則公式中必須使用到 tf 以及

文件 1 文件 2 E1 E2 E3 E4 E1 E2 E3 詞鍵 1 0 2 1 0 3 6 0 詞鍵 2 0 0 0 2 0 0 1

表格 6:詞鍵頻率表格

由表格 6 中可看出詞鍵 1 在文件 1 的各元素中出現的頻率分別為 0、2、1 以及 0,故可以很快地累加得出詞鍵 1 在文件 1 出現的頻率為 0+2+1+0=3,同理 可得詞鍵 2 在文件 1 中的出現頻率為 2。我們只需要利用簡單的計算即可將「元 素中詞鍵的出現頻率(tfe)」還原至「文件中詞鍵出現頻率(tf)」。

詞鍵之文件頻率累加演算法如圖 11 所示,我們利用一累加器來計算「出現 詞鍵的文件數量(df)」,針對每一篇文件的每一個元素中詞鍵的出現頻率作檢查,

若出現頻率大於 0 則累加器加 1,並跳至下一篇文件作處理。以表格 6 為例,

若出現頻率大於 0 則累加器加 1,並跳至下一篇文件作處理。以表格 6 為例,

相關文件