王舒漫,李愛萍,段利國,付 佳,陳永樂
(太原理工大學信息與計算機學院,太原030024)
物聯網(Internet of Things,IoT)作為我國戰略性新興產業的一個重要組成部分,正進入深化應用的新階段[1]。隨著5G 技術的推廣和物聯網設備的平價化,預計到2020 年會有500 億設備接入物聯網[1],同時,也導致用戶從數量巨大的物聯網設備中精確地定位滿足其特定業務需求的設備變得越來越困難和耗時,如何快速高效地輔助用戶發現滿足需求的設備成為了目前急需解決的問題。
基于面向服務架構(Service-Oriented Architecture,SOA)的物聯網使物聯網的功能服務化[2],服務聚類是支持服務快速發現的有效輔助方法,聚類算法根據某一相似特性快速聚合相關服務,將數據劃分成不同的集合,能提高服務發現的效率。在物聯網服務發現中,Liu 等[3]通過提取物聯網服務的主題簽名,利用主題建模方法進行聚類來確定相似服務集。Jiang等[4]使用自然語言處理技術提取服務描述文本中的目標特征,計算兩個服務目標特征之間的語義相似度,并采用K-means算法對服務進行聚類。
上述研究為物聯網服務的發現提供了有益的方法參考。然而,物聯網服務描述文檔屬于短文本,特征稀疏,信息量少,采用已有的服務發現方法進行聚類時會出現“類型無法識別、類型丟失”等現象,達不到理想效果。針對物聯網服務的上述特點,本文提出了一種基于詞對主題模型BTM(Biterm Topic Model)的物聯網服務發現方法,根據服務的隱含主題進行聚類。
物聯網的概念最早可追溯到20世紀90年代,國際電信聯盟在2005 年的ITU 互聯網報告中正式給出“物聯網”的概念:按照既定的協議,通過互聯網實現物與物之間信息交換和通信,進而實現智能化識別、定位、跟蹤、監控和管理的一種網絡。
物聯網場景中的“物”主要指的是現實環境中存在的感知識別、信息交互和智能控制的任何設備和資源。物聯網是開放式的、動態變化式的、高分布式的,允許設備隨時在不同地點以多種方式接入物聯網中;然而對設備信息沒有統一格式的描述,從而導致接入物聯網的設備呈現多種形式的信息表達,設備間信息的交互和共享受限[5]。對物聯網設備信息進行統一的資源描述,是面向物聯網設備服務發現的基礎。近年來,一些研究人員通過以下方法來解決目前物聯網領域設備的統一描述問題。王書龍等[6]提出了基于本體的物聯網設備資源描述模型,根據設備特點將其劃分為5 個類資源進行綜合描述,包括屬性、控制、狀態、歷史信息和隱私。Santos等[7]提出了一種針對嵌入式資源的描述語言,該描述語言從功能、需求和限制三方面來描述設備資源。結合以上研究,本文根據異構物聯網設備的共有特征,結合物聯網服務發現的需求,選取功能、接口、工作狀態、工作環境四部分來構建物聯網服務描述模型,如圖1 所示。其中,功能用于描述用戶對服務功能的要求;接口用于描述用戶對于相關的設備服務接入方式的要求,包括接口信息、通信方式等;工作狀態用于描述用戶對于服務相關聯的設備的當前運行狀態的要求;工作環境用于描述用戶對于服務相關聯的設備的正常工作環境的要求,包括工作溫度、濕度、地理位置等。

