• 沒有找到結果。

第三章 研究方法與設計

第二節 系統架構

本研究以實驗法進行,其控制變項為製作索引之欄位,評估不同索引組成對 於圖書搜尋結果之影響。本研究 利用開放原始碼(Open Source)的搜尋引擎 Lucene(http://lucene.apache.org)作為實驗圖書搜尋系統。

31

圖 3- 2 系統架構圖

圖 3-2 為本研究實驗之圖書搜尋系統架構圖,主要之模組為 XML 檔案處理 (XML parser)、書籍資料庫(Text Database)、字詞前置處理(Text Operations)、索 引建置(indexing)、搜尋與結果排序(search and Ranking)、搜尋結果重新排序 (Re-Ranking Module)等五個部份,分述如下。

一、

XML 檔案處理

依前一節所述,本研究主要使用 INEX 2013 書籍搜尋任務的資料集,其資 料集包含書籍資料、主題和相關判斷,其中書籍資料和主題均是以 XML 的檔案 格式提供,因此,正確讀取 XML 檔案中的資料,供後續實驗使用,就是相當重 要的步驟。

Dom4j(http://dom4j.org)是一套由 yxymedia(http://www.yxymedia.com)開發,

並免費開放使用的 java 程式套件,用於處理 XML 檔案。本研究使用 dom4j 套件

32

中的 SAX(Simple API for XML)工具解析(parse)所有的 XML 檔案,將所有的資料 讀取並寫入 MySQL 資料庫。

二、 書籍資料庫

於上一步驟中處理之 XML 檔案,將取得資料寫入 MySQL 資料庫以建立語 料庫,並進行第三正規化(third normal form, 3NF)處理,資料庫之外來鍵(Foreign Key)參考圖如圖 3-3。

圖 3- 3 書籍資料庫外來鍵參考圖

資料來源:本研究整理

三、 字詞前置處理:

字詞前置處理之主要目的在於過濾語料庫中不必要的字詞與雜訊,以避免這 些低代表性的字詞降低搜尋之正確性。本研究的前置處理步驟包含:斷詞切字、

33

詞幹處理、刪除停用字等。

(一) 斷詞切字和詞幹處理

斷詞切字(Tokenization)的目的在於找出文字的分界並從文字資料中擷取含 有意義的詞。由於本研究所使用之資料,是 INEX 2013 擷取自 Amazon 的書籍資 料,全部是為英文,並不包含其他語言資料。本研究採用 Lucene 內容的標準分 析器(Standard Analyzer),以空格和標點符號來區隔句子和單字。

在英文文件中有許多的名詞、動詞會以不同的型態出現像是單、複數型態,

或者現在式、過去式…等,但實際上它們的字義都相同,如果不加以處理的話,

在進行資訊檢索的過程中它們便會被視為不同的字,大幅增加檢索運算時間,因 此本研究在進行斷詞切字時,同時採用 Porter Stemming 演算法(Porter, 1980)進行 詞幹處理,以降低英文詞類變化對搜尋的影響。

(二) 刪除停用字

在自然語言(natural language)中,都有一些功能性、連結性的字詞,例如英 文中的冠詞、介系詞、連接詞。這些字詞由於出現頻繁,本身又沒有什麼意義,

因此在大多數的搜尋引擎中,會以停用字處理來去除這些字詞對於搜尋的影響。

本研究中停用字的處理,是利用 Lucene 內建的停用字引擎去除停用字,列 表如表 3-10。

表 3- 10 Lucene 停用字列表

四、 索引建置

對 XML 檔案進行索引,是本系統最重要的工作之一。本研究使用 Lucene

"a", "an", "and", "are", "as", "at", "be", "but",

"by","for", "if", "in", "into", "is", "it","no", "not",

"of", "on", "or", "such","that", "the", "their", "then",

"there", "these","they", "this", "to", "was", "will",

"with", "from"

34

來進行搜尋任務,然而 Lucene 並非設計為 XML 索引的工具,因此必須將語料 庫中的資料,以 Lucene 的工具建置為 Lucene 可進行搜尋的索引檔案。Lucene 建置索引的流程如圖 3-4 所示。

圖 3- 4 索引建置流程圖

資料來源:https://lucene.apache.org/core

如圖 3-4 所示,Lucene 建立索引的基本單位是文件(Document)。文件是由欄 位(Fields)組成,欄位則是由名稱(name)、內容(value)、加權參數(boost)組成。在 下述實驗索引中,文件代表一本書籍,欄位則是索引的名稱,而欄位的內容則是 由該本書籍的各項資料組成。

本研究將 INEX 所提供的書籍資料依實驗的目的,分兩次製作索引,第一次 索引主要為分辨社群資料和傳統書籍資料對圖書搜尋的影響,索引所包含的 Field 如下:

(一) Title:只以書名欄位的資料製作索引。

(二) Biblio:圖書館傳統索引的書目資料,包含書名、作者、主題、分類號 等欄位。

(三) All:所有書籍資料的內容。

(四) Review:由使用者產生的書籍評論資料,主要為擷取自 Amazon 的書籍 評論,不加任何的權重調整參數。

(五) ReviewHelpful:由使用者產生的書籍評論資料,加上其他使用者投票 為有用的次數(<helpfulvotes>)來調整評論的權重。

(六) ReviewHelpful-Total:由使用者產生的書籍評論資料,加上其他使用者 投票為有用的次數除以所有的投票數(<totalvotes>)來調整評論的權

35

重。

(七) Tag:僅有擷取自 LibraryThing 的社會標記,不加任何的權重調整參數。

(八) TagCount:擷取自 LibraryThing 的社會標記,加上該社會標記被標記在 該本書籍的次數(取自 tag 的屬性 tagCount)來調整權重。

第二次的索引,則為了處理社會標記的圖書搜尋的影響,依社會標記被標記 於圖書中的次數,設定兩個過濾標準,來篩選社會標記製作索引。其一為 1,另 一為社會標記平均被標記的次數 2.73。依照這兩個標準,以社會標記製作另一 個索引,索引的 Field 如下:

(一) TagF1:篩除被標記次數為 1 的社會標記,以其他的社會標記製作索引。

(二) TagFM:篩除被標記次數低於平均數 2.73 的社會標記,以其他的社會 標記製作索引。

五、 查詢詞

本研究所使用之主題中,包含<query>、<title>、<group>、<narrative>等四 個主要的欄位內容,其中<query>為 INEX 主辦單位以人工方式根據主題內容所 定出之查詢詞。因此在本研究之各實驗中,將分別使用長查詢以及短查詢,其內 容包含如下。

(一) 長查詢:主題中四個主要的欄位的內容。

(二) 短查詢:主題中的<query>欄位內容。

六、 搜尋與結果排序

本研究使用 Lucene 來進行搜尋任務,在索引建置完成之後,則是使用 Lucene 的搜尋工具進行搜尋。Lucene 搜尋的流程如圖 3-5 所示。

36

圖 3- 5 搜尋流程圖

資料來源:https://lucene.apache.org/core/

如圖 3-5 所示,Lucene 搜尋的第一個步驟是解析查詢字串(parse query String),也就是將檢索詞中的文字經過如 Index Analyzer 一樣的字詞處理過程(斷 詞切字、詞幹處理、刪除停用字等),並且將處理過後的字串,轉換成為 Lucene Query 的格式,傳送至 Searcher 進行搜尋。

Searcher 則會預先載入上一步驟完成的索引檔案,與查詢字串進行比對,並 將結果回傳,回傳結果則是依照不同檢索模型的相關分數由大至小進行排序。

七、 搜尋結果重新排序

依上一步驟圖 3-5 所示,在搜尋結果呈現與使用者之前,有一 results list 步 驟,在本步驟將搜尋所得結果,再加入社群相關分數調整其相關分數並進行重新 排序,調整公式如公式 3-1。

( ) (公式 3-1)

在公式 3-1 中, 是調整過後之相關分數,並據以重新排序搜尋結果。

則是調整參數, ( )則是上一步驟搜尋結果之相關分數。

則是以相同的查詢詞,搜尋社群資料後所得之相關分數。

37

相關文件