• 沒有找到結果。

第三章、 「問題–解法」軟體知識分類法之設計構想

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 等各種不同 領域的論文,但都能籍此共通的「問題導向」本質來描述,足見此方法的可行性。