圖1 物聯網服務描述文本Fig.1 Service description text for IoT
隨著技術發展,物聯網服務數量還在逐步呈不斷上升的趨勢,高效快速地發現最佳的服務成為亟待解決的問題。
通過挖掘服務的潛在語義信息對服務進行聚類,尤其是借助于主題模型進行服務發現,能有效地提高服務聚類的精度和速度,減少資源消耗。在主題模型中,認為一個服務描述文本包含多個隱含主題。Teixeira 等[8]提出采用概率發現的方法來進行服務發現,提高了服務發現的速度,并降低了服務資源的消耗。Casser 等[9]提出了一種混合語義的服務匹配方法,采用概率主題模型來學習服務的隱含主題,并通過主題相似度進行服務聚類。同時,由于物聯網設備故障或損壞、設備的移動性等因素,使得物聯網服務經常出現消失或重現等動態變化特點,使用主題模型對物聯網服務進行主題建模成為解決服務動態變化的有效方法之一。
然而,物聯網服務描述文檔屬于短文本,信息量少,缺乏足夠的詞頻共現,直接使用傳統的主題模型或其擴展模型對短文本進行建模,會導致嚴重的數據稀疏問題。因此,對語義信息稀少的短文本進行合理的建模,是實現高質量服務發現的關鍵。
近年來,現有的研究中有部分嘗試將短文本進行擴充來進行主題模型的訓練。魏強等[10]利用英文Wikipedia 對短文本的服務描述進行語義擴充,將短文本轉換為長文本進行建模來構建高質量的主題模型。肖巧翔等[11]通過使用word2vec擴充服務描述語義,然后基于隱狄利克雷分配(Latent Dirichlet Allocation,LDA)模型對服務進行聚類。還有一些研究考慮利用外部知識庫對短文本進行特征擴充,這也是一種較常見的方法,但恰當的外部數據集不容易找到,而且使用一個外部知識庫會使建模精確度下降,同時,這些方法沒有普遍性。2013 年,Yan 等[12]在LDA 和一元混合模型的基礎上提出了基于詞對信息的詞對主題模型BTM,在不進行文本擴充的情況下能有效地克服短文本數據稀疏問題,同時考慮了詞之間的語義聯系。因此,本文使用BTM 對物聯網服務的隱含主題進行挖掘,再通過主題進行服務聚類。
傳統的主題模型模擬文本的生成過程,再通過參數估計得到隱含主題。與傳統的主題模型相比,BTM 通過將文檔轉換為詞對,直接對整個語料庫的詞對biterm(即共現的無序詞對模式)進行建模來學習短文本中的主題。BTM 的圖模型表示如圖2所示。其中:φz表示主題z下的詞對概率分布,θ表示語料庫中全局主題概率分布,多項式分布的參數φz和θ 分別用于生成主題和詞對;T 代表主題個數;|B|代表語料庫biterm集合B中詞對的總數;wi、wj和z分別代表詞對b的兩個詞及其主題;α和β是Dirichlet先驗分布的參數。

圖2 BTM的圖模型表示Fig.2 Graphical model representation of BTM
在BTM中,語料庫由多個主題組成,每個biterm獨立地從特定主題中抽取,具體生成過程如下:
1)生成各個主題z下的主題-詞分布φw|z~Dir(β)。
2)生成整個語料庫的全局的主題分布θz~Dir(α)。
3)生成biterm集合B中的每個詞對b=(wi,wj):
a)從全局的θ中抽取一個主題z~Mulit(θ);
b)從主題z中抽取兩個詞:wi,wj~Mulit(φw|z)。
按照以上的生成過程,詞對b=(wi,wj)的聯合概率可以表示為:

因此,產生BTM語料庫的概率為:



其中:z-b表示除了詞對b 之外的所有biterm 的主題分配,nz表示biterm 分配給主題z的次數,nw|z表示詞w 分配給主題z的次數,M 表示語料庫中不同詞的次數。一個詞對b 被分配給主題z,詞對b中的兩個詞wi、wj也會被分配到主題z上。
根據詞對的主題分配的次數和詞共現,全局主題分布θz和主題-詞分布φw|z可以進行估計:

其中:φw|z表示主題z 中詞w 的概率,θz表示主題z 的概率,|B|表示詞對總數,T表示主題個數。
針對物聯網服務的特性,本文提出了一種基于BTM 的物聯網服務發現方法:首先通過預處理物聯網服務文檔,得到有效的服務特征數據集;接著利用BTM 提取服務的隱含主題,并通過全局主題分布θz和主題-詞分布φw|z計算推理得到服務文檔-主題概率分布p(z|d);然后利用基于最大距離的Kmeans 算法對服務進行聚類;最后,通過計算服務請求與候選服務集中服務的相似度,返回最佳匹配結果。基于BTM 的物聯網服務發現框架如圖3所示。

