:::

PHP文內關鍵字索引全文資料庫 / PHP KWIC Database

image

這個PHP KWIC Database是我在進行文本分析研究中的一個產物。文內關鍵字索引(Key Word In Context)的做法是將檢索的關鍵字擺在查詢結果中間,前後呈現該關鍵字的前後文。這不僅只是拿來搜尋具有該關鍵字的文本,還能夠進一步知道該關鍵字在這些文本中的用法。在許多人文研究中,具備引得查詢資料庫是非常重要的研究工具,許多語料庫(corpus)都有提供。可惜的是,現在許多全文檢索系統都沒有實作引得,包括Apache Solr。所以我在2016年年初的研究中順手寫了這個PHP KWIC Database,並將之整理成框架,讓大家能夠簡單地使用Excel整理文本資料後,並利用Convert to SQLite Online將Excel檔案轉換成SQLite資料庫,就能夠並使用PHP KWIC Database來進行檢索與分析。


什麼是文內關鍵字索引? / What is Key Word In Context?

image

文內關鍵字索引(Key Word In Context, KWIC)是一個包含單一文字或是檢索關鍵字的列表,通常會一併呈現出檢索結果的行數與檔案名稱。KWIC會將檢索關鍵字置於搜尋結果的中間,而左右顯示固定長度的前後文字結果。

KWIC最早是由化學摘要(Chemical Abstracts, CA)所提出,常常用於聖經解讀上,是引得索引(concordance)最常見的表現形式。詳細介紹請看中國大百科全書智慧藏的「關鍵詞索引」

concordance

(圖片來源:Corpus Linguistics)

Windows的文本語料分析工具AnConc有著標準的KWIC檢索功能,如上圖所示,關鍵字「hand」被置於搜尋結果中間,以藍色標示,而左右鄰接的文字被標示紅色綠色,其他則是該字周圍的上下文。

7028265057_898ef4f697

(圖片來源:Concise Tutorial: 脈絡化的關鍵字 Concordance(Keyword in Context))

Concise也有提供KWIC的功能,請見Concise Tutorial: 脈絡化的關鍵字 Concordance(Keyword in Context)的介紹。

雖然PHP KWIC Database沒能把KWIC排版得很齊,但也算是派得上用場了啦。


程式碼下載 / Code Repository

image

PHP KWIC Database原始碼已經保存GitHub當中。

系統需放在支援PHP的伺服器中,例如Apache網頁伺服器或是它的包裝版本XAMPP。它本身需要搭配一個SQLite的資料庫:PHP KWIC Database.sqlite

資料建置 / Data setup

image

為了方便大家使用,我為PHP KWIC Database增加了從Excel匯入資料的方式。大家可以用比較容易操作的方式建置屬於自己的系統。

Excel檔案 / Excel format

image

這個資料表包含了七個欄位:

  • id:系統編號主鍵,數字不能重複。
  • title:文件標題。
  • authors:作者。
  • date:日期。請以「2017/10/26」的格式填寫。
  • fulltext:文本的全文。

如果文本的全文是PDF檔案,我會建議將它轉換為HTML,在將HTML的全文儲存在fulltext中,請見「用Acrobat Pro把PDF轉換成HTML:AutoIt一鍵轉換方案」。

如果文本的全文是網頁上的內容,你可以使用Google試算表的importHTML函數來匯入網頁內容,或是使用importXML()函數來匯入網址中指定位置的內容。做法請見「無痛爬梳自己來,用 Google Spreadsheet 爬取網頁資料」。

image

我們可以在Google試算表上編輯或新增資料庫的內容,最後下載成Excel檔案:「PHP KWIC Database.xlsx」。當然,你也可以先把檔案下載到自己的電腦再來編輯。

Excel轉換成SQLite / Convert Excel to SQLite

image

先在File to Convert的地方選擇準備好的Excel檔案「PHP KWIC Database.xlsx」,打勾「First Row Contains Column Names」,然後按下「Upload」按鈕。但是資料量過大可能會轉換失敗,

image

接著網頁會先顯示轉換結果的摘要,讓我們把網頁往下移。

image

按下「Convert!」按鈕。

image

這樣就會取得SQLite資料庫「PHP KWIC Database.sqlite」,請把它放到PHP KWIC Database的目錄底下,取代原本的「PHP KWIC Database.sqlite」。這樣就完成了!

系統設定 / Configuration

<?php
$CONFIG = array();
$CONFIG["title"] = "PHP Keyword In Context (KWIC) Database";
$CONFIG["hint"] = "請輸入關鍵字,例如:「文本」。";

PHP KWIC Database的系統設定都在config.php裡面,但目前只有設定標題與提示而已,並沒有很多可客製化的功能。


系統使用說明 / Usage

image

PHP KWIC Database的使用方式很簡單。網頁打開來就是三種欄位的搜尋功能:「全文關鍵字」、「標題」與「作者」。請至少在一個欄位輸入資料,然後按下「查詢」就能得到檢索結果。

舉例來說,我們在「全文關鍵詞」輸入「文本」來查詢看看。

image

下面就會出現引得檢索的結果。這邊可以看到檢索關鍵字「文本」被放在檢索結果的相關內文裡面,而且「文本」這個字會被盡量擺在中間,前後是文件中有「文本」關鍵字出現時的前後文。我們可以點下標題來查看全文內容。

image

這裡就會直接顯示全文的內容。我們可以使用瀏覽器的搜尋功能來看看「文本」這個字會出現在哪裡,以便繼續深入研究。


小結 / In closing

一開始聽到KWIC這個詞的時候,是在圖書資訊學相關課程裡面。但課程中只有稍微帶過這個詞,KWIC偶爾會出現在考題中,生活中倒是很少碰到。一般生活中用的都是單純關鍵字索引,能像Apache Solr這樣做到關鍵字搜尋結果標亮,已經是很不錯的程度了。

直到我開始分析文本之後,我才發現傳統的檢索界面完全無法滿足我的需求。舉例來說,在分析文本的時候,可能常常會發現某個關鍵詞。以我的blog來說,例如我有時候會講「文本」,有時候又會講「文件」,有時候講「文字」。這三個詞到底有什麼不同?我在blog中到底是怎麽用這些詞?這些詞的旁邊通常會出現什麼詞?

image

(圖片來源:Google)

傳統的搜尋引擎只會找出具有該關鍵字的文件,給予作者、題名、連結等資訊,至多就是部分的關鍵字周圍的內文。但若該關鍵字在文件中出現許多次,傳統搜尋引擎也頂多給你一到二個結果而已。

image

這時候,使用KWIC,研究者就能看到這個關鍵字在每個文本中如何使用的完整結果。若關鍵字在某些文件出現次數相當多,KWIC也會一行一行地把結果呈現出來,鉅細靡遺地讓研究者知道關鍵字的上下文,這樣研究者就能夠對該關鍵字進行更深入的分析。

image

更重要的是,如果只是簡單地想要做一個全文檢索網站的話,PHP KWIC Database其實比架設Apache Solr還要簡單呢!你只要會在Excel中輸入資料,就能夠把它建立成完整的全文資料庫囉。


這篇談PHP KWIC Database就到此為止了。你是否也用過KWIC的檢索系統呢?你對KWIC的感想如何呢?你會不會也想要用Excel試算表來架設全文檢索系統呢?如果有這樣的系統,你會想要拿來分析什麼資料呢?歡迎在下面的留言處與我分享你的想法,或是在AddThis分享工具按讚、分享到Facebook等社群媒體吧!感謝你的耐心閱讀,讓我們下一篇見。