三、 系統分析與設計
3.2. 前置處理模組
建立索引前之首要工作在於將雜亂無序的敘述資料,經過整理,成為系統所需 資料,若無此項程序,則系統較不易處理資料,且易造成檢索成效不彰之結果,因 此,資料前置處理便顯得格外重要。MIRS 所進行之前置處理程序包含成語資料的 準備,斷詞切字、詞性標示、去除標點符號、去除停用字、關鍵字合併、文件特徵 挑選及產生詮釋資料等步驟,其流程如圖 3-4 所示。
圖 3-4 前置處理流程圖
3.2.1.
成語詮釋資料格式
成語文件是藉由詮釋資料來描述整份文件內容,這些詮釋資料是透過自動處理 機制分析,拆解,以及擷取方式得到。此詮釋資料是為了產生成語文件內容基本描 述,並給予一個唯一識別碼來表示,例如,此文件的識別碼(id),成語標題(title),
釋義(interpretation)等等。我們依據教育部成語典的成語資料內容,總共定義 10 個 標籤屬性,說明如下:
z id:系統給予唯一識別碼。
z title:成語標題。
z interpretation:成語完整的釋義描述,包含釋義、典源及典故等資訊。
z interpretationKey:釋義描述的關鍵詞集合。
z interpretationAlt:成語釋義的語義資訊。
z interpretationAltKey:釋義及語義資訊的關鍵詞集合。
z creationDate:文件建立日期。
z filepath:檔案相對位置。
Solr 安裝並不困難,下載 Solr 的 zip 包後解壓縮將 dist 目錄下的 war 檔改 名為 solr.war,接著複製到$TOMCAT_HOME\webapps 目錄並設置 Solr 主位置。
以本系統為例,是在 Tomcat 裡配置 java:comp/env/Solr/home 一個 JNDI 指向 Solr 主目錄,建立$TOMCAT_HOME/conf/Catalina/localhost/Solr.xml 文件,文 件內容下圖 3-5 所示。
圖 3-5 JNDI 配置內容
這個 Solr 主位置,裡面存在兩個重要目錄:conf 和 data。其中 conf 目錄存 放最重要的兩個配置檔 solrconfig.xml 和 schema.xml,前者是該索引服務的一些 屬性,比如索引檔存放目錄(預設為與 conf 同一層的 data 目錄),還有緩存,分 佈之類的一些設置;後者是索引庫的欄位定義,欄位類型,欄位名,處理方式。
詳細說明請參考 Solr Wiki6。
Solr 在預設的情況下只能搜尋英文,不能識別中文,Solr 內核支援 UTF-8 編碼,所以修改$TOMCAT_HOME\conf 裡的 server.xml 配置文件,在 8080 埠 定義的後面加上 URIEncoding="UTF-8",如圖 3-6 所示,如此才能識別 UTF8 編碼的中文輸入。另外,向 Solr Post 請求時需要轉為 UTF-8 編碼,返回的查詢 結果也需要進行一次 UTF-8 轉碼。檢索資料時對查詢的關鍵字也需要轉碼,並 用"+"符號連接。
圖 3-6 Tomcat 連接埠定義
6 Solr Wiki http://wiki.apache.org/solr/SchemaXml
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="solr" path="/solr" reloadable="true" debug="0"
crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="c:/tomcat/tomcat6/solr"
override="true" />
</Context>
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8" />
2. Solr schema 定義
<field name="id" type="text_ws" indexed="true" stored="true"/>
<field name="title" type="text" indexed="true" stored="true"/>
<field name="interpretationKey" type="text" indexed="true" stored="true" multiValued="true"
omitNorms="true"/>
<field name="interpretationAltKey" type="text" indexed="true" stored="true" multiValued="true"
omitNorms="true"/>
<field name="creationDate" type="date" indexed="true" stored="true"/>
<field name="filepath" type="text_ws" indexed="true" stored="true"/>
<field name="filename" type="text_ws" indexed="true" stored="true"/>
<field name="rating" type="sint" indexed="true" stored="true"/>
<field name="interpretationAlt" type="text" indexed="false" stored="true" multiValued="true"/>
<field name="interpretation" type="text" indexed="false" stored="true" multiValued="true"/>
圖 3-8 教育部成語典成語資料顯示格式
圖 3-9 教育部重編國語辭典成語顯示格式
3.2.4.
斷詞切字
詞彙是最小有意義且可以自由使用的語言單位。任何語言處理系統都必須先能 辨別文本中的詞才能進行進一步處理,例如機器翻譯、語言分析、語言了解、資訊 抽取。然而中文詞的結構,有單字詞、多字詞等多種不同型態,且中文文件中詞與 詞的界線不明;不像英文,極大多數都是一個詞(Word),就是一個意義單位(Meaning Unit),因此中文處理較英文困難,中文自動分詞的工作也就成了語言處理不可或缺 的技術。基本上自動分詞多利用詞典中收錄的詞和文本做比對,找出可能包含的 詞,由於存在歧義的切分結果,因此多數的中文分詞程式多討論如何解決分詞歧義 的問題,而較少討論如何處理詞典中未收錄的詞出現的問題(如何辨認新詞)。根據 統計,一般的文章中約有百分之三到百分之五的未知詞,因此一個演算法的未知詞
識別能力對於其分詞與標記的正確率將有很大的影響。中央研究院中文詞知識庫小 組(Chinese Knowledge Information Processing Group, CKIP)所研發之中文斷詞系統 (包含未知詞擷取與標記)提供了一個解決方案,可以線上即時分詞功能。為一具有
CKIP Client 專案8是將上述斷詞流程依不同程式語言實作,提供使用者方便使用 資訊造成雜訊干擾,因此將它們歸納於停用字一覽表(Stop word List)中,所以在前 置處理及搜索引擎檢索之前都要對所索引的資訊進行消除雜訊的處理。在文件內容
8 CKIP Client 專案http://ckipclient.sourceforge.net/
彙數量相當大,這代表敘述資料的向量之維度(dimension)相當大,但真正重要的詞 的雜訊詞(noisy term),而提升檢索效果。
根據中研院詞性標記表,將詞性分為四十七種詞類,其中以名詞及動詞所代表 敘述資料的向量之維度(Dimension)並不大,再者 Lucene 關鍵詞權重計算公式裡,
包含了 TFIDF 的計算,加上目前教育部所收集的成語大約有四萬多筆,資料量也不 算太大,因此我們選用詞性挑選及去除停用字來做為文件特挑選的處理。
3.2.8.
關鍵字合併
由於本系統在斷詞方面是採用中研院 CKIP 斷詞系統來進行處理,CKIP 在未知
XML 文件。底下介紹產生 XML 檔以又及建立索引的步驟:
1. 釋義資料萃取
由於教育部成語典及與重編國語辭典成語資料中,釋義欄位內容包含釋 義、典源、典故以及舉例說明等的資訊內容,為避免這些資訊造成的雜訊干擾 情況發生,因此,在進行斷詞之前,必須先將成語內容給予適當的處理,首先,
藉由標點符號用法,將內容重新斷句,之後透過人工方式將涵義資訊挑選出來,
並更新至資料庫。
2. 產生 XML 檔案
Solr 建立索引和查詢時得先進行字串的分詞,在向索引庫增加全文檢索類 型的索引時,Solr 會先用空格進行分詞,然後把分詞結果依次使用指定的篩檢 程式進行過濾,最後剩下的結果才會加入到索引庫中以備查詢。所以我們將萃 取出來的成語釋義資訊,透過 CKIP 斷詞系統進行斷詞切字,並將結果儲存在 系統中,接著利用特徵挑選的規則取出代表此成語文件的特徵詞,並對每個關 鍵詞以空白隔開建立 XML 檔,如圖 3-13。
圖 3-13 成語詮釋資料格式
3. 索引建立
將需要索引的資料組裝成 XML 格式後,接著使用 HttpClient 工具程式將資 料提交到 Solr 的 Http 介面,例如:http://localhost:8080/solr/update,也可以參 考 Solr 安裝程式所包含提交 XML 檔建立索引的工具包 post.jar9來實現。本系統
9 Solr 測試範例目錄位置 apache-solr-1.3.0/example/exampledocs
是利用 post.jar 發送 Http 請求給 Solr Web 建立索引10。