圖3 基于BTM的物聯網服務發現框架Fig.3 Service discovery framework for IoT based on BTM
通過特征提取、分詞、去停用詞、詞干還原等方法,對物聯網服務描述文檔進行預處理。
1)對物聯網服務描述文本中的“service name”“functional description”“interface type”等關鍵特征進行提取。
2)對提取的文本中的復合詞進行拆分,如“Carbon-Dioxide”等。
3)利用正則表達式去除一些無關詞匯和符號,如“and”“of”“&”等,避免對建模造成影響。
4)具有相同詞干的單詞具有相同的含義,如“recommended”和“recommending”具 有 相 同 的 詞 干“recommend”,為了便于詞語匹配,需利用Python 庫NLTK 的Porter Stemmer進行詞干還原。
在BTM 中,物聯網服務描述文本文檔可以被看作是包含隱含主題的文檔。將預處理后的數據集作為BTM 的輸入進行建模,學習其隱含主題,并通過Gibbs 抽樣估計出全局主題分布θz和主題-詞分布φw|z。由于BTM 不對文檔生成過程進行建模,而是直接對語料庫的詞對進行建模,我們無法直接得到服務文檔-主題概率分布,因此需要推理計算服務文檔-主題分布p(z|d),將每個物聯網服務描述文本表示為隱含主題分布向量。該分布相當于文檔中詞對的分布和詞對-主題分布的乘積,計算公式為:

其中,以詞對b 作為中間量,可以計算出文檔d 中詞對的條件概率分布p(b|d),計算公式如式(7)所示,nd(b)表示詞對b 在文檔d中出現的次數。

根據參數估計的結果,可計算得到詞對-主題分布p(z|b)為:

因此,在上述基礎上,通過全局主題分布θz和主題-詞分布φw|z計算推理得到服務文檔-主題概率分布p(z|d),下面給出具體的主題挖掘過程的算法。
輸入 主題數T,數據集services,參數α,參數β,迭代次數N;
輸出 參數p(z|d)。

服務聚類是根據服務某一特征快速將服務劃分成不同的集合。根據上述分析,得到服務文檔使用主題表征的向量后,本文根據主題之間的相似度,采用K-means 算法對服務進行聚類。
為了避免K-means 算法在聚類時出現局部最優解問題,本文利用余弦相似度計算T 個主題向量兩兩之間的距離,并將距離最遠的兩個作為初始簇中心,在剩余的(T-2)個主題中,選取前面兩個初始簇中心各自距離乘積最大值的那個樣本點作為第三個初始簇中心,依此類推,可以找到K 個初始簇中心,進而在初始聚類中心的基礎上進一步聚類。
具體的聚類算法過程如下:
步驟1 計算T 個服務主題兩兩間的相似度dis(n,1),選取dis(d1,d2)≥dis(di,dj)(i,j=1,2,…,T)作為兩個初始服務簇中心。
步驟2 在剩余的T-2 個主題中,選取dis(d1,d3)×dis(d2,d3)≥dis(d1,di)×dis(d2,di)(i=1,2,…,K)作為第三個初始簇中心,以此類推得到K個服務簇中心。
步驟3 對于剩余的T-K 個主題,計算每個主題與K 個服務簇中心的距離,并將該主題聚集到距離最近的服務簇中。
步驟4 重新計算K個服務簇中心。
步驟5 重復步驟3、4,直到服務簇中心不再改變,或者達到其他終止條件。
圖4是服務聚類的具體流程。

