第三章、 「問題–解法」軟體知識分類法之設計構想
3.1 軟體技術知識的本質
3.1.1 技術論文本質
技術論文是軟體知識中非常重要的部份。技術論文可能提供全新的概念、新 的技術、特定議題的解決方案等,對軟體開發的效率與軟體成品都有非常大的影 響。了解技術論文的特性,將有助於建構有效率的知識分類方法,進而讓使用者 快速取得有幫助的技術論文。
從知識產生的目的來看,技術論文產生的目的大都是解決特定的問題,不論 是傳統的演算法、資料結構乃至於發展迅速的無線網路、多媒體,技術論文的產
生都是針對技術上的問題提供解法。常見的型態包括提供較現有技術更有效率的
Fabrizio Sebastiani 的”Machine learning in automated text categorization”
[31] , 這 個 標 題 中 , machine learning 是 他 提 出 的 解 法 , 而 automated text categorization 則是他要處理的問題,格式是名詞+in+名詞,故在這裡第一個名詞 是 解 法 , 第 二 個 名 詞 是 問 題 。 但 另 一 篇 David F. Bacon 的 ”Compiler transformations for high-performance computing”[32],看起來跟前一篇標題格 式頗為類似,但其實這篇論文的內容是在處理 multiprocessors 以及 superscalar processors 機器上的 compiler optimization 問題,利用 compiler transformation 解 決,而採用了dependence analysis 以及 locality 等技術來解決,這時前一個名詞 變成解法,第二個名詞則是問題所在領域。這兩篇標題型式如此類似的論文,其 代表的意義卻相差非常多。此外論文的標題由於沒有規定的格式,因此各種型式 的標題都可能出現,舉例而言,Weiyi Meng 的”Building efficient and effective metasearch engines”[33],從標題上只能看出這篇論文要建構有效率的 metasearch engine,看不出其提出的解法,且格式是採用動詞+名詞的方式,跟前兩篇不同;
又如 Jin Jing 的”Client-server computing in mobile environments”[34],標題看起 來 跟 第 一 篇 類 似 , 都 是 以 名 詞+in+ 名 詞 做 為 標 題 , 但 在 這 裡 第 一 個 名 詞
(Client-server computing)並非解法,而是這篇論文處理的問題,其他尚有更難
判斷的例子,如 Steffen Heinz 的”Burst tries: a fast, efficient data structure for string keys”[35],這篇的格式是名詞+:+形容詞+名詞+for+名詞,但其實讀了內 容後會發現這篇論文在講的是text database 中的 string data structure 問題,而提 出了Burst tries 做為解法。又如 Chang H. and Iyengar S. S 的”Efficient algorithms to globally balance a binary search tree”[36],格式是名詞+to+動詞+名詞,而這 些名詞卻不能完全代表這論文的意義,讀完論文後會發現這篇論文處理的是 Binary search tree 中的 improve worst case 問題,採用了 sequential balancing &
parallel balancing 的解法。
由上述的例子,可發現論文的標題有非常多不同的語法,由於自然語言並非
Fabrizio Sebastiani 的”Machine learning in automated text categorization”,
這 篇 論 文 中 定 義 了 三 個 關 鍵 字 :Machine learning、text categorization、text classification,而 text categorization 與 text classification 其實是同義字,這樣的關 鍵字是很簡單的,text categorization 是問題,而 machine learning 是解法,至於
machine learning 所運用的技術就無法從關鍵字得知。另一篇 David F. Bacon 的”Compiler transformations for high-performance computing”,則定義了較多 的 關 鍵 字 :compilation 、 dependence analysis 、 locality 、 multiprocessors 、 optimization 、 parallelism 、 superscalar processors 等 , 這 些 關 鍵 字 中 , 有 些
(parallelism、superscalar processors、multiprocessors)是問題的領域,有些是問 題(compilation、optimization),有些則是解法運用的技術(dependence analysis、
locality),若使用者想找superscalar 的介紹,也可能找到這一篇,想找 dependence analysis 的介紹,也可能找到這一篇,想找 compiler optimization 的方法,也可能 找到這一篇,但其實這篇都不符合上述三項需求,足見雜亂關鍵字帶來的不良影 響。又如 Steffen Heinz 的”Burst tries: a fast, efficient data structure for string keys”,定義了 Binary trees、splay trees、string data structures、text databases、tries、
vocabulary accumulation 等關鍵字,同樣的,這些關鍵字有些是領域,有些是問 題,有些是解法及運用的技術,這樣雜亂無章讓使用者難以快速掌握論文的重 點,也無法真正達到索引的功能。再如 Jin Jing 的”Client-server computing in mobile environments”的,定義了非常多的關鍵字:application adaptation、cache invalidation、caching、client/server、data dissemination、disconnected operation、
mobile applications、mobile client/server、mobile computing 等等,幾乎只要論文 有提到的相關內容都定義為關鍵字,完全無法由關鍵字看出論文的意義。
誠如上述,技術論文是「問題導向」的,故其探討的內容是針對單一領域中 的特定問題,且會提出對應的解決方案,而這個解決方案可能運用或改進了其他 論文中所使用的技術。是以我們可以將關鍵字分為四類,即「領域」、「問題」、「解 法」、「技術」:
(1) 領域(Domain):技術論文的關鍵字中有部份是用來表示此知識所在的領 域類別。例如前述的 parallelism、superscalar processors、multiprocessors 等。
(2) 問題(Problem):指的是此知識所探討的主要問題,論文一般是提供某特 定問題(如Traveling Salesman Problem)的解答,將問題獨立出來有助於 找尋問題的解法。
(3) 解法 (Approach):對於特定的問題,知識可能會提供解法。各個論文若 都將其提出的解法做為關鍵字,則使用者能夠快速地進行同問題間解法的 比 較 。 例 如 某 個 做 法 是 利 用 Greedy , 而 另 一 個 是 利 用 Dynamic Programming,這就能夠讓使用者對此知識有基本概念,也能有個簡單比 較的基礎。
(4) 技術(Technique):一個特定解法可能是運用了某些技術,而這個部份也 是很有價值的。使用者不明白解法時,可以籍其所運用的技術有個概括性 的了解,例如前述的dependence analysis、locality、splay trees 等。
因此,論文關鍵字可以圖 3 - 1 表示:
Domain
Problem
Approach Use Use Use
Technique Technique Technique
圖 3 - 1 論文關鍵字示意圖
這樣的分類是依據技術論文的「問題導向」本質而定的。由於技術論文的本
質即是根據特定的「問題」提出「解決方案」,因此只要能夠描述「問題」與「解 圖學相關內容不熟悉的讀者而言,光看到travel salesman problem 或是 Steiner tree problem 等關鍵字是無法聯想到實際的問題。或者對 binary search tree 不熟悉的 讀者而言,看到某一論文使用了Hibbard's algorithm 或是 Knuth's algorithm 也很 難知道這是什麼樣的演算法。但技術論文的特性便是其深入地探討一個問題,因 此會去閱讀論文的讀者應該可以假設對此議題有基本認識,否則應該先從基本的 入門書籍開始了解。當使用者對特定領域中的議題有基本認識時,對於這些相關 的關鍵字其實都不會陌生,且軟體技術知識有其精確性,每項技術均有其定義清 楚(well-defined)的內容,例如排序法(sorting)的 bubble sort、quick sort、insertion sort 等,其實用一個關鍵字就能夠代表相當多的意義。這也是為何目前關鍵字仍 是最常被用來做為論文索引的原因。而透過上述的分類,這些關鍵字除了能代表 其本身軟體技術的知識外,尚能代表在論文中的意義,是屬於論文的領域、問題、
解法抑或技術,更能加強對論文的描述及索引的效率。
再以之前提到的論文為例,Steffen Heinz 的”Burst tries: a fast, efficient data structure for string keys” 論文定義了 Binary trees 、 splay trees 、 string data structures、text databases、tries、vocabulary accumulation 等關鍵字,其內容是處 理text database 領域中的 string data structure 問題,他提出了稱為 burst tries 的解 法,此解法運用了splay trees、tries、binary trees、hash table 等技術,因此我們
對其關鍵字稍加修改,可將之表示如圖 3 - 2:
圖 3 - 2 論文關鍵字表示法範例(burst tries)
Fabrizio Sebastiani 的”Machine learning in automated text categorization”論
文定義了machine learning、text categorization、text classification 三個關鍵字,但 這樣的定義不足以描述這篇論文的內容。這篇論文是在探討information retrieval 的text categorization 問題,採用了 machine learning 做為解法,並分別採用了兩 種技術:train-and-test 以及 k-fold cross-validation,這篇論文可表示如下圖:
圖 3 - 3 論文關鍵字表示法範例(text categorization)
David F. Bacon 的 ”Compiler transformations for high-performance
computing”論文定義了相當多的關鍵字:compilation、dependence analysis、
locality、multiprocessors、optimization、parallelism、superscalar processors 等,這 些關鍵字中,parallelism、multiprocessors、superscalar processors 是領域,compiler
Domain text database Problem
string data structure Approach
burst tries Technique
information retrieval Domain
text categorization Problem
machine learning Approach
train-and-test Technique
k-fold cross-validation Technique binary tree
Technique Technique Technique splay tree tries hash table
optimization 是 問 題 , 這 篇 論 文 的 解 法 是 compiler transformation , 採 用 了 dependence analysis、locality 等技術,故其關鍵字可表示成圖 3 - 4:
圖 3 - 4 論文關鍵字表示法範例(complier optimization)
Jin Jing 的”Client-server computing in mobile environments”論文中定義了
非常多的關鍵字,只要論文有提到的內容都定為關鍵字,包括:application adaptation 、 cache invalidation 、 caching 、 client/server 、 data dissemination 、 disconnected operation、mobile applications、mobile client/server、mobile computing 等等,其實讀了這篇論文可發現主要是在說明mobile client/server 的問題,提到 了三種解法:mobile-aware adaptation、extended client/server model 以及 mobile data access 等,各自有其運用技術,可表示如圖 3 - 5:
Domain
圖 3 - 5 論文關鍵字表示法範例(mobile client/server)
mobile client/server Problem
mobile data access Approach
application adaptation Technique
caching Technique mobile computing
Domain
extended client/server model Approach
mobile-aware adaptation Approach
data dissemination Technique
superscalar processors
compiler optimization Problem
compiler transformation Approach
dependence analysis Technique
multiprocessors Domain
Technique locality
由上面的例子可看出技術論文的「問題導向」本質,籍由「領域」、「問題」、
「解法」、「技術」四類關鍵字便能對其內容做一簡單的描述及索引,這樣的表示 方法不像論文標題無法解析,也改善了傳統關鍵字缺乏定義的弱點,上述的例子 有database、information retrieval、multiprocessors、mobile computing 等各種不同 領域的論文,但都能籍此共通的「問題導向」本質來描述,足見此方法的可行性。