李 璇,吳 雷,2,姜 夢(mèng),潘 曉*
(1.石家莊鐵道大學(xué),河北 石家莊 050043;2.燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004)
隨著移動(dòng)定位設(shè)備、大數(shù)據(jù)技術(shù)的不斷發(fā)展,人類活動(dòng)每時(shí)每刻都會(huì)產(chǎn)生大量帶有位置坐標(biāo)和時(shí)間標(biāo)簽的軌跡大數(shù)據(jù)。軌跡大數(shù)據(jù)中蘊(yùn)含著豐富的路網(wǎng)特性與交通特性,來(lái)源廣泛,數(shù)據(jù)格式多樣。軌跡大數(shù)據(jù)中的時(shí)空維度動(dòng)態(tài)關(guān)聯(lián)特性被離散化表示,語(yǔ)義特征被弱化,使得從軌跡大數(shù)據(jù)中挖掘有價(jià)值的信息變得困難[1-3]?;诋悩?gòu)圖結(jié)構(gòu)的知識(shí)圖譜為海量、異構(gòu)、動(dòng)態(tài)的數(shù)據(jù)表達(dá)、組織、管理提供了一種有效的方式,更接近于人類的認(rèn)知思維[3]。目前,知識(shí)圖譜的構(gòu)建方式主要包括自底向上和自頂向下兩種[4],兩種方式均沒(méi)有標(biāo)準(zhǔn)且統(tǒng)一的構(gòu)建流程,其中自頂向下的方式多用于借助百科類網(wǎng)站、專家知識(shí)等數(shù)據(jù)源,從高質(zhì)量數(shù)據(jù)中提取本體和模式信息,再加入到知識(shí)庫(kù)中,采用志愿者眾包編輯數(shù)據(jù)頁(yè)面或咨詢專家的方式來(lái)構(gòu)建,費(fèi)時(shí)費(fèi)力費(fèi)財(cái)[5]。另外,數(shù)字化時(shí)代中每個(gè)企業(yè)或組織在其業(yè)務(wù)系統(tǒng)中都積累了大量數(shù)據(jù),原有系統(tǒng)已不能滿足人們迅速、準(zhǔn)確、智能獲取信息的需求;更多的用戶希望數(shù)據(jù)得到更好的組織,進(jìn)而為數(shù)據(jù)擁有者提供快速準(zhǔn)確的知識(shí)抽取、加工,幫助智能決策。領(lǐng)域知識(shí)圖譜可采用自底向上的方式構(gòu)建,從大量的業(yè)務(wù)數(shù)據(jù)中提取置信度高的資源模式,方便查詢、發(fā)現(xiàn)和挖掘知識(shí)[6-7]。因此,本文基于已有的網(wǎng)約車軌跡大數(shù)據(jù),采用知識(shí)圖譜表達(dá)交通實(shí)體和關(guān)系的多樣性。基于存儲(chǔ)在MySQL中的網(wǎng)約車軌跡和訂單信息等業(yè)務(wù)數(shù)據(jù),自底向上構(gòu)建司機(jī)出行交通知識(shí)圖譜,提取司機(jī)出行特點(diǎn)與規(guī)律,發(fā)現(xiàn)和挖掘隱藏知識(shí),為交通預(yù)測(cè)和決策提供更多的依據(jù)。
綜上所述,本文貢獻(xiàn)在于,基于新的知識(shí)需求探索出了從關(guān)系型數(shù)據(jù)庫(kù)到知識(shí)圖譜自動(dòng)轉(zhuǎn)換與構(gòu)建的路徑;在真實(shí)數(shù)據(jù)集上構(gòu)建了司機(jī)出行知識(shí)圖譜,可通過(guò)Neo4j的Cypher語(yǔ)言進(jìn)行交通知識(shí)查詢,在目標(biāo)領(lǐng)域的分析上具有實(shí)用價(jià)值。
本文采用滴滴出行蓋亞數(shù)據(jù)開放計(jì)劃提供的2020年8月深圳市網(wǎng)約車的真實(shí)業(yè)務(wù)訂單數(shù)據(jù),具體包括路網(wǎng)拓?fù)鋽?shù)據(jù)和訂單行程信息,路網(wǎng)拓?fù)鋽?shù)據(jù)存儲(chǔ)在CSV文件中,結(jié)構(gòu)為。經(jīng)統(tǒng)計(jì),一個(gè)月的訂單數(shù)量為8 562 059條,涵蓋了80 399位網(wǎng)約車司機(jī)。將數(shù)據(jù)源中的訂單行程數(shù)據(jù)存儲(chǔ)在MySQL中,結(jié)構(gòu)如表1~3所示。
表1 訂單信息表
表2 訂單下軌跡的道路小段信息表
表3 訂單下軌跡的路口信息表
對(duì)該月內(nèi)每位司機(jī)的接單數(shù)量進(jìn)行統(tǒng)計(jì)分析發(fā)現(xiàn),該月只接單一次的司機(jī)人數(shù)最多,活躍度最低;活躍度最高的司機(jī)在該月接單603次,如圖1所示,司機(jī)接單數(shù)量呈長(zhǎng)尾右偏分布。
圖1 司機(jī)活躍度分布直方圖
網(wǎng)約車司機(jī)的訂單數(shù)量一定程度上反映了司機(jī)在某交通區(qū)域內(nèi)的通行頻率。本文選取活躍度位于Top5%的司機(jī),從每天上午8:00開始,以每5 min為一個(gè)時(shí)間戳、24 h為一循環(huán),時(shí)間戳的范圍為0~288,查看所選司機(jī)在不同時(shí)間段的訂單流量分布情況,如圖2所示,可以看出,司機(jī)接單呈現(xiàn)出早高峰和晚高峰的特點(diǎn),大量訂單產(chǎn)生在7:00—23:00時(shí)間段內(nèi),符合通勤規(guī)律。
圖2 訂單流量分布直方圖
自底向上構(gòu)建知識(shí)圖譜,即從數(shù)據(jù)層出發(fā)首先歸納實(shí)體,再抽取實(shí)體、屬性和實(shí)體間的關(guān)系,然后歸納知識(shí)并對(duì)知識(shí)進(jìn)行存儲(chǔ),最終實(shí)現(xiàn)知識(shí)圖譜的構(gòu)建。其中,知識(shí)歸納的核心是知識(shí)抽取、知識(shí)融合、知識(shí)補(bǔ)全。存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中的出租車訂單行程數(shù)據(jù)包含大量的交通實(shí)體、屬性和實(shí)體間的關(guān)系,信息散落在不同的數(shù)據(jù)表中被割裂,對(duì)于數(shù)據(jù)查詢不利,較難從中獲取交通知識(shí)。本文采用五步法,通過(guò)知識(shí)抽取、知識(shí)存儲(chǔ)、知識(shí)引入、知識(shí)融合和知識(shí)補(bǔ)全,實(shí)現(xiàn)了從MySQL存儲(chǔ)的網(wǎng)約車業(yè)務(wù)數(shù)據(jù)到司機(jī)出行知識(shí)圖譜的構(gòu)建??傮w構(gòu)建流程如圖3所示。
圖3 總體構(gòu)建流程圖
2.2.1 知識(shí)抽取
首先,梳理存儲(chǔ)在MySQL訂單行程數(shù)據(jù)中數(shù)據(jù)的含義和關(guān)系,明確交通事件的實(shí)體、實(shí)體屬性以及實(shí)體間的關(guān)系,根據(jù)數(shù)據(jù)間的關(guān)聯(lián)和特征,初步分析交通軌跡的簡(jiǎn)要特征;然后,根據(jù)所描述對(duì)象的不同,分為司機(jī)、訂單、路段和路口4大類。由表1~3可知,司機(jī)與訂單具有一對(duì)多的關(guān)系,訂單與軌跡具有一對(duì)一和一對(duì)多的關(guān)系,如視訂單為一個(gè)實(shí)體,訂單編號(hào)、訂單行程總時(shí)間、訂單路線距離是屬性。
本文采用D2R技術(shù)從網(wǎng)約車業(yè)務(wù)數(shù)據(jù)中抽取知識(shí)。D2R技術(shù),即Database to RDF,是一種能從關(guān)系型數(shù)據(jù)庫(kù)中抽取知識(shí)的技術(shù),主要包括D2R Server、D2RQ Engine和D2RQ Mapping語(yǔ)言。D2RQ根據(jù)可定制的D2RQ Mapping文件將關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)化為RDF格式。RDF,即資源描述框架,是一種用于描述事物的方法,其本質(zhì)是一種數(shù)據(jù)模型。RDF形式上表示為SPO三元組,即<主體,謂詞,賓語(yǔ)>,既可稱為一條語(yǔ)句,也可表示知識(shí)圖譜中的一條知識(shí)[8]。在Mapping文件中定義了整個(gè)映射的主要模式:數(shù)據(jù)庫(kù)中的表映射為一個(gè)類,表中的每一行是一個(gè)資源或?qū)嵗?,每一列是資源的屬性,表與表的外鍵則映射為關(guān)系[9]。本文基于D2RQ工具對(duì)MySQL中的訂單行程數(shù)據(jù)進(jìn)行知識(shí)抽取,以一條訂單信息為例,說(shuō)明從二維表數(shù)據(jù)到RDF數(shù)據(jù)的轉(zhuǎn)化過(guò)程。
MySQL中在2020年8月1日記錄了一條訂單編號(hào)為1612040的訂單。通過(guò)D2RQ工具得到的RDF數(shù)據(jù)為:
這條RDF數(shù)據(jù)表示為訂單1612040和日期20200801之間的關(guān)系是tbl_order_date,即在2020年8月1日產(chǎn)生了一條訂單編號(hào)為1612040的訂單。
2.2.2 知識(shí)存儲(chǔ)
通過(guò)上述操作,將存儲(chǔ)在MySQL中的訂單行程數(shù)據(jù)轉(zhuǎn)化為大量的RDF數(shù)據(jù)。知識(shí)圖譜主要包括RDF和圖數(shù)據(jù)庫(kù)兩種存儲(chǔ)方式,目前普遍認(rèn)為,RDF的重點(diǎn)在于數(shù)據(jù)發(fā)布和資源共享,圖數(shù)據(jù)庫(kù)的重點(diǎn)在于對(duì)圖數(shù)據(jù)的高效查詢和搜索[10]。因此,本文選擇主流圖數(shù)據(jù)庫(kù)Neo4j來(lái)存儲(chǔ)知識(shí)圖譜。
利用Neo4j的Neosemantics插件將生成的大量RDF數(shù)據(jù)導(dǎo)入到Neo4j中進(jìn)行存儲(chǔ)。在Neo4j中,知識(shí)便以圖的形式組織在一起,進(jìn)而形成了基于屬性圖的知識(shí)圖譜。利用Neo4j的Cypher語(yǔ)言進(jìn)行交通實(shí)體、關(guān)系和相關(guān)實(shí)體屬性的查詢,獲得與司機(jī)出行相關(guān)的知識(shí),如某時(shí)段路網(wǎng)交通狀態(tài)、司機(jī)歷史軌跡和各時(shí)段網(wǎng)約車流量等。此外,利用Neo4j的可視化交互前端可以圖的形式展示交通實(shí)體、關(guān)系和屬性以及規(guī)模。
由MySQL中的訂單行程數(shù)據(jù)構(gòu)建的圖譜如圖4所示,以司機(jī)節(jié)點(diǎn)為核心,關(guān)聯(lián)到與該司機(jī)相關(guān)的訂單節(jié)點(diǎn),再由訂單節(jié)點(diǎn)關(guān)聯(lián)到該訂單行程軌跡,具體包括路段和路口。然而,這些路段和路口在圖譜中并沒(méi)有以軌跡的形式展現(xiàn),沒(méi)有還原出原有訂單行程的軌跡信息,軌跡序列仍是離散的形式。對(duì)于不同的業(yè)務(wù)訂單,其訂單行程軌跡可能存在路段交集。一方面,圖4中的圖譜不能直接顯示存在路段交集的軌跡;另一方面,這些路段交集具有相同的link id和拓?fù)潢P(guān)系,在圖譜中會(huì)出現(xiàn)多次。
圖4 訂單行程數(shù)據(jù)形成的圖譜
2.2.3 知識(shí)引入
網(wǎng)約車軌跡記錄了司機(jī)出行過(guò)程中車輛移動(dòng)過(guò)程和車輛狀態(tài)變化,包含網(wǎng)約車司機(jī)出行的知識(shí)。為了連續(xù)表達(dá)訂單行程中重要的軌跡信息,完整還原司機(jī)出行的全過(guò)程,本文將動(dòng)態(tài)的訂單業(yè)務(wù)數(shù)據(jù)與靜態(tài)的交通路網(wǎng)相結(jié)合,使訂單行程軌跡關(guān)聯(lián)到靜態(tài)路網(wǎng)上。本文利用Neo4j的load CSV功能和Cypher語(yǔ)言批量建立路段節(jié)點(diǎn)與路段間的拓?fù)潢P(guān)系,再將靜態(tài)的路網(wǎng)知識(shí)引入,最終在Neo4j中建立路網(wǎng)拓?fù)鋱D。具體構(gòu)建流程如圖5所示。
圖5 路網(wǎng)圖譜構(gòu)建流程圖
2.2.4 知識(shí)融合
如圖4所示,僅由訂單軌跡形成的圖譜不足以表示司機(jī)從接單、行駛再到目的地的全過(guò)程,且難以體現(xiàn)軌跡特點(diǎn)。因此,本文將訂單行程數(shù)據(jù)形成的圖譜與路網(wǎng)拓?fù)湫纬傻膱D譜進(jìn)行知識(shí)融合,使訂單行程軌跡關(guān)聯(lián)到靜態(tài)路網(wǎng)上。本文將具有相同link id的訂單行程軌跡路段與路網(wǎng)中的路段建立關(guān)系,表達(dá)為路網(wǎng)中的路段在不同訂單軌跡下的狀態(tài)。狀態(tài)信息包括在此訂單下路段的通行時(shí)間、通行比例和路況狀態(tài)。經(jīng)過(guò)上述處理后,離散的訂單行程軌跡通過(guò)路網(wǎng)拓?fù)浔贿B續(xù)表示;同時(shí),靜態(tài)的路網(wǎng)拓?fù)渚哂性诓煌唵蜗碌穆范螤顟B(tài)信息。訂單下的路段與靜態(tài)路網(wǎng)的連接關(guān)系如圖6所示。
圖6 知識(shí)融合后的圖譜
2.2.5 知識(shí)補(bǔ)全
僅交通路網(wǎng)不足以體現(xiàn)軌跡中蘊(yùn)含的交通知識(shí),還需將路口等信息補(bǔ)充到交通路網(wǎng)中。訂單行程下的路口節(jié)點(diǎn)包含其所屬訂單編號(hào)、路口編號(hào)、路口通行時(shí)間和路口上下游路段的link id。基于路網(wǎng)拓?fù)潢P(guān)系,利用Python計(jì)算每個(gè)link節(jié)點(diǎn)的出入信息,綜合訂單行程下產(chǎn)生的路口信息,再通過(guò)Cypher語(yǔ)言將路口知識(shí)補(bǔ)充到知識(shí)圖譜中。
2.2.6 交通知識(shí)查詢
在構(gòu)建的司機(jī)出行知識(shí)圖譜上,可利用Neo4j的Cypher語(yǔ)言進(jìn)行交通知識(shí)查詢,可查詢司機(jī)歷史軌跡并通過(guò)Neo4j可視化界面對(duì)網(wǎng)約車軌跡進(jìn)行展示。對(duì)于某訂單的軌跡,可進(jìn)一步查詢軌跡中各路段在司機(jī)行駛時(shí)的狀態(tài),顯示相關(guān)狀態(tài)信息,如軌跡中各路段的通行時(shí)間、通行比例、路況和路口通行時(shí)間等。
本文構(gòu)建的司機(jī)出行知識(shí)圖譜將路網(wǎng)結(jié)構(gòu)與司機(jī)出行知識(shí)相結(jié)合,支持交通出行知識(shí)的查詢。本文采用自底向上的方式從結(jié)構(gòu)化數(shù)據(jù)中構(gòu)建司機(jī)出行知識(shí)圖譜,還原了軌跡大數(shù)據(jù)中的時(shí)空關(guān)系和語(yǔ)義關(guān)聯(lián),探索出了從關(guān)系型數(shù)據(jù)庫(kù)到知識(shí)圖譜自動(dòng)轉(zhuǎn)換與構(gòu)建的路徑,可被擴(kuò)展應(yīng)用于其他領(lǐng)域的結(jié)構(gòu)化數(shù)據(jù),對(duì)推廣知識(shí)圖譜應(yīng)用起到了推進(jìn)作用。
未來(lái)考慮從司機(jī)的視角出發(fā),結(jié)合構(gòu)建的司機(jī)出行知識(shí)圖譜,還原司機(jī)從接單到行駛、再到達(dá)目的地的全過(guò)程,從中挖掘出有關(guān)于司機(jī)的交通知識(shí)。在司機(jī)接單推薦過(guò)程中,提供交通知識(shí)進(jìn)行決策;可查詢目標(biāo)起終點(diǎn)歷史軌跡,利用知識(shí)圖譜的異構(gòu)圖結(jié)構(gòu)并結(jié)合圖算法進(jìn)行軌跡推薦和時(shí)間預(yù)估等交通出行預(yù)測(cè),使出行更加智慧、更加個(gè)性化。