孫瑨一
(華北電力大學,北京102206)
隨著服務計算技術的不斷發展,面向服務的體系結構(SOA)已成為一個重要的研究熱點。SOA 是一種能夠有效組織和利用分布式資源的體系結構,具有松耦合、動態性和可重用等特點。其接口和協議開放、系統實現靈活等優點,使SOA 可以作為未來各行業業務應用的實現方式。Web 服務是面向服務體系結構的實現方法之一。它的服務相互獨立,并且獨立于服務實現技術,可以同時接受多個請求并返回多個響應。大多數Web 服務是用Web 服務定義語言(WSDL)描述的,這是一種語法級描述[1]。它描述了Web 服務可以執行的操作、與Web 服務交互時的消息類型以及基于XML 語言的信息交換的物理端口等內容。Web 服務通常發布在服務注冊中心的注冊目錄中。服務發現的過程即為將用戶請求中的關鍵字與服務目錄中的關鍵字進行比較,找到滿足用戶需求的服務。
服務質量(QoS)是指Web 服務的能力,目前它已經成為Web 服務實用性的一個重要標準,用來區分不同層次的服務,例如服務的響應時間、最大并發量、訪問量等指標。QoS 為服務發現提供了可靠的依據,是服務發現的重要組成部分。
Web 服務發現算法的發展可以分為三個階段。初始發現算法主要是基于關鍵字匹配,通過貪婪算法、蟻群算法等啟發式算法對存儲服務圖進行搜索。此發現方法簡單且易于部署。然而,這種發現方法缺乏語義描述,召回率低,不能滿足Web 服務快速發展的需要。在此基礎上,一些研究者通過本體語義的方式提高了服務發現算法的查全率和查準率[2]。但這種方法也有很大的缺點:本體庫必須由專業的專家來構建,這將消耗大量的人力物力,從而導致缺乏一個國際公認的標準本體庫。之后,一些研究者利用數據挖掘技術從Web 服務描述文檔中提取語義內容,并取得了一些研究成果。例如一些基于服務描述文本的聚類方法等。
同時,隨著Web 服務的發展,越來越多的服務能夠滿足相同用戶的需求。在服務發現過程中,不僅要求所選擇的服務滿足用戶的功能需求,還要考慮非功能性的服務質量(QoS)需求。基于QoS 的Web 服務發現技術引起了眾多研究者的關注,特別是如何從具有不同QoS 屬性的高動態服務中,以有效的策略或方法在短時間內為用戶選擇可靠的服務,已成為服務選擇領域的一個重要研究熱點。
一般來說,從機器學習的角度研究可見Web 服務的發現方法是一個重要的研究方向:將Web 服務的WSDL 文檔視為一種特殊的結構化文檔,介紹了自然語言處理領域中的特征提取和聚類技術,提出了一種LDA 的服務發現方法,并通過GRU 網絡對QoS 數據進行處理,最終為用戶返回準確且可信的結果。這些研究內容為服務發現的研究提供了一些新的思路和方法。
本文提出了一種QoS 數據驅動的Web 服務發現方法。該方法將Web 服務的WSDL 文檔中的服務描述和Web 服務的QoS數據分別進行處理。如圖1 所示:

圖1 方法流程圖
主題模型是一種通過非監督學習的方式對含有語義信息的文本集進行聚類的統計模型,起主要被用于自然語言處理中的語義分析和文本挖掘。隱含狄利克雷分布(LDA)是一種基于貝葉斯模型的被廣泛使用的主題模型,它將每篇文檔視做一組無序單詞組成的集合,并為每篇文檔生成屬于每個主題的概率分布。
本文提出的一種基于隱含狄利克雷分布(LDA)的服務聚類模型,將WSDL 文檔中的服務描述部分視為一種特殊的結構化文檔,用戶對目標Web 服務的描述同樣視為一個文檔。通過該模型將這些文檔根據功能進行聚類,同類中的Web 服務總是為一類功能描述相近、功能相似的服務。因此,與用戶對目標Web服務描述相似度最高的若干個Web 服務,即可視為能夠用戶所需功能的Web 服務。
服務聚類過程的實現主要通過Python 中sklearn 工具包實現。其主要參數如表1 所示:

