余敦輝,萬(wàn) 鵬,王 社
(1.湖北大學(xué)計(jì)算機(jī)與信息工程學(xué)院,武漢 430062;2.湖北省教育信息化工程技術(shù)研究中心(湖北大學(xué)),武漢 430062;3.武漢城市職業(yè)學(xué)院計(jì)算機(jī)與電子信息工程學(xué)院,武漢 430061)
(*通信作者電子郵箱369921179@qq.com)
伴隨互聯(lián)網(wǎng)的迅猛發(fā)展,為滿足用戶信息獲取的需求,查詢和搜索系統(tǒng)的應(yīng)用日趨普及。但是,目前查詢系統(tǒng)大多建立在關(guān)系型數(shù)據(jù)庫(kù)的基礎(chǔ)之上,通過(guò)用戶輸入的檢索詞返回查詢到的網(wǎng)頁(yè)、圖片、音視頻等數(shù)據(jù)資源。而使用關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)所存在的問(wèn)題:一是在查詢層面,圖這種數(shù)據(jù)結(jié)構(gòu)具有強(qiáng)大的語(yǔ)義表達(dá)能力,而傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在處理“圖”型數(shù)據(jù)上卻存在著諸多困難,針對(duì)表結(jié)構(gòu)數(shù)據(jù)去做圖結(jié)構(gòu)層面的基于關(guān)系、屬性的關(guān)聯(lián)計(jì)算,導(dǎo)致在時(shí)間和空間的開(kāi)銷均比較大;二是存儲(chǔ)層面,關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)量越大,對(duì)查詢速度的影響就越明顯,而且關(guān)系型數(shù)據(jù)庫(kù)難以適應(yīng)有實(shí)時(shí)性的數(shù)據(jù)關(guān)系;三是在數(shù)據(jù)展示層面,圖數(shù)據(jù)庫(kù)返回結(jié)果是圖結(jié)構(gòu)的知識(shí),不需要額外的數(shù)據(jù)處理開(kāi)銷,就可以直接在頁(yè)面上做圖形渲染,實(shí)現(xiàn)知識(shí)圖譜的可視化展示。
因此,考慮到近年來(lái)發(fā)展迅猛的圖數(shù)據(jù)庫(kù)在存儲(chǔ)關(guān)系數(shù)據(jù)上的優(yōu)勢(shì),本文從應(yīng)用角度出發(fā),以實(shí)際開(kāi)發(fā)項(xiàng)目——企業(yè)信用認(rèn)證服務(wù)平臺(tái)為項(xiàng)目背景,分析并設(shè)計(jì)了基于知識(shí)圖譜的外貿(mào)企業(yè)查詢系統(tǒng),并在此基礎(chǔ)上提出一種實(shí)體關(guān)聯(lián)的查詢方法。
本文的主要工作如下:
1)針對(duì)現(xiàn)有的關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù),設(shè)計(jì)一種自動(dòng)化構(gòu)建方法,根據(jù)圖數(shù)據(jù)存儲(chǔ)規(guī)范,生成節(jié)點(diǎn)關(guān)系映射圖,完成表數(shù)據(jù)到圖數(shù)據(jù)的轉(zhuǎn)換,并實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)更新;
2)提出了一種基于實(shí)體關(guān)聯(lián)的查詢方法,該方法同時(shí)考慮實(shí)體之間的屬性和關(guān)系兩類語(yǔ)義信息,并采用分層過(guò)濾模型提高查詢效率,在查詢速度和過(guò)濾性能上均有明顯提升。
在知識(shí)圖譜的構(gòu)建方面,目前國(guó)外許多機(jī)構(gòu)都構(gòu)建了千萬(wàn)級(jí)甚至上億級(jí)的大規(guī)模知識(shí)圖譜,如DBpedia、Freebase、GraphDB、Wikidata、WordNet、Yago 等;與此同時(shí),國(guó)內(nèi)也出現(xiàn)越來(lái)越多成熟的知識(shí)圖譜產(chǎn)品,從早期上海交通大學(xué)構(gòu)建的zhishi.me 知識(shí)庫(kù),到百度的知識(shí)圖譜開(kāi)放平臺(tái)、搜狗的知立方、OpenKG中文知識(shí)圖譜、Ownthink通用知識(shí)圖譜等,越來(lái)越多的國(guó)內(nèi)平臺(tái)也已經(jīng)投入到知識(shí)圖譜的研究中,為開(kāi)展知識(shí)圖譜的各方面研究提供了數(shù)據(jù)支持。關(guān)于知識(shí)圖譜構(gòu)建的研究[1-2],已經(jīng)有比較成熟的理論基礎(chǔ),而目前針對(duì)關(guān)系型數(shù)據(jù)庫(kù)的表數(shù)據(jù)構(gòu)建知識(shí)圖譜也有比較成熟的方法,包括本文使用的Neo4j 也有自己的構(gòu)建工具,但是還無(wú)法完全解決數(shù)據(jù)同步更新的問(wèn)題。一般來(lái)說(shuō)目前絕大多數(shù)商業(yè)平臺(tái)主要還是以關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)為主,用戶進(jìn)行操作后,需要將數(shù)據(jù)更新到圖數(shù)據(jù)庫(kù)中,更新時(shí)需要考慮實(shí)體鏈接、實(shí)體消歧等問(wèn)題,以及在更新時(shí)存在增、刪、改等多種情況,因此結(jié)合實(shí)際項(xiàng)目的關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)來(lái)構(gòu)建知識(shí)圖譜仍然具有很大的研究?jī)r(jià)值。
在知識(shí)圖譜查詢和搜索方面,目前主要研究搜索意圖的理解以及實(shí)體搜索兩大方面的內(nèi)容,通過(guò)實(shí)體搜索可以發(fā)現(xiàn)更多相關(guān)實(shí)體或展示實(shí)體間的屬性和關(guān)系。近年來(lái),國(guó)內(nèi)關(guān)于知識(shí)圖譜相關(guān)的研究日益增多,李陽(yáng)等[3]研究了知識(shí)圖譜實(shí)體相似度計(jì)算的通用方法,為知識(shí)圖譜查詢和計(jì)算提供了參考依據(jù);王鑫等[4]研究了目前知識(shí)圖譜可視化查詢領(lǐng)域主流的方法和技術(shù),為知識(shí)圖譜的可視化提供了理論支持;張玲玉等[5]和趙展浩等[6]分別從節(jié)點(diǎn)相關(guān)系數(shù)、圖的拓?fù)浣Y(jié)構(gòu)兩個(gè)方面來(lái)實(shí)現(xiàn)對(duì)圖譜的查詢,雖然在查詢性能上實(shí)現(xiàn)了優(yōu)化,但是查詢時(shí)間較長(zhǎng),實(shí)時(shí)性較差;楊榮等[7]和蘇永浩等[8]設(shè)計(jì)并實(shí)現(xiàn)了知識(shí)圖譜查詢系統(tǒng),但是并沒(méi)有發(fā)揮圖數(shù)據(jù)庫(kù)的強(qiáng)大的計(jì)算能力來(lái)進(jìn)一步改進(jìn)查詢性能。目前知識(shí)圖譜的查詢[9-12]手段主要是以節(jié)點(diǎn)相似度[13-18]作為衡量標(biāo)準(zhǔn),查詢時(shí)會(huì)將相似度最高的實(shí)體作為返回結(jié)果,因此加強(qiáng)查詢的語(yǔ)義關(guān)聯(lián)性是研究重點(diǎn)。
本文所實(shí)現(xiàn)的企業(yè)知識(shí)圖譜的實(shí)體關(guān)聯(lián)查詢系統(tǒng)框架如圖1所示,按構(gòu)建流程順序主要分為以下3個(gè)方面:
圖1 系統(tǒng)框架Fig.1 System framework
1)企業(yè)知識(shí)圖譜的構(gòu)建:本文主要研究的知識(shí)圖譜構(gòu)建方法是根據(jù)圖數(shù)據(jù)庫(kù)的存儲(chǔ)格式標(biāo)準(zhǔn),定義節(jié)點(diǎn)屬性和關(guān)系,并建立節(jié)點(diǎn)關(guān)系映射圖,通過(guò)自動(dòng)化腳本完成傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的表數(shù)據(jù)轉(zhuǎn)化為圖數(shù)據(jù)庫(kù)的圖數(shù)據(jù)任務(wù)。
2)基于實(shí)體關(guān)聯(lián)的查詢方法:構(gòu)建好圖數(shù)據(jù)庫(kù)后,基于關(guān)聯(lián)分析的查詢會(huì)查詢數(shù)據(jù)庫(kù)中與目標(biāo)實(shí)體在結(jié)構(gòu)或?qū)傩陨舷嗨频膱D集合。在本文所實(shí)現(xiàn)的企業(yè)查詢系統(tǒng)中,將節(jié)點(diǎn)相似度作為衡量企業(yè)關(guān)聯(lián)度的一個(gè)標(biāo)準(zhǔn),在此基礎(chǔ)上,為了解決查詢語(yǔ)義程度不高的問(wèn)題,該方法不僅考慮了節(jié)點(diǎn)本身屬性,還考慮了不同節(jié)點(diǎn)之間的關(guān)聯(lián)關(guān)系,以此來(lái)發(fā)掘出與目標(biāo)企業(yè)關(guān)聯(lián)度最高的多家企業(yè)實(shí)體。本文實(shí)現(xiàn)的關(guān)聯(lián)查詢方法使用一種改進(jìn)的相似度相關(guān)系數(shù)來(lái)進(jìn)行計(jì)算,該方法將查詢圖中的特征提取出來(lái),構(gòu)建特征向量或特征集合,如果特征集合的維度相同,則考慮使用Jaccard、Overlap 等相關(guān)系數(shù)的計(jì)算;如果特征集合的維度不同,則考慮使用Cosine、Pearson等相關(guān)系數(shù)的計(jì)算。通過(guò)相關(guān)系數(shù)公式計(jì)算兩個(gè)實(shí)體之間的相似性之后,再通過(guò)動(dòng)態(tài)閾值完成對(duì)查詢集合的過(guò)濾,就可以得到與目標(biāo)節(jié)點(diǎn)相關(guān)聯(lián)的查詢結(jié)果集。
3)知識(shí)圖譜前端可視化展示:本文使用節(jié)點(diǎn)鏈接的方法實(shí)現(xiàn)圖譜的可視化表達(dá),它將本體表示為互連節(jié)點(diǎn),用點(diǎn)或圓等形狀表示節(jié)點(diǎn),節(jié)點(diǎn)間的邊用連線表示,當(dāng)前端獲取到服務(wù)器發(fā)送的數(shù)據(jù)后,會(huì)按照?qǐng)D的數(shù)據(jù)格式標(biāo)準(zhǔn),將數(shù)據(jù)以圖的形式展示出來(lái)。同時(shí)在Web 端使用數(shù)據(jù)驅(qū)動(dòng)文檔(Data-Driven Documents,D3)為知識(shí)圖譜數(shù)據(jù)構(gòu)建力導(dǎo)向圖物理模型,當(dāng)用戶拖動(dòng)或者數(shù)據(jù)變化時(shí),瀏覽器自動(dòng)進(jìn)行渲染,實(shí)現(xiàn)動(dòng)態(tài)調(diào)整數(shù)據(jù)的排布。
要使用知識(shí)圖譜作企業(yè)關(guān)聯(lián)分析,首先需要構(gòu)建知識(shí)圖譜,本文以平臺(tái)中查詢所涉及到的表作為數(shù)據(jù)源,將傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中的表轉(zhuǎn)化為圖數(shù)據(jù)庫(kù)的圖結(jié)構(gòu)數(shù)據(jù)。通過(guò)Python的pandas 庫(kù)來(lái)對(duì)數(shù)據(jù)作預(yù)處理,使處理過(guò)后的數(shù)據(jù)滿足圖數(shù)據(jù)庫(kù)存儲(chǔ)的格式規(guī)范;再通過(guò)Python 的py2neo 庫(kù)和pymysql庫(kù)分別與圖數(shù)據(jù)庫(kù)neo4j 和關(guān)系型數(shù)據(jù)庫(kù)mysql 進(jìn)行連接,建立數(shù)據(jù)庫(kù)通信管道,將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫(kù)導(dǎo)入到圖數(shù)據(jù)庫(kù)中,最終構(gòu)建出外貿(mào)企業(yè)的知識(shí)圖譜。
其中企業(yè)知識(shí)圖譜構(gòu)建步驟如圖2 所示,具體的構(gòu)建步驟如下:
圖2 外貿(mào)企業(yè)知識(shí)圖譜構(gòu)建步驟Fig.2 Steps for constructing knowledge graph of foreign trade enterprise
1)數(shù)據(jù)預(yù)處理:首先將企業(yè)信用認(rèn)證平臺(tái)中存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中的相關(guān)表TB_ENTERPRISEINFO_FUSE(企業(yè)信息融合表)和TB_COMPANY_REGISTER(公司注冊(cè)信息表)去除掉數(shù)據(jù)類型為BLOB、CLOB 等非必要字段、敏感字段以及空數(shù)據(jù)較多的數(shù)據(jù)行,將數(shù)據(jù)以逗號(hào)分隔值(Comma-Separated Values,CSV)格式導(dǎo)出,最終導(dǎo)出約11萬(wàn)家外貿(mào)企業(yè)數(shù)據(jù)。
2)定義實(shí)體和關(guān)系,分析表字段之間的關(guān)系,根據(jù)表字段定義構(gòu)建的知識(shí)圖譜的實(shí)體和關(guān)系如下:
a)實(shí) 體:企業(yè)(enterprise)、地區(qū)(region)、出口國(guó)家(country)、企業(yè)類型(enterprise_type)。
b)關(guān)系:位于(locate)、出口(export)、類型(type)。
3)數(shù)據(jù)導(dǎo)入:通過(guò)Python 讀取到CSV 格式數(shù)據(jù)后,根據(jù)上述的實(shí)體和關(guān)系對(duì)生成實(shí)體關(guān)系映射圖,將數(shù)據(jù)格式化為py2neo 庫(kù)中的Node、Relation 類數(shù)據(jù),分別作為實(shí)體和關(guān)系類數(shù)據(jù)存儲(chǔ)到圖數(shù)據(jù)庫(kù)中,并在本地日志中記錄構(gòu)建信息。
4)數(shù)據(jù)同步:以上為通用構(gòu)建過(guò)程,之后程序會(huì)根據(jù)本地的圖數(shù)據(jù)庫(kù)構(gòu)建日志信息,判斷是否是第一次構(gòu)建,是則會(huì)進(jìn)行定時(shí)監(jiān)聽(tīng),通過(guò)表的時(shí)間戳字段和日志的時(shí)間比較檢查是否有新的數(shù)據(jù),完成數(shù)據(jù)同步。
最終構(gòu)建的知識(shí)圖譜存儲(chǔ)的節(jié)點(diǎn)與關(guān)系信息如圖3所示。
圖3 外貿(mào)企業(yè)圖數(shù)據(jù)庫(kù)查詢界面Fig.3 Foreign trade enterprise graph database query interface
企業(yè)關(guān)聯(lián)查詢從實(shí)體本身和實(shí)體之間的關(guān)聯(lián)關(guān)系兩個(gè)維度去考慮,計(jì)算出目標(biāo)企業(yè)實(shí)體和待查詢的企業(yè)實(shí)體之間的實(shí)體關(guān)聯(lián)度和關(guān)系關(guān)聯(lián)度,通過(guò)求和公式得到總的關(guān)聯(lián)度得分,最終根據(jù)關(guān)聯(lián)度得分的高低,篩選出得分最高的K(K>0)家企業(yè)作為查詢的結(jié)果集,并返回給用戶。
該企業(yè)關(guān)聯(lián)分析總體分4個(gè)階段:
1)路徑過(guò)濾階段。通過(guò)限制節(jié)點(diǎn)的公共關(guān)系個(gè)數(shù)將關(guān)聯(lián)程度較低的節(jié)點(diǎn)先過(guò)濾出來(lái),用來(lái)初步確定與目標(biāo)企業(yè)有一定關(guān)聯(lián)度的候選集,減少計(jì)算量,提高查詢性能。
2)關(guān)系發(fā)掘階段。根據(jù)實(shí)體之間的關(guān)聯(lián)關(guān)系計(jì)算基于關(guān)系的關(guān)聯(lián)度,同時(shí)設(shè)定關(guān)系閾值T1,將候選集中滿足關(guān)系關(guān)聯(lián)度>T1的查詢實(shí)體篩選出來(lái),作為查詢候選集。
3)實(shí)體發(fā)掘階段。將查詢候選集作為輸入,根據(jù)實(shí)體的本體標(biāo)簽計(jì)算基于實(shí)體的關(guān)聯(lián)度,同時(shí)設(shè)定實(shí)體閾值T2,對(duì)候選集作進(jìn)一步篩選和過(guò)濾。
4)總關(guān)聯(lián)度排序階段。根據(jù)關(guān)系關(guān)聯(lián)度和實(shí)體關(guān)聯(lián)度來(lái)對(duì)查詢候選集中的實(shí)體進(jìn)行總關(guān)聯(lián)度計(jì)算,按總關(guān)聯(lián)度得分高低進(jìn)行排序,將排序后的結(jié)果作為查詢結(jié)果集。
最終該企業(yè)關(guān)聯(lián)分析計(jì)算方法流程如圖4所示。
圖4 關(guān)聯(lián)分析計(jì)算流程Fig.4 Association analysis calculation flow
3.2.1 路徑過(guò)濾階段
當(dāng)圖數(shù)據(jù)庫(kù)存儲(chǔ)到百萬(wàn)甚至千萬(wàn)的數(shù)據(jù)量時(shí),對(duì)每一個(gè)查詢節(jié)點(diǎn)都進(jìn)行關(guān)聯(lián)分析會(huì)產(chǎn)生巨大的計(jì)算消耗,這就會(huì)使方法的時(shí)間復(fù)雜度大大提高,從而導(dǎo)致對(duì)企業(yè)的關(guān)聯(lián)分析計(jì)算不再適用于對(duì)實(shí)時(shí)性要求比較高的外貿(mào)企業(yè)查詢系統(tǒng)。所以在企業(yè)關(guān)聯(lián)分析前先通過(guò)路徑過(guò)濾方法快速過(guò)濾,用來(lái)初步篩選出一個(gè)待查詢集合。
路徑過(guò)濾階段通過(guò)圖的路徑搜索方法快速找到和查詢節(jié)點(diǎn)之間的關(guān)系路徑,并計(jì)算路徑的個(gè)數(shù),則可以得到路徑個(gè)數(shù)即為兩個(gè)不同節(jié)點(diǎn)之間總的公共關(guān)系個(gè)數(shù),并且以公共關(guān)系個(gè)數(shù)作為過(guò)濾條件,過(guò)濾出查詢候選集。該過(guò)濾條件是下一階段關(guān)系發(fā)掘階段的充要條件,原因有兩點(diǎn):一是如果無(wú)公共關(guān)系,則可以近似認(rèn)為兩實(shí)體的關(guān)聯(lián)度為0;二是如果兩個(gè)節(jié)點(diǎn)之間的公共關(guān)系個(gè)數(shù)很少,則可以認(rèn)為兩實(shí)體之間的關(guān)聯(lián)度較低,不在查詢集合范圍之內(nèi)。如果關(guān)聯(lián)節(jié)點(diǎn)之間滿足至少有N(N>0)條公共關(guān)系的節(jié)點(diǎn),則N越大過(guò)濾效果越好,以此來(lái)保證搜索到的節(jié)點(diǎn)能滿足過(guò)濾條件。
由上可定義路徑過(guò)濾階段的過(guò)濾方法如圖5 所示,記目標(biāo)節(jié)點(diǎn)的自身關(guān)系個(gè)數(shù)為self以及與查詢節(jié)點(diǎn)的公共路徑個(gè)數(shù)為U,考慮到不同節(jié)點(diǎn)的self和U都不相同,則取U>self/2作為過(guò)濾條件。如圖5所示,假設(shè)查詢的目標(biāo)企業(yè)節(jié)點(diǎn)有3個(gè)鄰居節(jié)點(diǎn),則自身關(guān)系個(gè)數(shù)為3,與目標(biāo)關(guān)聯(lián)的企業(yè)節(jié)點(diǎn)的公共路徑個(gè)數(shù)為2 滿足過(guò)濾條件,而非關(guān)聯(lián)節(jié)點(diǎn)的公共路徑個(gè)數(shù)為1 即不滿足過(guò)濾條件。這樣通過(guò)路徑搜索過(guò)濾就大大減少了待計(jì)算的查詢實(shí)體,提高方法效率和查詢的實(shí)時(shí)性。
圖5 路徑過(guò)濾階段的過(guò)濾方法Fig.5 Filtering method for path filtering stage
3.2.2 實(shí)體關(guān)系發(fā)掘階段
根據(jù)企業(yè)的外貿(mào)出口、所在地區(qū)以及企業(yè)類型三種關(guān)聯(lián)關(guān)系作為關(guān)系發(fā)掘的條件。首先設(shè)定過(guò)濾閾值,若待查詢企業(yè)計(jì)算出的關(guān)系關(guān)聯(lián)度大于該閾值,則將該企業(yè)作為備選結(jié)果集中的一個(gè)。針對(duì)不同種類的關(guān)聯(lián)關(guān)系,所采取的計(jì)算方法也不同,在計(jì)算關(guān)聯(lián)度時(shí)需要考慮三種關(guān)系的權(quán)重值。
由上可定義關(guān)系發(fā)掘的計(jì)算方法:將目標(biāo)企業(yè)節(jié)點(diǎn)記為q,待查詢企業(yè)節(jié)點(diǎn)記為g,計(jì)算權(quán)重表示為wi,兩個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的關(guān)系集合記為Rq和Rg,其中集合中所對(duì)應(yīng)的外貿(mào)出口、所在地區(qū)以及企業(yè)類型三個(gè)關(guān)聯(lián)關(guān)系分別為Rq1、Rq2、Rq3和Rg1、Rg2、Rg3。則兩節(jié)點(diǎn)的關(guān)聯(lián)相似度得分可表示為:
在傳統(tǒng)相似度的查詢過(guò)濾方法中,一般會(huì)定義閾值作為過(guò)濾條件,設(shè)關(guān)系發(fā)掘的閾值為T1,那么過(guò)濾的不等式就可以表示為sim(q,g) >T1,但是在本系統(tǒng)中考慮到不同節(jié)點(diǎn)之間的三種關(guān)系總和存在差異,閾值應(yīng)該不是唯一的,所以定義企業(yè)查詢過(guò)濾的動(dòng)態(tài)閾值Tdynamic隨節(jié)點(diǎn)關(guān)系總數(shù)n的變化而變化,可以得到公式:
最后,總的過(guò)濾不等式就可以表示為:
如果查詢的企業(yè)滿足以上過(guò)濾條件,就將該查詢企業(yè)作為查詢候選集中的一個(gè)。
3.2.3 實(shí)體屬性發(fā)掘階段
經(jīng)過(guò)關(guān)系發(fā)掘后,再對(duì)以上備選結(jié)果集中的企業(yè)進(jìn)行本體發(fā)掘,根據(jù)備選結(jié)果集中企業(yè)節(jié)點(diǎn)的標(biāo)簽屬性,包括成立時(shí)間、注冊(cè)資本、注冊(cè)地址以及公司名稱一共4 個(gè)標(biāo)簽屬性,其中標(biāo)簽屬性的數(shù)據(jù)類型分為數(shù)值類型、日期類型、字符串類型,那么根據(jù)標(biāo)簽數(shù)據(jù)類型分別作不同的關(guān)聯(lián)度計(jì)算,來(lái)綜合進(jìn)行實(shí)體關(guān)聯(lián)度評(píng)價(jià),設(shè)定實(shí)體關(guān)聯(lián)相似度的閾值為T2,若計(jì)算的關(guān)聯(lián)度小于T2,則將該企業(yè)從備選結(jié)果集中刪除。
由此可定義本體發(fā)掘的計(jì)算方法:將目標(biāo)企業(yè)節(jié)點(diǎn)記為q,待查詢企業(yè)節(jié)點(diǎn)記為g,根據(jù)實(shí)體屬性數(shù)據(jù)類型,記目標(biāo)企業(yè)節(jié)點(diǎn)q數(shù)值類型、日期類型、字符串類型的標(biāo)簽分別為L(zhǎng)num、Ldate、Lstring;待查詢企業(yè)節(jié)點(diǎn)g數(shù)值類型、日期類型、字符串類型的標(biāo)簽分別為L(zhǎng)num'、Ldate'、Lstring'。
則對(duì)數(shù)值型標(biāo)簽屬性的關(guān)聯(lián)相似度得分計(jì)算公式可表示為:
對(duì)日期型標(biāo)簽屬性,可以考慮先將日期轉(zhuǎn)化為時(shí)間戳的格式,即當(dāng)前日期與指定日期所相差的毫秒數(shù),此時(shí)日期型標(biāo)簽屬性就轉(zhuǎn)化為數(shù)值類型值,再通過(guò)以上數(shù)值型標(biāo)簽的關(guān)聯(lián)度計(jì)算公式計(jì)算得到日期型的關(guān)聯(lián)度得分Scoredate(q,g)。
對(duì)字符串類型標(biāo)簽屬性,考慮使用萊文斯坦距離進(jìn)行計(jì)算和度量,萊文斯坦是一種文本編輯距離的計(jì)算方法,它針對(duì)兩個(gè)不同文本之間的直接差異程度制定量化規(guī)則來(lái)進(jìn)行量測(cè),量測(cè)的方式是看至少需要多少次編輯操作才能將其中一個(gè)字符串變成另外一個(gè)字符串,允許的編輯操作一般包括單個(gè)字符的替換、插入和刪除操作。記兩個(gè)文本之間的萊文斯坦距離為Distance(Lstring,Lstring'),且該值不等于0,則所有備選結(jié)果集中的最小萊文斯坦距離可表示為Min({d:Distance})。最終字符串類型標(biāo)簽的計(jì)算公式可表示為:
綜合上述三種類型的標(biāo)簽關(guān)聯(lián)度公式,可以得到總的標(biāo)簽關(guān)聯(lián)度公式為:
3.2.4 總關(guān)聯(lián)度排序階段
在最終的結(jié)果集中,結(jié)合本體發(fā)掘的關(guān)聯(lián)相似度和關(guān)系發(fā)掘的關(guān)聯(lián)相似度,對(duì)每個(gè)節(jié)點(diǎn)計(jì)算總得分后再進(jìn)行排序,獲得最終排序后的結(jié)果集,并返回給用戶。
通過(guò)企業(yè)關(guān)聯(lián)查詢的整體流程可以發(fā)現(xiàn),關(guān)系發(fā)掘階段決定了查詢候選集合的大小,在計(jì)算總關(guān)聯(lián)度得分時(shí)應(yīng)占據(jù)更大的比重,而本體發(fā)掘則只影響查詢候選集的總關(guān)聯(lián)度得分,所以記關(guān)聯(lián)度比重分別為α、β(其中α+β=1,且α>β),則總關(guān)聯(lián)度得分公式可表示為:
知識(shí)圖譜的可視化是數(shù)據(jù)可視化技術(shù)中的一個(gè)分支,它能夠直觀地將實(shí)體之間的關(guān)系給展示出來(lái)。在系統(tǒng)查詢到關(guān)聯(lián)數(shù)據(jù)后,需要利用可視化技術(shù)將查詢到的數(shù)據(jù)顯示到瀏覽器上,目前Web 前端有很多主流的可視化圖形庫(kù),本次前端可視化選用D3 實(shí)現(xiàn),它是一個(gè)JavaScript 的函數(shù)庫(kù),底層是通過(guò)可縮放矢量圖形(Scalable Vector Graphics,SVG)來(lái)完成繪圖任務(wù),D3 將有關(guān)SVG 繪圖的操作封裝起來(lái),使開(kāi)發(fā)人員可以更好地注重于圖表的布局和邏輯。
知識(shí)圖譜是基于節(jié)點(diǎn)和鏈接關(guān)系的,目前有很多關(guān)于知識(shí)圖譜的可視化方法,其中力導(dǎo)向圖是節(jié)點(diǎn)鏈接可視表達(dá)中的一種,通過(guò)綁定節(jié)點(diǎn)、關(guān)系兩類數(shù)據(jù)來(lái)進(jìn)行渲染,每一個(gè)節(jié)點(diǎn)數(shù)據(jù)都會(huì)隨機(jī)在瀏覽器上某坐標(biāo)處生成一個(gè)圓形,在根據(jù)關(guān)系數(shù)據(jù)在兩節(jié)點(diǎn)間繪制線段來(lái)描述關(guān)系,繪制完成后通過(guò)模擬兩節(jié)點(diǎn)之間的牽引力,在斥力和引力的作用下,節(jié)點(diǎn)就從原本的隨機(jī)無(wú)序布局不斷位移,最后逐漸趨于平衡有序的布局。
根據(jù)力導(dǎo)向圖原理,通過(guò)D3庫(kù)將查詢到的數(shù)據(jù)進(jìn)行可視化展示,最終在瀏覽器顯示的外貿(mào)企業(yè)知識(shí)圖譜片段如圖6所示。
圖6 外貿(mào)企業(yè)知識(shí)圖譜前端可視化片段Fig.6 Front-end visualized fragments of knowledge graph of foreign trade enterprises
本文實(shí)現(xiàn)的外貿(mào)企業(yè)查詢系統(tǒng)使用了JavaScript 的Node環(huán)境完成前后端開(kāi)發(fā)工作,前端采用D3+Ajax 實(shí)現(xiàn)數(shù)據(jù)交互和圖譜的可視化展示工作,后端采用koa2 框架為前端提供數(shù)據(jù)接口服務(wù),并完成外貿(mào)企業(yè)的關(guān)聯(lián)分析計(jì)算任務(wù)。
該查詢系統(tǒng)是在實(shí)際項(xiàng)目的基礎(chǔ)上,針對(duì)外貿(mào)企業(yè)查詢這一功能所實(shí)現(xiàn)的Nodejs前后端分離項(xiàng)目。系統(tǒng)整體構(gòu)建流程如下:
1)確定系統(tǒng)開(kāi)發(fā)技術(shù),包括前后端框架技術(shù)選型、圖數(shù)據(jù)庫(kù)存儲(chǔ)、編程環(huán)境、開(kāi)發(fā)工具和后臺(tái)服務(wù)器。
2)完成結(jié)構(gòu)化數(shù)據(jù)到圖結(jié)構(gòu)數(shù)據(jù)的轉(zhuǎn)化以及圖數(shù)據(jù)庫(kù)的構(gòu)建過(guò)程。
3)前后端聯(lián)調(diào),實(shí)現(xiàn)整體查詢展示功能一體化。
根據(jù)構(gòu)建流程成功運(yùn)行系統(tǒng)服務(wù)之后,用戶在頁(yè)面輸入查詢內(nèi)容時(shí),前端會(huì)通過(guò)Ajax 向后端請(qǐng)求數(shù)據(jù),后端服務(wù)器會(huì)自動(dòng)查詢關(guān)鍵詞對(duì)應(yīng)的目標(biāo)企業(yè)和與目標(biāo)企業(yè)相關(guān)聯(lián)的其他企業(yè)信息作為結(jié)果返回,前端接收數(shù)據(jù)后將結(jié)果展示給用戶。
以查詢玉環(huán)某設(shè)備有限公司為例,最終后臺(tái)查詢結(jié)果及前端展示效果如圖7所示。
圖7 查詢結(jié)果展示Fig.7 Query result display
本文所實(shí)現(xiàn)的查詢系統(tǒng)運(yùn)行的具體硬件環(huán)境為:Intel Core i5-8300 CPU@ 2.30 GHz,GeForce GTX 1050 GPU,20 GB RAM,操作系統(tǒng)為Windows 10;具體軟件環(huán)境為:開(kāi)發(fā)語(yǔ)言為JavaScript,集成開(kāi)發(fā)環(huán)境使用Visual Studio Code 的V1.49.2版本來(lái)編寫(xiě)代碼,后端采用Node 的V12.18.2 版本實(shí)現(xiàn)關(guān)聯(lián)查詢功能,圖數(shù)據(jù)庫(kù)采用Neo4j的3.5.6版本來(lái)存儲(chǔ)圖數(shù)據(jù)。
本文選用了企業(yè)信用認(rèn)證平臺(tái)中約11 萬(wàn)條外貿(mào)企業(yè)測(cè)試用數(shù)據(jù)作為實(shí)驗(yàn)樣本,構(gòu)建了基于Neo4j 的圖數(shù)據(jù)庫(kù),在此基礎(chǔ)上根據(jù)節(jié)點(diǎn)自身的關(guān)系數(shù)來(lái)衡量節(jié)點(diǎn)的關(guān)聯(lián)強(qiáng)度,并將企業(yè)節(jié)點(diǎn)分為弱關(guān)聯(lián)節(jié)點(diǎn)(節(jié)點(diǎn)關(guān)系數(shù)小于10)、中等關(guān)聯(lián)節(jié)點(diǎn)(節(jié)點(diǎn)關(guān)系數(shù)在10~20)、強(qiáng)關(guān)聯(lián)節(jié)點(diǎn)(節(jié)點(diǎn)關(guān)系數(shù)大于20),根據(jù)節(jié)點(diǎn)分類情況,對(duì)每一類節(jié)點(diǎn)隨機(jī)抽取10 家企業(yè)實(shí)體做關(guān)聯(lián)查詢,計(jì)算不同參數(shù)下的平均過(guò)濾性能,并和目前常見(jiàn)的查詢方法比較過(guò)濾性能和查詢時(shí)間。
圖8 單獨(dú)測(cè)試了路徑過(guò)濾階段隨著查詢節(jié)點(diǎn)和候選節(jié)點(diǎn)的公共關(guān)系N的變化,所得到的過(guò)濾結(jié)果集大小,由圖8 的實(shí)驗(yàn)數(shù)據(jù)可以說(shuō)明,按照一定的公共關(guān)系數(shù)作為過(guò)濾條件,可以過(guò)濾掉大部分的無(wú)關(guān)節(jié)點(diǎn),減少無(wú)關(guān)節(jié)點(diǎn)的計(jì)算消耗和時(shí)間消耗。
圖8 過(guò)濾階段公共關(guān)系數(shù)對(duì)過(guò)濾性能的影響Fig.8 Influence of the number of public relations in filtering stage on filtering performance
圖9 單獨(dú)測(cè)試了關(guān)聯(lián)查詢中關(guān)系發(fā)掘階段的過(guò)濾性能,在原有的動(dòng)態(tài)閾值T的基礎(chǔ)上,每次變化間隔為0.05,記錄不同的閾值所得到的過(guò)濾結(jié)果集大小。從圖9 可看出,在動(dòng)態(tài)閾值T附近的過(guò)濾性效趨于平穩(wěn),并且能夠較好的過(guò)濾查詢結(jié)果。
圖9 動(dòng)態(tài)閾值的變化對(duì)過(guò)濾性能的影響Fig.9 Influence of dynamic threshold change on filtering performance
圖10 考慮了關(guān)系發(fā)掘階段在極端情況下的過(guò)濾性能,極端情況指的是查詢節(jié)點(diǎn)的公共關(guān)系數(shù)小于關(guān)系類型個(gè)數(shù)(本實(shí)驗(yàn)有3 類關(guān)系:locate、type、region),展示了針對(duì)動(dòng)態(tài)閾值和傳統(tǒng)過(guò)濾方法中使用靜態(tài)閾值過(guò)濾的效果比較,可以看到極端情況下使用動(dòng)態(tài)閾值的過(guò)濾性能明顯要好于靜態(tài)閾值。
圖10 極端情況下不同動(dòng)靜態(tài)閾值的過(guò)濾性能對(duì)比Fig.10 Comparison of filtering performance of different dynamic and static thresholds under extreme conditions
接下來(lái),將本文系統(tǒng)的關(guān)聯(lián)查詢和僅單獨(dú)使用Jaccard、Overlap 兩種節(jié)點(diǎn)相似度計(jì)算方法進(jìn)行對(duì)比,測(cè)試并比較了三種方法所得到的過(guò)濾結(jié)果數(shù)和查詢時(shí)間,結(jié)果如圖11~12 所示。橫軸同樣按查詢節(jié)點(diǎn)的關(guān)系數(shù)分為弱關(guān)聯(lián)節(jié)點(diǎn)、中等關(guān)聯(lián)節(jié)點(diǎn)、強(qiáng)關(guān)聯(lián)節(jié)點(diǎn)來(lái)比較,圖11指出使用4層過(guò)濾的關(guān)聯(lián)查詢?cè)诓樵冃噬掀毡閮?yōu)于其他方法,同時(shí)圖12 指出關(guān)聯(lián)查詢和Jaccard 查詢的過(guò)濾性能要明顯比使用Overlap 計(jì)算關(guān)聯(lián)程度更好,并且由于關(guān)聯(lián)查詢?cè)诒倔w發(fā)掘階段考慮了節(jié)點(diǎn)本身的屬性,會(huì)重新計(jì)算關(guān)聯(lián)程度,這樣就避免了在某些候選節(jié)點(diǎn)的關(guān)系關(guān)聯(lián)度達(dá)不到閾值的情況下,使用Jaccard 計(jì)算后查詢結(jié)果集過(guò)少甚至為0的情況。
圖11 不同關(guān)聯(lián)程度時(shí)三種方法查詢時(shí)間對(duì)比Fig.11 Comparison of query time of three methods in different degrees of relevance
圖12 不同關(guān)聯(lián)程度時(shí)三種方法查詢結(jié)果集個(gè)數(shù)對(duì)比Fig.12 Comparison of numbers of query result sets of three methods in different degrees of relevance
最后,為了驗(yàn)證方法的有效性,將該關(guān)聯(lián)查詢方法分別運(yùn)行在關(guān)系數(shù)據(jù)庫(kù)和圖數(shù)據(jù)庫(kù)上,同時(shí)選取基于鄰居向量的Ness[19]方法和基于標(biāo)簽相似度的NeMa[20]兩種代表性的圖匹配查詢方法與實(shí)體關(guān)聯(lián)查詢方法做性能對(duì)比,實(shí)驗(yàn)結(jié)果如圖13~14所示。Ness 方法采用迭代驗(yàn)證,先進(jìn)行標(biāo)簽匹配,再計(jì)算查詢節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的匹配開(kāi)銷;NeMa方法結(jié)合了節(jié)點(diǎn)標(biāo)簽和鄰居結(jié)構(gòu)計(jì)算相似度,來(lái)匹配相似節(jié)點(diǎn)。由于本文圖譜的節(jié)點(diǎn)沒(méi)有二路鄰居,所以兩個(gè)基準(zhǔn)方法均以一路的鄰居節(jié)點(diǎn)來(lái)進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,關(guān)聯(lián)查詢方法并不適用在關(guān)系數(shù)據(jù)庫(kù)上,在過(guò)濾性能相同的情況下,查詢的時(shí)間開(kāi)銷較大,不適合應(yīng)用在實(shí)時(shí)性要求較高的查詢系統(tǒng)。在與兩種基準(zhǔn)方法的對(duì)比下,雖然查詢關(guān)系數(shù)少節(jié)點(diǎn)的查詢效率高于兩種基準(zhǔn)方法,但是由于極端情況下關(guān)系數(shù)多的查詢節(jié)點(diǎn)對(duì)標(biāo)簽信息的計(jì)算增加,導(dǎo)致關(guān)聯(lián)查詢對(duì)強(qiáng)關(guān)聯(lián)節(jié)點(diǎn)的查詢時(shí)間要明顯優(yōu)于兩種基準(zhǔn)方法,最終查詢時(shí)間相較于兩種基準(zhǔn)方法平均降低了28.5%;同時(shí)由于關(guān)聯(lián)查詢結(jié)合了屬性和關(guān)系信息,其過(guò)濾性能在三種類型的節(jié)點(diǎn)上均優(yōu)于兩種基準(zhǔn)方法,平均提高了29.6%。綜合以上兩點(diǎn)可以得出,采用四個(gè)階段的關(guān)聯(lián)查詢不僅有更快的查詢響應(yīng)速度,而且查詢的過(guò)濾性能也更強(qiáng)。
圖13 不同關(guān)聯(lián)程度時(shí)方法查詢時(shí)間對(duì)比Fig.13 Comparison of query time of methods in different degrees of relevance
圖14 不同關(guān)聯(lián)程度時(shí)方法查詢結(jié)果集個(gè)數(shù)對(duì)比Fig.14 Comparison of numbers of query result sets of methods in different degrees of relevance
本文在知識(shí)圖譜查詢問(wèn)題的研究中,以實(shí)際項(xiàng)目——外貿(mào)企業(yè)信用認(rèn)證服務(wù)平臺(tái)為背景,首先基于現(xiàn)有的關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)構(gòu)建企業(yè)知識(shí)圖譜,然后提出了針對(duì)企業(yè)實(shí)體的關(guān)聯(lián)查詢方法,實(shí)現(xiàn)發(fā)掘與目標(biāo)企業(yè)相關(guān)聯(lián)其他企業(yè)的功能,可以為企業(yè)提供更多有價(jià)值的信息,促進(jìn)企業(yè)之間的貿(mào)易與合作。
通過(guò)實(shí)驗(yàn)數(shù)據(jù)對(duì)比,驗(yàn)證了本文提出的查詢方法在過(guò)濾性能和查詢效率上均優(yōu)于傳統(tǒng)圖查詢方法。未來(lái)本文將進(jìn)一步考慮加入更多的實(shí)體屬性和關(guān)系來(lái)完善企業(yè)信息,降低數(shù)據(jù)噪聲,并在原有查詢的基礎(chǔ)上加入更多的特征,提高查詢的準(zhǔn)確性。