圖4 服務聚類流程Fig.4 Flowchart of service clustering
服務匹配是指根據用戶的服務請求,快速準確地匹配到與服務請求相似度最高的服務并返回。具體匹配過程如下:
1)對于用戶的服務請求,通過BTM 獲取服務請求的隱含主題,計算其隱含主題與各服務簇中心的距離,將相似度最高的服務簇作為候選服務簇返回;
2)對于候選服務簇中的每一個服務,利用余弦相似度計算其隱含主題與服務請求的隱含主題的相似度,并將相似度最高的服務作為匹配結果返回給用戶。
本文使用采集的物聯網設備服務數據集進行實驗。其中,物聯網工業現場設備服務數據集包含1 038 個服務,涉及不同型號的射頻識別(Radio Frequency IDentification,RFID)標簽、溫度傳感器、壓力傳感器、紅外氣體傳感器、輻射傳感器、電流變送器等多種物聯網設備。表1 列出了傳感器的部分參數信息。
所涉及算法通過Java、Python 編程語言實現,實驗環境為Intel Core i5-3210M CPU@2.50 GHz,內存4.00 GB,32 位Windows 7操作系統,Eclipse及PyCharm開發平臺。

表1 傳感器的部分參數信息Tab.1 Some parameters information of sensors
本文采用類內類間距離比值作為服務聚類質量的評價指標,對于服務聚類而言,同一類內部距離越小,不同類之間距離越大,表示該聚類效果明顯,計算如下:

其中:R(K)表示類內類間距離比值,R(K)越小,聚類質量越好。
within(K)表示類內距離,即同一類中各服務之間的平均距離,本文使用所有類內距離的最大值作為整個數據集的類內距離,計算如下:


其中:i,j=1,2,…,K;xp和xq分別是屬于Ci類和Cj的服務。
本文采用準確率Precision 和歸一化折損累積增益(Normalized Discounted Cumulative Gain,NDCG)作為服務發現結果的綜合評價指標。
Precision 是指檢索得到的服務中正確服務的占比,如式
其中:|Ci|表示屬于Ci類的服務的個數,xj和xp是屬于Ci類的服務。
between(K)表示類間距離,即不同類最近的兩個服務之間的距離,本文使用任意兩個類之間距離的最小值作為整個數據集的類間距離,計算如下:(12)所示,其中,Ci表示第i 個聚類簇,A 表示檢索得到的服務數中正確匹配的服務數,B表示檢索得到的服務數。

NDCG 用來衡量和評價檢索結果算法,與服務請求相似度最高的檢索結果排位越靠前,NDCG的值越大,計算如下:

其中:reli表示在檢索結果p 個文檔中第i 個文檔的相關等級,|REL|表示這p個文檔按照相關性從大到小的順序排序。
對物聯網服務描述文本進行特征提取、分詞、詞干還原等操作,生成預處理文本作為BTM 建模的輸入,BTM 中的主題數T 是一個經驗值,根據數據集人為設定。參數α 一般取值,參數β一般取值0.01。經過主題挖掘,可以得到服務文檔-主題分布矩陣,部分數據如表2 所示(結果取小數點后8位,加粗數據表示該文檔中主題相關性最高的主題的概率)。

表2 服務文檔-主題分布矩陣Tab.2 Service document-topic distribution matrix
4.3.1 BTM不同主題個數下服務聚類的比較
對具有不同主題數目的BTM 在用于物聯網服務聚類時的情況進行了可視化對比。在該實驗中,分別設定主題數為10、15、20、30 進行訓練,得到的模型分別標記為BTM_10、BTM_15、BTM_20、BTM_30,部分實驗結果如圖5 所示,圖中“十字”符為各聚類中心。從實驗結果圖對比分析發現,隨著BTM 主題個數的細化,物聯網服務的聚類效果發生明顯的變化。計算不同主題數下各聚類數對應的類內類間距離比值,如表3所示。在K=7 時,不同主題數下類內類間距離比值較小;T=15,K=7 時,類內類間距離比值最小,整體聚類效果較好(迭代次數N取值為2 000)。

