第二章 文獻探討
2.4 人工智慧程式語言 CLIPS
CLIPS 專家系統開發語言全名為 C Language Integrated Production System,
起源於 1985 年由 NASA 的 Johnson Space Center 所負責開發,目的是提供完整 的環境支援規則式專家系統的建構。CLIPS 以 C 語言寫成,因此具有良好的執 行速度,同時 CLIPS 可支援在不同作業系統上運行(包含:UNIX, Windows 等),
圖 2.1 專家系統架構 資料來源: (Negnevitsky, 2005)
19
並能嵌入程式碼作為副程式呼叫達到程式語言整合(包括 C、JAVA、FORTRAN 等)。CLIPS 也有提供 CLIPS.NET 的版本,讓開發者能迅速在.NET 平台上結合 CLIPS 的推論引擎以及開發規則式專家系統(Giarratano, 1993)。
CLIPS 支援專家系統的驗證與確認功能,包括知識庫模組化設計及分割、
儲格值(slot values)及函式引數(function arguments)的靜態及動態限制檢查、以及 規則語意分析。
CLIPS 是一種程式語言專用於開發規則式專家系統,而此類型系統是一個 旨在模擬人類專長或知識的程序,所以 CLIPS 提供大部分專家系統所需基本元 素,包含:(1)事實列表:全域資料存取;(2)知識庫:推論過程中所有規則,又稱 為規則庫;及(3)推論引擎:控制規則的整體執行
2.4.1
事實庫建立不同於其它程式語言,CLIPS 會自動辨識一些關鍵字,如需輸入資料之事 實庫只要使用 assert 指令,並可立即顯示輸入事實已進入推論引擎短期記憶並給 它標識符號為 1,如圖 2.2 為<Fact-1>。 CLIPS 會使用數字逐個增加方式為每一 個事實命名,同時在各個事實間建立索引連結。
CLIPS> (assert(duck-is quack))
==> f-1 (duck-is quack)
<Fact-1>
圖 2.2 CLIPS 加入事實
20
在開發過程中如有需要檢視事實庫,CLIPS 也提供功能讓開發者可以快速 查詢短期記憶內事實儲存現況,若是使用 CLIPS 支援使用者介面(GUI)版本,可 直接點選事實庫紀錄視窗;或可直接使用鍵盤在 CLIPS 命令視窗下查詢 facts 指 令,此外在指令的周圍必須加括號,否則 CLIPS 無法辨識,詳細如圖 2.3:
在事實的前方推論系統都會自動給予編號,編號開頭為 f,並結合事實索 引的整數。可使用 reset 或 clear 命令是推論系統刪除短期記憶內的事實,同時將 會讓事實索因直接歸 0。
2.4.2
推論規則庫建立(Defrule)規則如同一般在其他程式設計語言(JAVA、C#等)所使用 IF-THEN 格式,這 樣的規格可用自然語言和計算機語言的混合來表達,如圖 2.4 所示。
規則從人類自然語言轉換成 CLIPS 程式語言內 IF-THEN 格式並不是件困 難事情。一般而言,隨著開發經驗增長,撰寫 CLIPS 規則會變得更簡單,開發者 可以直接將規則輸入到 CLIPS 中,也可以從文字編輯器創建的規則檔加載規則,
如同圖 2.5 規則。
(a) 事實檢視視窗 (b) 查詢事實命令
圖 2.3 查詢短期記憶內的事實
IF certain conditions are true
THEN execute the following actions 圖 2.4 CLIPS 規則各式
21
以下是一個事實,一個名為 duck 的規則是沿用上面範例並使用 CLIPS 語法 表示,在規則名稱前面必須呼叫 CLIPS 關鍵詞 Defrule;此外可加入引號並可選 的規則標題註釋"Here comes the quack",只能有一個規則標題註釋,它必須放在 規則名稱之後,詳細如圖 2.6。
(defrule rule_name "optional_comment"
(pattern_1) ; Left-Hand Side (LHS) (pattern_2) ; of the rule consisting . ; of elements before
. ; the "=>"
. (pattern_N)
=>
(action_1) ; Right-Hand Side (RHS) (action_2) ; of the rule consisting . ; of elements after
. ; the "=>".
圖 2.6 Defrule 格式 (資料來源: Giarratano, 1993)
CLIPS> (defrule duck ; Rule header
"Here comes the quack" ; Comment (animal-is duck) ; Pattern
圖 2.5 使用 Defrule 加入規則
22
如有名稱相同的規則,類似於其它編程語言其中只能使用一個過程名稱來 唯一標識,CLIPS 將用該名稱替換現有的規則,也就是說 CLIPS 並不接受有名 字重複的問題。總而言之,推論規則的一般語法如圖 2.7 所示。
IF the animal is a duck
THEN the sound made is quack 圖 2.7 規則範例
23
第三章 設計與發展解決方案
如圖 3.1 所示,本研究將顧客資料、產品資料以及環境屬性列為精準行銷推 論引擎事實庫,因而,系統會在啟動推論程序前自動加入;此外,從 A 陶藝工作 坊所收集到推薦經驗都會直接寫入推論系統規則庫,然而經過推論引擎的處理推 論顧客可能喜歡的陶藝品,並進行陶藝品排序後呈現在消費者購物介面。