• 沒有找到結果。

第四章 知識標註學習系統

第一節 系統介紹

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y 第四章 知識標註學習系統

本研究發展與探討的核心重點──知識萃取機制,是架構在本研究所發展的 合 作 式 閱 讀 標 註 系 統 ─ ─ 知 識 標 註 學 習 系 統 ( Knowledge-based Annotation Learning System,以下簡稱 KALS)上的一個機制,為本研究最重要的研究工具。

本章將針對 KALS 運作的細節進行詳細介紹,並概述它的系統開發環境、系統架 構、開發工具,並且說明本研究實驗過程中的 KALS 運作流程與操作畫面。

第一節 系統介紹

KLAS 是本研究基於合作式閱讀標註系統設計理論的文獻探討,以 AJAX

(Asynchronous JavaScript and XML,非同步 JavaScript 與 XML)模式運行,採 MVC(Model-View-Controller)架構設計所開發的一套標註工具。

KALS 本身具備合作式閱讀標註系統的各種特點,並適用於任何支援全球資 訊網協會(World Wide Web Consortium,簡稱 W3C)標準的網頁瀏覽器。可讓 讀者在任意網頁文字上進行標註撰寫與管理的動作,多位讀者之間也能夠分享標 註,並針對標註進行討論、或是加入喜愛清單等評分功能。除此之外,KALS 與 一般合作式閱讀標註系統最大的差異,在於具備了本研究發展的「知識萃取機制」, 該機制能夠依據標註特徵與標註共識判斷標註的重要度,依此產生標註技巧建議、

推薦優質標註,以促進讀者閱讀理解能力的提升。

在應用上,KALS主要以混搭(mashup)的形式安裝於任何提供靜態網頁的 網站中,可使得原本只是單純提供網頁資料的網站具備合作式閱讀標註的互動功 能。而KALS的程式則是以BSD授權條款(Berkeley Software Distribution license)

發佈,採開放原始碼模式供人下載取用,以作為有興趣於閱讀標註研究者進一步 開發與應用。KALS專案的網址為:https://sites.google.com/site/puddingkals/。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y 第二節 系統開發環境

一、 程式語言

KALS 主要是由伺服器端(後端)程式語言 PHP 與使用者端(前端)程式 語言 JavaScript,並輔以 HTML 與 CSS 等網頁與樣式程式語言發展而成。PHP 與 JavaScript 是現今網頁應用開發知名的程式語言,有許多以這兩者為基礎發展 的框架(framework)或函式庫(library)可取用,而 KALS 也利用它們來提升 大型系統與複雜功能的開發效率。以下概要地介紹這兩種 KALS 主要使用的程式 語言及其應用的框架與函式庫。

(一) 伺服器端程式語言 PHP

PHP 是一種多用途的程式語言,其中網頁開發應用則是它最廣為人知的用途 (The PHP Group, 2011)。傳統對於 PHP 的印象多處於嵌入在 HTML 網頁中運行 的腳本程式(scripting)。但到了 PHP 第五版之後,它的物件導向功能趨於完善。

受惠於物件導向功能的靈活性,以 PHP5 開發大型網頁系統變得相當容易,而 CodeIgniter(EllisLab, Inc., 2011)則是這些系統開發經驗與設計模式的集合精華,

同時也是廣受 PHP 開發者喜好的一套 PHP 框架。

CodeIgniter 的目的在於讓 PHP 開發者簡單且有效率地建置功能完善的網頁 應用系統。它提供了一套大型系統常用的 MVC(Model-View-Controller)開發架 構,並具備清楚明瞭的說明文件,指導開發者如何利用 CodeIgniter 進行開發。

大部分的系統運作細節,包括各種資料庫存取、session 管理,都在 CodeIgniter 函式庫的包裝之下而讓程式開發者能夠輕易地使用,也就更能專注於系統架構的 運作邏輯(business logic,常稱之為「商業邏輯層」)。

KALS 基於 PHP 5.2.8 版本,並搭配 CodeIgniter 1.7.2 框架來開發,利用這些 程式語言進行資料庫存取、計算複雜資料、與中文斷詞系統(CKIP)進行資料

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

交換的溝通,以及作為 AJAX 架構中負責接受與回應資料的角色。

(二) 使用者端程式語言 JavaScript