表3 不同主題數下各聚類數K對應的類內類間距離比值Tab.3 Distance ratio within and between classes under different number of topics with different K
4.3.2 不同方法下服務發現的比較
為了驗證本文提出的基于BTM的物聯網服務發現方法的有效性,采用4種現有服務發現研究中的常用方法TF-IDF[14]、LDA[15]、HDP[10]和LDA-K[16]作為基準與本文方法進行對比。
1)TF-IDF[14]:該方法用TF-IDF 算法計算服務之間的相似度,利用服務相似度使用K-means 方法進行服務聚類,是一種基于關鍵詞的服務分類辦法。
2)LDA[15]:該方法建立了三層貝葉斯模型,即文檔-主題-詞,基于LDA 模型的服務發現,通過LDA 建模提取服務的隱含主題信息,并根據不同主題對服務進行分類。LDA 對長文本進行主題挖掘有較好的效果,但處理短文本效果不明顯。
3)HDP[10]:一種非參數貝葉斯主題模型,可以根據數據集自動確定主題數量。與LDA 模型相比,該方法更適合對具有實時性的數據集進行主題建模。
4)LDA-K[16]:使用LDA 將服務從詞項空間轉換到主題空間,通過建模學習得到服務的隱含主題,并使用K-means 算法對服務進行分類,該方法注重主題分布整體的相似度。

圖5 不同主題個數下服務聚類效果Fig.5 Service clustering under different number of topics
在相同的實驗環境下使用相同的數據集,對以上方法提出相同的服務請求進行查詢。圖6 和圖7 分別給出了在不同數量的服務查詢下5 種方法的Precision 和NDCG 指標的評估結果。圖6是5種方法的物聯網服務查詢準確率的對比,可以看出,隨著服務查詢數量的增長,所有方法查準率都呈下降趨勢,查詢數量為35 時趨于穩定,本文方法整體上要優于其他方法。通過計算可知,基于BTM 的服務查詢平均準確率相比TF-IDF、LDA、HDP 和LDA-K 方法分別提高了5.91%、4.01%、2.92%、2.46%。
圖7 是5 種方法在不同查詢數量下的NDCG 值對比,NDCG 值越大說明與服務請求相似度最高的檢索結果排位越靠前。從圖7 中可以看出,5 種方法的NDCG 值隨著服務查詢數量的增加均有所下降,相比其他4 種常用方法,本文方法的查詢結果相似度更高。針對短文本的物聯網服務,本文方法可以直接建模學習,無需進行文本擴充,有效解決了數據稀疏性問題,服務匹配返回最佳服務的效果得到了提升。
綜合分析圖6 和圖7 的結果可以看出:TF-IDF 側重通過計算文本中單詞的詞頻和逆文檔頻率進行服務聚類;LDA、HDP 和LDA-K 主要針對于較長文本進行文檔級建模;而BTM主題模型則是對詞共現進行建模來增強主題挖掘,利用整個語料庫的聚合模式來學習文本的隱含主題,有效地解決了短文檔級的數據稀疏問題。因此,基于Precision 和NDCG 的綜合分析,對文本較短、語義性差的物聯網服務進行聚類,BTM有效地提高了服務發現的效果。

圖6 5種方法的物聯網服務查詢準確率對比Fig.6 Precision comparison of IoT service query by five methods

圖7 5種方法在不同查詢數量下的NDCG值對比Fig.7 NDCG comparison of five methods under different service queries
如何快速有效地找到最佳服務以滿足不斷增長的服務需求是當前物聯網應用中需要解決的關鍵問題之一,由于物聯網服務文本短、語義性差等特性,應用現有的服務發現方法不能很好地匹配到最佳服務。針對這一問題,本文提出了一種基于BTM 的物聯網服務發現方法,該方法利用BTM 挖掘物聯網服務的隱含主題,對服務進行聚類并返回服務請求的最佳匹配結果。實驗結果分析表明,該方法在Precision 和NDCG方面比常用的其他方法均有更好的效果。
本文的研究主要集中于物聯網服務屬于短文本、語義性差這一特性上,今后,我們將會在本文的基礎上進一步考慮為物聯網服務添加語義標記、服務的實時變化性等特性對物聯網服務發現的影響。