表1 LDA 模型參數設置
LDA 求解算法,即learning_method 取值為batch 而非online,是由于實驗所使用的樣本量較小,batch 方法即可滿足需求。
GRU 是循環神經網絡(RNN)的一種,和長短期神經網絡(LSTM)一樣,是為了解決長期記憶和反向傳播中的梯度等問題而提出的。相比與LSTM,GRU 能夠在保證訓練結果可信度不降低的情況下,大幅提高了訓練效率。
本文提出了一種基于循環門單元網絡(GRU)的服務發現算法,目的是從服務聚類過程中返回的若干個滿足用戶功能需求的服務中發現最可信的Web 服務返回給用戶。QoS 數據是從服務器網關中截取的一段時序性數列。QoS 數據有很多可選指標,例如可以從某Web 的響應時間判斷,更快的響應速度代表該服務有更高的質量。綜合考慮,本文共選取了4 個服務質量指標,并加權得出綜合服務質量指數,如表2 所示:

表2 服務質量指標及權重
通過對原始QoS 數據進行歸一化、加權后,即可得到該服務隨時間的歷史綜合服務質量指數序列。通過GRU 網絡對序列數據進行處理,神經網絡模型會將其中蘊含的時序信息進行記憶,最終返回給用戶當前時刻,調用該服務的綜合服務質量指數,從而進一步提高服務發現的可信度。
本文分別從服務聚類模型和服務發現算法兩部分分別進行了實驗設計驗證。
針對服務聚類模型,為驗證服務聚類模型的可信度,本文從新浪微博“#疫情#”話題中通過selenium 自動化控制模塊,爬取了3800 條微博內容作為測試集。實驗將整個數據集分為A組(900 條文本)、B 組(1400 條文本)和C 組(1500 條文本),通過三組對照實驗,消除誤差,從而驗證模型可行性。從聚類結果的pyLDAvis 視圖可以看出,該組內所有文本被成功分為了8類,符合模型預設參數,但是存在部分簇重疊現象。輪廓系數是一種常用的評價聚類結果的參數,其取值范圍為[-1,1]。對聚類結果計算輪廓系數為:A 組0.53,B 組0.44,C 組0.52。從輪廓系數可以看出,該聚類模型具有較好的聚類效果,但存在簇重疊現象,有進一步改進的空間。
針對服務發現算法,為了驗證GRU 網絡的可行性,本文使用 了 RNN 循 環 網 絡 中 經 典 的 公 開 數 據 集international-airline-passengers。GRU 網絡運行結果如圖2:

圖2 GRU 網絡運行結果
圖2 中綠色虛線為數據集中的真實數據,紅色實線為GRU網絡模擬結果。從圖2 可以看出,本文構建的GRU 網絡具有較高的可信度。
如何通過分類的思想提高服務發現的效率,在Web 服務的相關研究中是非常重要的。本文提出的QoS 數據驅動的Web 服務發現方法將服務描述文檔視為一種特殊的結構化文本,通過LDA 模型將服務聚類,并通過GRU 網絡模型處理QoS 數據,從而完成了整個服務發現的流程。服務聚類的實驗結果表明,該方法相較早期語法級服務發現方法,更加注重了語義信息,在實驗環境有較好的結果。在此基礎上,通過GRU 網絡處理QoS 數據,使得最終服務發現結果包含了QoS 數據中的時序性數據。但是,該方法仍有不足之處,以上的實驗結果均是由模擬數據集得出,在真實環境的應用中,該方法面對真實的服務數據仍需要調整參數和優化模型結構。在以后的工作中,我們將繼續進行相關研究,探索該方法的優化及改進。