JavaScript 是用於使用者端的程式語言,運作於支援 W3C 標準的任何瀏覽器 中。傳統程式開發的觀點中,JavaScript 通常是被當作用來設計網頁上花俏功能 的程式語言。然而到了 AJAX 盛行的現在,JavaScript 的價值逐漸受到廣泛的重 視。其自身擁有的物件導向功能、跨瀏覽器、變更網頁元素 DOM(Document Object Model)的操控能力,有助於程式開發者實現了許多顛覆前人想法的創新應用。

然而,JavaScript 在不同瀏覽器上運作時,由於編譯引擎的不同,往往會有語法 上的差異。而其本身在複雜應用開發上,也需要撰寫冗長且龐大的程式。為了降 低跨瀏覽器的複雜度、簡化原本 JavaScript 的語法,用於各種目的的 JavaScript 函式庫便應蘊而生。

jQuery(The jQuery Project, 2010)是知名的 JavaScript 函式庫之一。就如它的 標語「寫得少,做得多」一樣,它大幅地簡化了 DOM 操控、事件處 理(event handle)、

動作製作以及 AJAX 互動的語法,讓開發者不再需要去煩惱跨瀏覽器的細節問題。

基於 jQuery 的擴充功能之上,jQuery TOOLS 則是提供了一套現代網站常見的使 用者介面(user-interface)函式庫。它的覆蓋框(overlay)與提示框(tooltip)等 工具,讓開發者得以輕易地建構出美觀多樣化的網際網路應用程式(Rich Internet applications,簡稱 RIA)。除此之外,網頁所見即得編輯器 CKEditor(CKSource, 2011)、減少 JavaScript 程式檔案大小的壓縮打包器(Edwards, 2010)也都是開發大 型系統時不可或缺的重要工具。

在 jQuery 1.4.2 與 jQuery TOOLS 1.2.3 等函式庫的協助之下,KALS 以 JavaScript 開發出實驗對象在網頁上看到的所有標註功能與介面,包括在靜態網 頁上整合標註功能,以及讓靜態網頁能夠進行標註的撰寫與讀取等動作。然而必 須注意的是,不同使用者端的瀏覽器與電腦等級下使用以 JavaScript 程式運作的 功能,在運作效率上會有相當大的差別。為了讓本研究所規劃的實驗能夠順利進

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

行,本研究在實驗說明時指示實驗對象安裝運作效率最佳的 Google 瀏覽器來使 用 KALS 進行合作式閱讀標註。

二、 伺服器

本研究架設 KALS 伺服器的作業系統是 Windows 7 企業版,並在該作業系 統環境下安裝 XAMPP 1.7.0 套件與 PostgreSQL 8.3.13,以提供 PHP 執行環境、

Apache 網頁伺服器、資料庫管理系統等功能。除了作業系統之外,上述套件皆 具備開放原始碼與跨作業系統平臺等特性,可輕易且免費地在網路上下載,並安 裝到任意平臺中。

有別於一般常見的 Apache、PHP 與 MySQL 組合,本研究使用了 PostgreSQL 作為保存、管理讀者標註資料的資料庫系統。PostgreSQL 是一個具備企業等級 的 強 大 資 料 庫 系 統 , 以 開 放 原 始 碼 授 權 , 為 物 件 導 向 式 的 關 聯 式 資 料 庫 (PostgreSQL Global Development Group, 2011) 。 有 賴 於 PostgreSQL 的 交 易

(transaction)、視圖表(view)、全文檢索(full text search)與可程式化的觸發 器(trigger)等完善的功能,讓 KALS 能夠穩定、安全且有效率地存取大量的讀 者 閱 讀 標 註 資 料 。 而 在 PostgreSQL 的 管 理 上 , 也 有 pgAdmin(pgAdmin Development Team, 2010)這個操縱簡便的圖形化介面工具可以使用。最重要的是,

基於 BSD 授權條款發佈的 PostgreSQL 能夠自由地用於個人、學術、甚至商業領 域,而完全不需收費。

三、 開發工具

KALS 在開發的過程中使用了多種工具來規劃、控管進度、說明程式內容、

以及輔助程式碼的撰寫。以下介紹 KALS 主要使用的類別圖、程式註解文件與整 合開發環境工具。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

(一) 類別圖(Class Diagram)

