本發(fā)明涉及物聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種物聯(lián)網(wǎng)設(shè)備的檢索方法。
背景技術(shù):
目前,以智能家居、智慧城市、智能制造為例的物聯(lián)網(wǎng)領(lǐng)域中,越來越多的傳感器和設(shè)備以標(biāo)準(zhǔn)、公開的方式接入云端。在各類不同的物聯(lián)網(wǎng)應(yīng)用中,有越來越多的場景需要進(jìn)行設(shè)備與設(shè)備、設(shè)備與人之間的直接交互,需要對這些接入云端的物聯(lián)網(wǎng)設(shè)備進(jìn)行高精度的檢索。
然而,在主要包括基于服務(wù)發(fā)現(xiàn)的檢索、基于語義網(wǎng)的檢索、基于文本的檢索等類型的物聯(lián)網(wǎng)設(shè)備檢索技術(shù)中,還存在諸多缺陷,無法完全滿足物聯(lián)網(wǎng)感知設(shè)備的檢索需求。例如,基于服務(wù)發(fā)現(xiàn)的檢索直接使用行業(yè)標(biāo)準(zhǔn),即各類服務(wù)發(fā)現(xiàn)協(xié)議實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備檢索,其多用于局域網(wǎng)場景,無法應(yīng)用于海量節(jié)點(diǎn)的場景;基于語義網(wǎng)的檢索具有較高的語義學(xué)習(xí)門檻和人工成本并存在擴(kuò)展性問題;基于文本的檢索面臨設(shè)備內(nèi)容變更迅速、設(shè)備描述過于簡短等問題,無法有效處理設(shè)備描述缺失問題,在物聯(lián)網(wǎng)場景下可用性受限。這些方法均無法完全滿足物聯(lián)網(wǎng)感知設(shè)備的檢索需求。
因此,亟需一種通用的、面向規(guī)模海量、接入動態(tài)、狀態(tài)易變、描述缺失的物聯(lián)網(wǎng)設(shè)備的檢索方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺陷,提供一種適用于物聯(lián)網(wǎng)設(shè)備描述缺失的場景的物聯(lián)網(wǎng)設(shè)備快速發(fā)現(xiàn)方法。
根據(jù)本發(fā)明的一方面,提供了一種物聯(lián)網(wǎng)設(shè)備的檢索方法。該方法包括以下步驟:
步驟1:獲取物聯(lián)網(wǎng)設(shè)備信息;
步驟2:以所述物聯(lián)網(wǎng)設(shè)備信息中的數(shù)據(jù)序列的特征作為輸入,利用分類器獲得物聯(lián)網(wǎng)設(shè)備的分類描述,其中,所述分類器根據(jù)已知的設(shè)備的數(shù)據(jù)序列的特征作為輸入,以該設(shè)備對應(yīng)的分類標(biāo)簽作為輸出,通過訓(xùn)練而獲得;
步驟3:基于所述分類描述生成檢索索引,以用于匹配待檢索的物聯(lián)網(wǎng)設(shè)備。
優(yōu)選地,步驟2包括:
步驟21:對每個(gè)所述物聯(lián)網(wǎng)設(shè)備信息中的數(shù)據(jù)序列提取特征;
步驟22:對于物聯(lián)網(wǎng)設(shè)備信息中文本描述完整的設(shè)備,將其歸類為預(yù)設(shè)的分類標(biāo)簽,以其數(shù)據(jù)序列的特征作為輸入,以其對應(yīng)的分類標(biāo)簽作為輸出來訓(xùn)練分類器;
步驟23:對于物聯(lián)網(wǎng)設(shè)備信息中文本描述缺失的設(shè)備,以其數(shù)據(jù)序列的特征作為輸入,利用訓(xùn)練好的分類器獲得其對應(yīng)的分類標(biāo)簽,進(jìn)而獲得其分類描述。
優(yōu)選地,所述分類標(biāo)簽采用“部署位置-采集目標(biāo)-采集變量類型”的形式進(jìn)行標(biāo)注。
優(yōu)選地,步驟2還包括:統(tǒng)計(jì)不同物聯(lián)網(wǎng)應(yīng)用中不同類別設(shè)備的配比信息;基于所述配比信息通過聚類算法獲得所述物聯(lián)網(wǎng)設(shè)備歸屬的物聯(lián)網(wǎng)應(yīng)用類型;通過對所述物聯(lián)網(wǎng)應(yīng)用類型建立網(wǎng)絡(luò)流模型來計(jì)算反映所述分類描述合理性的得分,以獲得優(yōu)化的分類描述。
優(yōu)選地,采用以下公式來計(jì)算所述得分:
其中,x表示分類指派,n表示需要進(jìn)行分類指派的物聯(lián)網(wǎng)設(shè)備的數(shù)目,m為所有設(shè)備的類型數(shù)目,p(tj|si)表示設(shè)備si屬于物聯(lián)網(wǎng)設(shè)備類型tj的概率。
優(yōu)選地,所述數(shù)據(jù)序列的特征包括均值、最大值、最小值、數(shù)值方差、數(shù)據(jù)序列的小波系數(shù)、zerocrosscount、一階線性回歸系數(shù)、取窗口后的序列均值中的至少一項(xiàng)。
優(yōu)選地,步驟3包括:基于所述物聯(lián)網(wǎng)設(shè)備的分類描述計(jì)算詞袋模型;以所述詞袋模型和所述物聯(lián)網(wǎng)設(shè)備信息中的屬性信息為輸入,通過訓(xùn)練dmr模型獲得所述物聯(lián)網(wǎng)設(shè)備的主題向量索引;基于所述物聯(lián)網(wǎng)設(shè)備的分類描述獲得全文索引。
優(yōu)選地,步驟3還包括:在接收到待檢索的設(shè)備的文本內(nèi)容之后,基于所述全文索引和所述主題向量索引計(jì)算反映各個(gè)設(shè)備與待檢索設(shè)備的匹配程度的打分值;基于所述打分值輸出檢索到的物聯(lián)網(wǎng)設(shè)備。
優(yōu)選地,所述打分值是基于全文索引計(jì)算的打分值和基于主題向量計(jì)算的打分值的加權(quán)。
優(yōu)選地,所述分類器是隨機(jī)森林。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:針對缺乏描述的設(shè)備提出了通過訓(xùn)練分類器進(jìn)行描述補(bǔ)全方法和其優(yōu)化方法,并提出了基于主題檢索和全文檢索的混合檢索策略,從而有效地提高了物聯(lián)網(wǎng)設(shè)備描述缺失時(shí)的檢索精度。
附圖說明
以下附圖僅對本發(fā)明作示意性的說明和解釋,并不用于限定本發(fā)明的范圍,其中:
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的物聯(lián)網(wǎng)設(shè)備的檢索方法的流程圖。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的描述補(bǔ)全方法的流程圖。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的生成檢索索引的流程圖。
圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的處理用戶查詢的流程圖。
圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的物聯(lián)網(wǎng)設(shè)備分類結(jié)果的優(yōu)化方法的流程圖。
圖6示出了現(xiàn)有技術(shù)中網(wǎng)絡(luò)流模型的示意圖。
圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的物聯(lián)網(wǎng)設(shè)備的檢索系統(tǒng)的示意框圖。
圖8示出了實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的應(yīng)用示例。
圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的物聯(lián)網(wǎng)設(shè)備檢索效果。
圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的物聯(lián)網(wǎng)設(shè)備相關(guān)性檢索效果。
具體實(shí)施方式
為了對本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)參照附圖對本發(fā)明提出的物聯(lián)網(wǎng)設(shè)備的檢索方法進(jìn)行詳細(xì)的描述。
步驟s110,爬取物聯(lián)網(wǎng)設(shè)備信息。
設(shè)備爬取是指根據(jù)用戶控制命令,獲取指定物聯(lián)網(wǎng)開放平臺上的物聯(lián)網(wǎng)設(shè)備信息,并可將這些信息存儲在“物聯(lián)網(wǎng)設(shè)備原始記錄”數(shù)據(jù)庫。
當(dāng)前公共可訪問的物聯(lián)網(wǎng)平臺通常采用統(tǒng)一服務(wù)接口和網(wǎng)頁封裝的方式提供對外訪問服務(wù),在進(jìn)行設(shè)備信息爬取時(shí),對應(yīng)地提供面向webapi接口的爬取和面向網(wǎng)頁的爬取,其中,面向webapi的爬取可通過數(shù)據(jù)源提供的rest接口來獲取物聯(lián)網(wǎng)設(shè)備信息;面向網(wǎng)頁的爬取采用集成第三方web爬蟲插件的方式,通過解析web頁面來獲得物聯(lián)網(wǎng)設(shè)備信息,物聯(lián)網(wǎng)平臺提供的爬蟲控制接口,可指定爬蟲起始目標(biāo)、爬蟲啟動、中止等控制操作。
爬取到的物聯(lián)網(wǎng)設(shè)備信息包括反應(yīng)設(shè)備分類的文本描述(例如,濕度采集設(shè)備)、設(shè)備的應(yīng)用信息(例如,該設(shè)備屬于的項(xiàng)目)、設(shè)備的屬性信息(例如,部署時(shí)間、部署地點(diǎn)等)以及設(shè)備指定時(shí)間內(nèi)采集的數(shù)據(jù)序列信息等。可使用“物聯(lián)網(wǎng)應(yīng)用”、“物聯(lián)網(wǎng)設(shè)備”、“設(shè)備數(shù)據(jù)序列”三層抽象來存儲爬取到的物聯(lián)網(wǎng)設(shè)備信息,例如,存儲各個(gè)物聯(lián)網(wǎng)應(yīng)用,在每個(gè)物聯(lián)網(wǎng)應(yīng)用下列出其包含的多個(gè)設(shè)備以及每個(gè)設(shè)備對應(yīng)的一個(gè)數(shù)據(jù)序列。
例如,現(xiàn)有的web中有大量的物聯(lián)設(shè)備平臺(如xively、thingspeak)為設(shè)備持有者提供在線數(shù)據(jù)存儲和展示的服務(wù)。這些平臺允許物聯(lián)網(wǎng)設(shè)備持有者進(jìn)行設(shè)備注冊,從而提供“應(yīng)用”、“設(shè)備”信息;設(shè)備注冊后運(yùn)行時(shí)可實(shí)時(shí)向平臺上傳數(shù)據(jù)序列,從而提供“數(shù)據(jù)序列”信息。具體地,物聯(lián)網(wǎng)設(shè)備產(chǎn)生的實(shí)時(shí)數(shù)據(jù)序列為一串有序的時(shí)間與數(shù)值對,用于表示設(shè)備在不同的時(shí)間點(diǎn)捕獲到的物理量,例如,溫度采集設(shè)備產(chǎn)生的實(shí)時(shí)數(shù)據(jù)序列可能是:(2017-4-1015:50,24℃),(2017-4-1015:51,23℃),(2017-4-1015:52,24℃),(2017-4-1015:53,25℃)。
步驟s120,描述補(bǔ)全物聯(lián)網(wǎng)設(shè)備的文本描述。
描述補(bǔ)全是指對于描述不全的物聯(lián)網(wǎng)設(shè)備,根據(jù)其真實(shí)的設(shè)備數(shù)據(jù)序列信息推導(dǎo)出設(shè)備的文本描述。所述描述不全設(shè)備是指經(jīng)過文本清理后,描述文本為空或不完整的設(shè)備。
在本文中,描述補(bǔ)全的基本原理是:相似類別的設(shè)備所采集到的數(shù)據(jù)序列具有相近的數(shù)值特性,通過計(jì)算不同設(shè)備數(shù)據(jù)序列之間的關(guān)系,能夠識別分類相似的設(shè)備,通過給定相似設(shè)備相同的分類標(biāo)簽描述,從而完成設(shè)備描述補(bǔ)全的任務(wù)。
圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的描述補(bǔ)全的流程圖。簡言之,描述補(bǔ)全過程包括:將獲取的設(shè)備信息進(jìn)行篩選、清洗和預(yù)處理;提取每個(gè)設(shè)備的數(shù)據(jù)序列的特征;對于文本描述完整設(shè)備,根據(jù)文本描述信息與預(yù)設(shè)的分類標(biāo)簽進(jìn)行手工設(shè)備歸類,進(jìn)而以數(shù)據(jù)序列的特征作為輸入,以對應(yīng)的預(yù)設(shè)分類標(biāo)簽作為輸出,訓(xùn)練分類模型;對于文本描述不全的設(shè)備,以其數(shù)據(jù)序列的特征作為輸入,通過訓(xùn)練好的分類模型獲得分類標(biāo)簽,將其作為設(shè)備的文本描述。
下面參考圖2,詳細(xì)介紹描述補(bǔ)全的過程。
首先,對描述的語言進(jìn)行檢測,并使用第三方服務(wù)將文本描述轉(zhuǎn)化為統(tǒng)一的語言;同時(shí),根據(jù)不同目標(biāo)物聯(lián)網(wǎng)數(shù)據(jù)源,將設(shè)備的不同屬性拼接為一條完整的描述信息;對捕獲到的每個(gè)設(shè)備的數(shù)據(jù)序列進(jìn)行篩選,過濾缺乏描述并且缺乏數(shù)據(jù)序列輸出的設(shè)備。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,將文本描述轉(zhuǎn)化為統(tǒng)一的語言的一種方法是,首先使用python的語言類型識別庫(https://pypi.python.org/pypi/langdetect)對設(shè)備的文本描述語言進(jìn)行鑒別,如果不是英文的話,直接調(diào)用百度翻譯api進(jìn)行第三方的翻譯(http://api.fanyi.baidu.com/api/trans/product/apidoc),即向翻譯服務(wù)發(fā)送一個(gè)包含非英文文本描述的語句,百度翻譯api將返回對應(yīng)的英文。當(dāng)然,也可以采用類似的方法轉(zhuǎn)換為其它語言。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,對于將設(shè)備的不同屬性拼接為完整的描述信息的一種方法是,不同的平臺上有著不同的物聯(lián)網(wǎng)設(shè)備組織形式,例如,在xively上,每個(gè)設(shè)備對應(yīng)的文本描述散布在title、device_name、description、streamid幾個(gè)不同的位置上,可直接從這些對應(yīng)位置讀出文本,之后以空格為間隔,將不同位置上的文字描述以先后順序進(jìn)行排列,從而獲得描述文本。
數(shù)據(jù)篩選、清洗是對物聯(lián)網(wǎng)中設(shè)備產(chǎn)生的實(shí)時(shí)數(shù)據(jù)序列進(jìn)行處理以獲得有意義的數(shù)據(jù)序列。數(shù)據(jù)篩選是指將缺乏沒有文本描述并且沒有對應(yīng)數(shù)據(jù)序列的設(shè)備;數(shù)據(jù)清洗包括但不限于:去除特定模式文本信息,如電話號碼、url、郵箱地址;去除文本特殊符號,如標(biāo)點(diǎn);將所有文本轉(zhuǎn)化為小寫后,去除停詞,如is、are、this、that等無意義詞匯;去除低頻詞匯,如去除只出現(xiàn)一次的詞匯。
數(shù)據(jù)預(yù)處理的目的在于,由于不同的序列可能使用不同的數(shù)值單位,因此在數(shù)值域上將有很大的區(qū)別,需要對它們的數(shù)值進(jìn)行歸一化。例如,可使用以下變換對數(shù)據(jù)序列進(jìn)行預(yù)處理,以防止數(shù)值溢出。
其中,sgn()為符號函數(shù),對于正數(shù)輸入返回1,對于負(fù)數(shù)輸入返回-1。在物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)序列中,大部分?jǐn)?shù)據(jù)的數(shù)值較小,但仍有少數(shù)設(shè)備數(shù)值很大,這些數(shù)據(jù)會導(dǎo)致之后的數(shù)據(jù)特征提取等操作出現(xiàn)數(shù)值溢出。直觀地說,該式將x映射為了一個(gè)較小的數(shù)f(x,∈),以控制x的值域,通過設(shè)定∈可以給予絕對值小于∈的數(shù)值更高的分辨率。
接下來,對于每個(gè)設(shè)備產(chǎn)生的數(shù)據(jù)序列進(jìn)行特征提取。以獲得每個(gè)數(shù)據(jù)序列對應(yīng)的特征,所提取的特征包括但不限于:(1)常規(guī)統(tǒng)計(jì)信息,例如,均值、最大值、最小值、數(shù)值方差;(2)數(shù)據(jù)序列的小波系數(shù);(3)zerocrosscount(跨零次數(shù)),即序列中相鄰兩點(diǎn)符號不同的數(shù)據(jù)對個(gè)數(shù);(4)一階線性回歸系數(shù);(5)取窗口后的序列均值等。對于上述特征的提取方式,屬于現(xiàn)有技術(shù),在此不再贅述。
接下來,檢測爬取到的設(shè)備信息是否具有完整的設(shè)備描述,使用文本描述完整、具有數(shù)值序列的物聯(lián)網(wǎng)設(shè)備來訓(xùn)練分類模型。分類模型可采用支持向量機(jī)(svm)、決策樹、神經(jīng)網(wǎng)絡(luò)等。在一個(gè)實(shí)施例中,為了提高訓(xùn)練模型的泛化能力和穩(wěn)定性,可選用隨機(jī)森林作為分類模型。隨機(jī)森林是由許多決策樹集成在一起的分類器,相比于傳統(tǒng)的決策樹分類模型,隨機(jī)森林可同時(shí)訓(xùn)練多個(gè)決策樹,最后使用投票的方式來預(yù)測輸出。
具體地,對于文本描述完整的設(shè)備,將其歸類為預(yù)設(shè)的分類標(biāo)簽,這些設(shè)備的分類標(biāo)簽可由人工指定,可采用“部署位置-采集目標(biāo)-采集變量類型”的形式標(biāo)注。例如,設(shè)備分類結(jié)果的典型標(biāo)簽為“indoorairtemperature”(室內(nèi)空氣溫度)或“urbanwaterconductivity”(城市水電導(dǎo)率)。在一個(gè)實(shí)施例中,預(yù)置了70種分類標(biāo)簽以進(jìn)行設(shè)備描述補(bǔ)全。在進(jìn)行模型訓(xùn)練時(shí),對于文本描述完整的設(shè)備,用上述提取的五類特征構(gòu)成特征向量,以設(shè)備的分類標(biāo)簽作為輸出來訓(xùn)練隨機(jī)森林模型。
接下來,對于文本描述不全的設(shè)備,將其數(shù)據(jù)序列的相應(yīng)特征輸入到訓(xùn)練好的分類模型,即可獲得該設(shè)備的分類標(biāo)簽,進(jìn)而獲得用于反映設(shè)備分類的文本描述。
步驟s130,生成檢索物聯(lián)網(wǎng)設(shè)備的索引
在此步驟中,使用獲得的設(shè)備分類的文本描述和/或設(shè)備的屬性信息來生成索引,以用于物聯(lián)網(wǎng)設(shè)備的檢索。
例如,參見圖3所示,為了盡量減少特殊輸入對索引質(zhì)量的影響,首先對設(shè)備的文本描述進(jìn)行清洗,例如,去除無用詞、特殊符號、低頻詞等。通過清洗可為全文索引和主題向量提取提供標(biāo)準(zhǔn)輸入。
利用經(jīng)過清洗的文本描述可直接建立全文索引,例如,建立全文索引的倒排索引類型,即以字或詞為關(guān)鍵字進(jìn)行索引,倒排索引通過建立字典索引,并記錄每個(gè)詞在文本描述中的位置,以快速定位關(guān)鍵詞。同時(shí)索引保存了文本描述的詞頻信息,以便使用tf-idf(termfrequency/inversedocumentfrequency)進(jìn)行快速查詢。
又如,仍參見圖3所示,還可利用dmr(dirichletmultinomialregression)模型來獲得主題向量索引,該模型同時(shí)使用設(shè)備的文本描述信息和屬性信息。dmr模型的輸入是每個(gè)設(shè)備文本描述的詞袋模型(即文本文件中不同的詞出現(xiàn)的頻率的統(tǒng)計(jì)),以及每個(gè)設(shè)備的屬性信息(例如,部署時(shí)間、部署地點(diǎn)等),模型的輸出為每個(gè)設(shè)備的文本描述中每個(gè)詞對應(yīng)的主題向量和每個(gè)主題對應(yīng)的詞向量。主題向量是一個(gè)長度為k的一維向量,其中k為主題數(shù)目。向量中的第i個(gè)元素表示文本屬于主題i的概率,且所有概率的加和為1。例如,主題向量為[0.1,0.2,0.2,0.5],表示屬于四類不同的主題的可能性分別為0.1、0.2、0.2、0.5。詞向量本質(zhì)上是指定主題中詞出現(xiàn)的頻率信息,也是一個(gè)長度為d的一維數(shù)組,設(shè)該向量的長度為d,d為所有出現(xiàn)詞匯的個(gè)數(shù),例如,對于詞向量[0.35,0.25,0.25,0.05,0.1],表示當(dāng)一個(gè)詞屬于該主題時(shí),這個(gè)詞屬于該詞向量中5個(gè)詞的概率分別0.35,0.25,0.25,0.05,0.1。
輸入dmr模型的信息包括可直接使用的數(shù)據(jù)和需要經(jīng)過轉(zhuǎn)換的數(shù)據(jù),例如,以設(shè)備信息中的部署地點(diǎn)為例,并非直接使用經(jīng)緯度信息作為輸入,而是將經(jīng)緯度數(shù)據(jù)轉(zhuǎn)換成該地點(diǎn)的類型(例如,居民區(qū)、商業(yè)區(qū)、工業(yè)區(qū)、大學(xué)、農(nóng)場等),作為dmr模型的輸入。在本發(fā)明中,用戶可通過指定生成的主題數(shù)量來控制最終生成的主題的粒度。主題模型的輸出可以文本的形式進(jìn)行存儲。
dmr模型是一種經(jīng)典的主題模型,其通過融合設(shè)備的文本描述對應(yīng)的屬性信息,采用概率推斷的方法來推理不同設(shè)備的主題類別。dmr模型的具體訓(xùn)練過程對于本領(lǐng)域的普通技術(shù)人員來說,是公知的,在此不再贅述。
步驟s140,基于生成的索引處理對物聯(lián)網(wǎng)設(shè)備的查詢
在此步驟中,包括捕獲用戶的查詢請求,通過生成的索引計(jì)算與待檢索設(shè)備的匹配程度,或稱打分值,并向用戶返回打分較高的設(shè)備信息。也就是說,在處理用戶的查詢時(shí),將用戶的查詢輸入作為新的文檔,通過對比該文檔的查詢關(guān)鍵字與每個(gè)設(shè)備的文本描述信息的匹配程度,返回與用戶的查詢輸入最為匹配的設(shè)備信息。
圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的查詢處理流程圖。在該實(shí)施例中,采用基于主題的檢索和基于關(guān)鍵詞的全文檢索相結(jié)合的方式來檢索物聯(lián)網(wǎng)設(shè)備。
首先,預(yù)先讀取在步驟s130中獲得的全文索引和主題向量索引兩類文件,以加速檢索。在接收到用戶的檢索請求后,使用與步驟s130中相同的數(shù)據(jù)清洗規(guī)則對用戶的輸入查詢文本進(jìn)行處理,并進(jìn)而計(jì)算其詞袋模型;根據(jù)dmr模型結(jié)果計(jì)算詞袋模型對應(yīng)的主題向量;計(jì)算獲得的主題向量與所有設(shè)備的主題向量間的差值,并對每個(gè)設(shè)備進(jìn)行打分,即主題向量索引打分;此外,還包括對全文索引的打分,即使用tf-idf,計(jì)算每個(gè)設(shè)備對應(yīng)的文本描述的打分值;最后,綜合主題向量打分和全文索引打分結(jié)果進(jìn)行排序,返回排序靠前的設(shè)備信息。
對于全文索引的打分,參照標(biāo)準(zhǔn)的tf-idf文檔檢索打分方法進(jìn)行。例如,對于查詢q和文檔d,tf-idf計(jì)算分為詞頻分值和倒排索引分值兩部分,分別代表在查詢q中每個(gè)詞在所有文檔中出現(xiàn)的總次數(shù)以及每個(gè)詞在所有文檔中的特殊性。計(jì)算規(guī)則如下所示:
其中,n為文檔總數(shù),nx為出現(xiàn)詞x的文檔數(shù);ft(x,d)指詞x在文檔d中出現(xiàn)的頻率,k1、b均為模型的可調(diào)參數(shù)。avg(ft)表示x在所有文檔中出現(xiàn)頻率的平均值。
對于主題向量打分,通過計(jì)算查詢語句的主題向量和每個(gè)設(shè)備描述的主題向量的相似性獲得。例如,用戶輸入的查詢語句被認(rèn)為是一個(gè)新的“文檔”q,可以使用dmr模型計(jì)算得到q的主題向量
其中,αk表示文檔k的概率分布的超參數(shù),可由dmr模型參數(shù)獲得。在得到q的主題向量后,可計(jì)算與其他文檔主題之間的相似程度,采用jensen-shannon距離的倒數(shù)進(jìn)行評價(jià)。具體地,使用主題向量的打分計(jì)算公式為:
其中,dkl(d||m)表示主題向量的概率分布q和m之間的kullback–leibler距離,即兩個(gè)分布之間的相對熵。djs(q||d)之間的q和d兩個(gè)文本片段的主題向量間的jenson-shannon距離,用以表示兩個(gè)文本之間的不同程度。
在計(jì)算得到兩種打分之后,可使用加權(quán)的方式將兩種打分進(jìn)行融合,從而獲得當(dāng)前用戶查詢下的每個(gè)設(shè)備的打分。融合的打分采用以下公式:
其中,β為可變參數(shù),可通過查詢的較差驗(yàn)證進(jìn)行調(diào)優(yōu),r(d)表示使用主題向量計(jì)算出的打分值,r(b)表示使用tf-idf全文檢索計(jì)算出的打分值,min(r(d))表示在這些打分中的最小值。實(shí)驗(yàn)證明這種方式相對于未融合的打分方式能夠明顯地提高查詢精度。也可采用其它的方式進(jìn)行打分,例如,直接取全文索引打分和主題向量打分的平均值或在獲得進(jìn)行加權(quán)打分之后,用某種修正值來進(jìn)一步優(yōu)化。
在獲得每個(gè)設(shè)備的查詢打分結(jié)果之后,返回具有最高打分的設(shè)備,并將對這些設(shè)備的信息進(jìn)行呈現(xiàn),從而完成物聯(lián)網(wǎng)設(shè)備的查詢。
綜上所述,本發(fā)明通過訓(xùn)練分類器對描述不全的設(shè)備進(jìn)行補(bǔ)全,并基于主題檢索和全文檢索相結(jié)合的方式來進(jìn)行物聯(lián)網(wǎng)設(shè)備的檢索,達(dá)到了提高檢索精度的效果。
此外,為了進(jìn)一步提高物聯(lián)網(wǎng)設(shè)備的分類結(jié)果的正確性,消除明顯的分類錯(cuò)誤,除了使用圖2所述的標(biāo)準(zhǔn)的分類模型之外,在另一個(gè)實(shí)施例中,本發(fā)明還設(shè)計(jì)了一種利用物聯(lián)網(wǎng)應(yīng)用特性來優(yōu)化上述分類器的分類結(jié)果的方法,參見圖5所示。
該方法的基本原理是:相同類別的物聯(lián)網(wǎng)應(yīng)用對應(yīng)的設(shè)備類別的配比應(yīng)當(dāng)是近似的,例如,智能家居應(yīng)用中存在大量可感知人活動的二值傳感器和能耗監(jiān)控傳感器,而野外環(huán)境應(yīng)用中可能有大量的風(fēng)力傳感器、氣象傳感器。由于能夠完整捕獲每個(gè)物聯(lián)網(wǎng)設(shè)備的應(yīng)用歸屬信息,利用這種應(yīng)用之間設(shè)備類型的差異,可推理出使用分類方法獲得的傳感器類別的合理性。
參見圖5所示,簡言之,該優(yōu)化方法包括:統(tǒng)計(jì)每個(gè)物聯(lián)網(wǎng)應(yīng)用的設(shè)備類型配比;基于配比信息通過聚類方法獲得設(shè)備對應(yīng)的物聯(lián)網(wǎng)應(yīng)用類型;對于每個(gè)物聯(lián)網(wǎng)應(yīng)用,通過建立網(wǎng)絡(luò)流模型;根據(jù)網(wǎng)絡(luò)流模型優(yōu)化的目標(biāo)函數(shù),更改每個(gè)物聯(lián)網(wǎng)設(shè)備的類型指派。通過該優(yōu)化方法可以對每個(gè)缺乏描述的設(shè)備,輸出一個(gè)表示每個(gè)設(shè)備功能的文本描述的標(biāo)簽,得到的分類準(zhǔn)確率高于直接使用隨機(jī)森林方法。
需要說明的是,在圖5中,通過聚類獲得物聯(lián)網(wǎng)應(yīng)用類型主要是考慮到,在某些情況下,物聯(lián)網(wǎng)應(yīng)用的類型是未知的,即無法通過物聯(lián)網(wǎng)應(yīng)用的文本描述來推斷應(yīng)用的類型;通過配比信息來獲得物聯(lián)網(wǎng)應(yīng)用類型,是假設(shè)到相同類別物聯(lián)網(wǎng)應(yīng)用之間的設(shè)備類型配比是相似的,基于該假設(shè),統(tǒng)計(jì)每個(gè)應(yīng)用中不同種類設(shè)備的配比信息;聚類方法可采用k-means聚類、混合高斯模型聚類算法等。
對于每個(gè)物聯(lián)網(wǎng)應(yīng)用建立網(wǎng)絡(luò)流模型,圖6示意了典型的網(wǎng)絡(luò)流模型。網(wǎng)絡(luò)流模型為一個(gè)有向無環(huán)圖結(jié)構(gòu),其中的節(jié)點(diǎn)使用有向邊相連,網(wǎng)絡(luò)流的流量從源點(diǎn)出發(fā),沿有向邊的方向最終流動到匯點(diǎn)。本發(fā)明使用的是一種帶權(quán)網(wǎng)絡(luò)模型,其中圖的每個(gè)邊具有一個(gè)權(quán)值w和一個(gè)流量值c。本發(fā)明中網(wǎng)絡(luò)流的求解目標(biāo)是獲得滿足流量最大的情況下,所有邊上權(quán)值加和最小時(shí)的每個(gè)邊的流量指派。該問題的求解是公知的,可使用ford-fulkerson方法或直接轉(zhuǎn)換成線性規(guī)劃問題解決。
在本發(fā)明中,建立的網(wǎng)絡(luò)流模型可以物聯(lián)網(wǎng)應(yīng)用中包含的設(shè)備的編號與每個(gè)設(shè)備屬于不同設(shè)備類型的概率為輸入,這些輸入將作為網(wǎng)絡(luò)流模型的參數(shù),與下文定義的網(wǎng)絡(luò)模型結(jié)構(gòu)一并構(gòu)成網(wǎng)絡(luò)流模型。現(xiàn)有網(wǎng)絡(luò)流模型存在公認(rèn)求解算法,直接使用該算法可獲得網(wǎng)絡(luò)流中每個(gè)位置變量的值,其中特定的值對應(yīng)了分類優(yōu)化結(jié)果。
具體地,使用以下的打分公式來評價(jià)一個(gè)物聯(lián)網(wǎng)應(yīng)用中的設(shè)備分類指派x的合理性:
其中,n為描述缺失的物聯(lián)網(wǎng)設(shè)備的數(shù)目,m為所有設(shè)備的類型數(shù)目,p(tj|si)為當(dāng)前設(shè)備si屬于物聯(lián)網(wǎng)設(shè)備類型tj的概率。
在此實(shí)施例中,將物聯(lián)網(wǎng)設(shè)備的分類問題轉(zhuǎn)化為現(xiàn)有的網(wǎng)絡(luò)流模型,是一個(gè)標(biāo)準(zhǔn)的“最小費(fèi)用最大流”問題。網(wǎng)絡(luò)流模型的輸出結(jié)果是進(jìn)一步優(yōu)化的物聯(lián)網(wǎng)設(shè)備的分類結(jié)果,即對應(yīng)每個(gè)缺乏描述的設(shè)備,輸出一個(gè)表示每個(gè)設(shè)備功能的文本描述的標(biāo)簽。
圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的物聯(lián)網(wǎng)設(shè)備的檢索系統(tǒng)的示意框圖。該系統(tǒng)包括物聯(lián)網(wǎng)設(shè)備信息爬取模塊610、描述補(bǔ)全模塊620、索引模塊630、查詢處理模塊640以及用于存儲物聯(lián)網(wǎng)設(shè)備信息的原始記錄和主題索引與全文倒排索引的存儲體。
物聯(lián)網(wǎng)設(shè)備信息爬取模塊610用于實(shí)現(xiàn)對提供rest接口的物聯(lián)網(wǎng)數(shù)據(jù)源進(jìn)行定期爬取的功能。爬取的結(jié)果包括每個(gè)設(shè)備的文本描述信息、設(shè)備的應(yīng)用信息、設(shè)備的屬性信息以及設(shè)備指定長度時(shí)間內(nèi)采集到的數(shù)值信息等,這些信息將直接存入到數(shù)據(jù)庫中。
描述補(bǔ)全模塊620用于根據(jù)數(shù)據(jù)庫中的設(shè)備信息,對缺乏描述的設(shè)備進(jìn)行描述補(bǔ)全,并將補(bǔ)全的結(jié)果存入到數(shù)據(jù)庫中。
物聯(lián)網(wǎng)設(shè)備信息的原始記錄可使用“物聯(lián)網(wǎng)應(yīng)用-物聯(lián)網(wǎng)設(shè)備”進(jìn)行存儲。存儲內(nèi)容具體包括物聯(lián)網(wǎng)應(yīng)用信息、設(shè)備元數(shù)據(jù)信息、設(shè)備描述信息、物聯(lián)網(wǎng)設(shè)備采集到的真實(shí)數(shù)據(jù)序列等。
索引模塊630包括主題索引模塊631和全文索引模塊632,其中,主題索引模塊631使用已補(bǔ)全的設(shè)備的文本描述,對每個(gè)設(shè)備進(jìn)行設(shè)備主題向量的提取,并根據(jù)主題向量計(jì)算對應(yīng)的索引;全文索引模塊632將對補(bǔ)全的描述建立倒排索引。具體地,主題索引包括每個(gè)主題對應(yīng)的詞頻與每個(gè)文檔對應(yīng)的不同主題的權(quán)重;全文索引包括一個(gè)所有設(shè)備描述文本的倒排索引和每個(gè)設(shè)備對應(yīng)的詞頻向量。這兩類索引可以文件形式進(jìn)行存儲。
查詢處理模塊640對用戶的查詢請求進(jìn)行響應(yīng),該模塊捕獲用戶的關(guān)鍵字請求,通過索引進(jìn)行結(jié)果比對,返回相關(guān)設(shè)備信息作為查詢結(jié)果。
本發(fā)明的方法和系統(tǒng)可服務(wù)于普通物聯(lián)網(wǎng)設(shè)備使用者,用戶可方便地發(fā)現(xiàn)可用設(shè)備,進(jìn)而有效地促進(jìn)設(shè)備之間的共享與組合使用,提高各類物聯(lián)網(wǎng)設(shè)備的利用率。此外,本發(fā)明也可服務(wù)于智能硬件、智能家居等管理海量物聯(lián)網(wǎng)設(shè)備的公司與機(jī)構(gòu),以提供統(tǒng)一的管理、開發(fā)和維護(hù)的手段。
為了更清楚的理解本發(fā)明的應(yīng)用,圖8示出了基于本發(fā)明的詳細(xì)系統(tǒng)的設(shè)計(jì)實(shí)例。如圖8所示,該系統(tǒng)采用了分層設(shè)計(jì)的方式來分離不同的功能模塊。從整體上來看,該系統(tǒng)分為前端和后臺兩部分,前端執(zhí)行于客戶瀏覽器端,后端執(zhí)行于系統(tǒng)后臺服務(wù)器中。前端負(fù)責(zé)web頁面的呈現(xiàn),后臺包括“接口層”、“服務(wù)層”、“離線任務(wù)層”、“存儲層”四個(gè)層次,分別負(fù)責(zé)系統(tǒng)與前端的交互、系統(tǒng)的業(yè)務(wù)流程處理、批量任務(wù)處理以及設(shè)備原始信息和索引信息的持久化存儲。
系統(tǒng)前端分別面向檢索系統(tǒng)管理者和檢索用戶提供了兩類頁面,即服務(wù)管理頁面和檢索功能模塊。系統(tǒng)面向管理者可提供包括爬蟲調(diào)度、設(shè)備數(shù)據(jù)呈現(xiàn)、全文索引與主題索引維護(hù)等功能;面向檢索用戶可提供了文本檢索接口和檢索結(jié)果呈現(xiàn)兩項(xiàng)功能。
系統(tǒng)前端頁面組織可使用bootstrap模板,可視化呈現(xiàn)使用d3.js插件提供相關(guān)設(shè)備的展示,前端事件響應(yīng)和用戶請求處理使用了jquery。
系統(tǒng)后臺的接口層直接負(fù)責(zé)控制頁面邏輯、對用戶的請求進(jìn)行捕獲,將有效請求發(fā)送到系統(tǒng)服務(wù)層進(jìn)行處理,并將服務(wù)層返回的數(shù)據(jù)包裝后發(fā)送到前端頁面。前后端交互使用統(tǒng)一的json格式,后臺返回前端請求時(shí)將攜帶統(tǒng)一的狀態(tài)號,以標(biāo)識當(dāng)前的請求是否成功或請求異常原因。由于系統(tǒng)的爬蟲調(diào)度與索引生成功能屬于耗時(shí)任務(wù),故系統(tǒng)將以上兩類任務(wù)單獨(dú)抽取出離線任務(wù)層,對于每個(gè)任務(wù),使用獨(dú)立線程進(jìn)行維護(hù),以提高系統(tǒng)的響應(yīng)性能。
在實(shí)現(xiàn)技術(shù)選型方面,后臺使用javaweb技術(shù)和springmvc框架。系統(tǒng)的設(shè)備爬蟲模塊采用集成apachenutch的方式,描述補(bǔ)全模塊使用weka中的隨機(jī)森林代碼庫實(shí)現(xiàn),并在此基礎(chǔ)上新增了本發(fā)明的分類結(jié)果優(yōu)化模塊。分類結(jié)果優(yōu)化部分調(diào)用了python中的networkx網(wǎng)絡(luò)流計(jì)算庫。主題提取部分采用了mallet工具集中關(guān)于dmr模型的實(shí)現(xiàn),全文索引的實(shí)現(xiàn)采用了apachelucene。對應(yīng)地,系統(tǒng)持久化交互使用hibernate,數(shù)據(jù)庫存儲使用mysql;全文索引部分使用了lucene通用的索引文件;主題索引部分通過將“主題向量”和“文檔-主題向量”存儲為csv格式文件實(shí)現(xiàn)。
以下舉例在上述實(shí)現(xiàn)方式中本發(fā)明的兩個(gè)典型操作:
通過輸入關(guān)鍵詞的物聯(lián)網(wǎng)設(shè)備檢索。文本檢索接口通過文本輸入框獲取用戶需要查詢的關(guān)鍵詞,返回以文本列表形式呈現(xiàn)的相關(guān)目標(biāo)設(shè)備。前端頁面在用戶鍵入關(guān)鍵詞后,將關(guān)鍵詞信息使用json形式封裝、發(fā)送于后臺的“檢索控制接口”。檢索控制接口從json數(shù)據(jù)中將關(guān)鍵詞解析出后,繼續(xù)調(diào)用服務(wù)層的檢索服務(wù),檢索服務(wù)讀取緩存于內(nèi)存的主題索引和全文索引數(shù)據(jù)后,將使用上文提及的“查詢處理”流程對所有的文檔計(jì)算主題打分和全文檢索打分,返回綜合打分最高的指定數(shù)目的設(shè)備,與每個(gè)設(shè)備的信息一并進(jìn)行打包、封裝,最終傳輸?shù)角岸藱z索頁面進(jìn)行呈現(xiàn)。對于每個(gè)物聯(lián)網(wǎng)設(shè)備,呈現(xiàn)內(nèi)容包括設(shè)備所屬應(yīng)用的序號、設(shè)備的序號、設(shè)備的部署時(shí)間、設(shè)備的主要文字描述等。呈現(xiàn)效果如圖9所示。
查詢與指定設(shè)備相關(guān)的其他設(shè)備,并將結(jié)果進(jìn)行可視化展示。系統(tǒng)前端頁面提供指定設(shè)備的輸入(包括物聯(lián)網(wǎng)應(yīng)用號和物聯(lián)網(wǎng)設(shè)備號)和用于可視化展示的設(shè)備數(shù)目,并提供了多種相關(guān)性呈現(xiàn)的選項(xiàng),這里以文檔相關(guān)性為例。前端將輸入的查詢信息發(fā)送于后臺,后臺會計(jì)算該設(shè)備與其他所有設(shè)備的tf-idf打分值,并將打分值最高的指定個(gè)數(shù)的設(shè)備作為候選,同時(shí)讀取這些設(shè)備的主題信息,一并返回前端。前端使用點(diǎn)表示每個(gè)設(shè)備,使用點(diǎn)的顏色表示每個(gè)設(shè)備的權(quán)重最高的主題,使用連線表示設(shè)備之間主題向量的相似程度。前端頁面提供了高亮顯示的效果,以便于在節(jié)點(diǎn)中定位特定節(jié)點(diǎn);提供鼠標(biāo)滑動之后的詳細(xì)內(nèi)容呈現(xiàn)。呈現(xiàn)效果如圖10所示。
本發(fā)明可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
計(jì)算機(jī)可讀存儲介質(zhì)可以是保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲介質(zhì)例如可以包括但不限于電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、靜態(tài)隨機(jī)存取存儲器(sram)、便攜式壓縮盤只讀存儲器(cd-rom)、數(shù)字多功能盤(dvd)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。
以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。