第三章 系統架構設計與流程
3.4. 服務配對流程…
3.4.2. 排名機制模組
在排名機制模組中,主要的目的就是選出最符合需求的服務,推薦給予使用 者。在先前分析需求的結果,除了包含在排序機制所需的資料外,另外還有分析 出另一組在排名機制所需的資料 UBpre 。所以在排名機制模組中所需的輸入資料 為使用者需求 Ureq 、與排序模組所得出的結果 WSsort 。
經過排序機制模組得到的初步結果 WSsort 與 Ureq 的另一組分析資料 UBpre 之後,接下來就是利用排名機制模組將 UBpre 與在 WSsort 中的 WSchar作最後的評 估運算,在這個機制的評估運算中,我們使用了兩種方法,以利往後工作的分析,
分析此兩種方法個別的準確度以及優缺點。而這兩種方法分別是規則基準法 (Rule-based)與權重加權計算法(Weighting)。
3.4.2.1 規則基準法
規則基準法主要是透過使用者需求裡,偏好對服務功能屬性的優先順序,從 優先權較低的開始選,選出一定數量,再由第二低的從前一次選出的結果再選出 一定數量,以此類推,選到優先權最高的屬性時,只會從中挑選出一個最合適的 服務推薦給使用者。圖 3.5 為一個簡單的範例,先從屬性 1 中挑選出一定數量符 合需求的服務,在從屬性 1 中被挑選出的服務集合中挑選一定數量出符合屬性 2 的服務,以此類推。表 3.5 為規則基準法來選出適合服務的演算法過程。
圖 3.5 規則基準法選擇範例
WS1
WS2
… WSo
… WSx
WS1
WS2
… WSn
… WSo
WS1
WS2
…
… WSm
屬性 1 屬性 2 屬性 3
表 3.5 排名機制模組演算法-規則基準法 演算法 2-1
WSsort = {ws1, ws2 , ws3 , … , wsm} //初步結果 Ureq = {ur1, ur2 , ur3 , … , urn} //使用者需求
WSi_char = {wsc1, wsc2 , wsc3 , … , wscx} //服務屬性 i ← 0
for each uri
UBpre[] ← analyze(uri) end
//Send to Ranking Model i ← 0 , j ← 0 , k ← 0 for each uri in UBpre
for each wsj in WSsort for each wsck in WSi_char
if wsck = uri then WSrank[] ←wsj
end end end
//Select high level WS in WSrank WSrank ← WSall [1]
//Output of Ranking Model
3.4.2.2 權重加權法
權重加權法主要是透過使用者需求裡,偏好對服務功能特徵的優先順序,然 後對於此優先順序給予適當的權重加權加成,最高者給予加權越高分,並且儲存 在 Cache 中的網路服務也有權重的加權,每個屬性都給予權重配分並加乘後,最 後將總分計算出來,選出總分最高分的推薦給予使用者。而且需要先將網路服務 的特徵正規化,在我們後面的實作範例設計中,所使用的正規化方法是十進位正 規化其公式如下:
v
′= v/10
i(1)
其中 i 為使得 Max v′ ≦ 1 的最小整數,v′為正規化後的值
上列公式可將數值正規化壓縮到區間[0,1]的情況。下列表 3.6 為權重加權法 來選出適合服務的演算法過程。而在排名模組中所使用的計分法為內積法,其公 式如下:
vector x = [ x
1, x
2, x
3, … , x
n] 、 y = [ y
1, y
2, y
3, … , y
n]
x‧y =
ni=1x
i∗ y
i(2)
表 3.6 排名機制模組演算法-權重加權法 演算法 2-2
WSsort = {ws1, ws2 , ws3 , … , wsm} //初步結果 Ureq = {ur1, ur2 , ur3 , … , urn} //使用者需求
WSi_char = {wsc1, wsc2 , wsc3 , … , wscx} //服務屬性 i ← 0
for each uri
UBpre[] ← analyze(uri) //分析權重配分 end
//Send to Ranking Model
To get WS and WSchar in Cache //normalization
i ← 0 , j ← 0 , k ← 0 for each wsi in WSsort for each urj in UBpre
for each wsck in WSi_char
WSweight[i] ←urj * wsck + WSweight[i]
end end end
//Select highest point of wai in WSsort and Put into WSrank WSrank ←WSweight[highest]
//Output of Ranking Model Return WSrank