類別圖是統一塑模語言(Unified Modeling Language,簡稱 UML)中的一種 圖形。對於以物件導向設計的 KALS 來說,在實際撰寫程式碼之前,可以利用類 別圖來對系統進行概念性的建模(conceptual modeling),用來規劃各個類別的屬 性與方法、以及類別與類別之間的關係。在建模的過程中,複雜且糾結的分工架 構會被逐一釐清,這使得程式碼撰寫時能夠更為單純且清楚。而在程式開發的過 程中,類別圖也能夠作為開發進度的具體呈現,讓研究者知道哪些類別已經完成、

還有哪些類別尚未完成。圖 4 - 1 是 KALS 模型元件中 KALSResource 系列的類 別圖,係採用開放原始碼工具 StarUML(StarUML Project, 2005)繪製而成。

圖 4 - 1 知識標註學習系統中 KALSResource 的類別圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

(二) 程式註解文件

為了讓 KALS 的程式碼更容易為程式開發者所閱讀並適用於整合開發環境,

KALS 在 PHP 與 JavaScript 這 兩 種 程 式 語 言 的 撰 寫 上 , 各 別 採 用 了 PHPDoc(Eichorn, 2007)與 JSDoc(Eschen, 2008)兩種程式註解文件來撰寫程式碼的 說明。PHPDoc 與 JSDoc 皆仿效自知名的 JavaDoc,以內含敘述與標籤的文件塊

(DocBlock)格式撰寫,主要用於說明物件導向設計中的屬性與方法,包括用途 敘述、輸入參數、回傳資料型態等等的細節。

(三) 整合開發環境

KALS 的程式碼撰寫作業主要是利用整合開發環境(Integrated Development Environment,簡稱 IDE)進行。在以輔助程式開發作為主要目的的特色上,IDE 提供了程式碼辨識與標亮、類別瀏覽器、自動完成(auto-complete)、語法偵錯、

程式自動排版等多種功能,有助於程式撰寫作業能夠保持準確、簡潔與提昇效率,

並且方便維護整個系統。

由於 IDE 支援各種程式語言的程度不一,KALS 在開發過程中同時使用兩種 開放原始碼的 IDE:後端程式語言 PHP 使用 NetBeans 6.9 (Oracle Corporation, 2011),如圖 4 - 2 的開發過程畫面;而 JavaScript 的撰寫則採用 Aptana Studio 2 (Aptana, Inc., 2010)。

第三節 系統架構

KALS 是一種以物件導向設計、採 MVC 架構的大型網頁應用系統。為了將 合作式閱讀標註功能整合到資料網站,KALS 主要採 AJAX 模式溝通資料。以下 各別介紹 KALS 的架構設計、佈署環境以及各元件的設計概況。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4 - 2 NetBeans 整合開發環境的開發過程畫面

一、 架構設計

KALS 的程式採用物件導向設計(Object Oriented Design,簡稱 OOD)。各 種功能會被撰寫成包含資料屬性(attribute 或 property)與行為方法(method)

的類別(class)。類別之間可利用繼承機制(inheritance)以提高程式的重用性,

並搭配多載(overload)與重載(override)等機制來實現靈活的擴充性。

為了能更有效率地開發系統,KALS 參考了許多物件導向設計專家提出的設 計模式(Gamma, Helm, Johnson, & Vlissides, 1995; Eric Freeman & Elisabeth Freeman, 2005)。其中 KALS 最主要採用的,是常見於大型系統中的複合設計模 式 MVC (Model-View-Controller; Reenskaug, Wold, & Lehne, 1996)。KALS 以 MVC 架構將系統權責分離成模型元件(Model)、顯示元件(View)與控制元件

(Controller)三種,以利程式的修改與簡化、降低程式之間的耦合度(Degree of Coupling),並且提高重複利用的價值。

二、 佈署環境

在說明各個元件之前,必須先介紹 KALS 的佈署環境,以便瞭解上述三種元 件的定位。KALS 設計的主要目的之一,是以混搭形式在任意網頁上提供合作式

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

閱讀標註功能的服務。參考 Wolfe(2002)的建議與 Chen 等人(2008)所提出的系統 架構,KALS 的系統架構與佈署環境規劃如圖 4 - 3 所示。包括 KALS 在內,KALS

閱讀標註功能的服務。參考 Wolfe(2002)的建議與 Chen 等人(2008)所提出的系統 架構,KALS 的系統架構與佈署環境規劃如圖 4 - 3 所示。包括 KALS 在內,KALS