孫國(guó)平,耿繼原
(1.沈陽市勘察測(cè)繪研究院有限公司,遼寧 沈陽 110004; 2.遼寧工程技術(shù)大學(xué),遼寧 阜新 123000)
社交網(wǎng)絡(luò)平臺(tái)的存在使得感知不同社會(huì)群體的周圍物質(zhì)環(huán)境和社會(huì)環(huán)境成為可能,在現(xiàn)實(shí)世界中,人們通過自身的感知來體驗(yàn)周圍的環(huán)境,它支配了人類的行為。根據(jù)認(rèn)識(shí)論原則,感知通常是對(duì)某種既定事實(shí)的認(rèn)知。感知可以了解自身擁有的信息,為自己下一步的判斷和行為提供參考。它包括以下三層含義:感知是隨環(huán)境而變化的知識(shí);感知是通過環(huán)境中收集到的信息來實(shí)現(xiàn)的;感知是為了某一目的而服務(wù)的一種手段。利用社交網(wǎng)絡(luò)數(shù)據(jù)感知人類社會(huì)的物質(zhì)和社會(huì)環(huán)境,可以被稱作一種“遙感”。如何獲取與處理社交媒體地理大數(shù)據(jù),成為眾源地理空間數(shù)據(jù)分析與挖掘領(lǐng)域的主要任務(wù)。因此,透過空間數(shù)據(jù)分析與挖掘方法分析用戶行為的首要任務(wù)便是社交媒體地理大數(shù)據(jù)的獲取和處理,針對(duì)此問題本文以新浪微博數(shù)據(jù)為例進(jìn)行研究。
常見的社交地理大數(shù)據(jù)的獲取方法分兩種,網(wǎng)頁爬取和使用社交服務(wù)商提供的開放數(shù)據(jù)接口獲取。在服務(wù)商沒有對(duì)外開放提取數(shù)據(jù)的接口的情況下,網(wǎng)頁爬取是最有效的獲取數(shù)據(jù)方法,如人人網(wǎng)、Flicker和Facebook等。網(wǎng)絡(luò)爬取的不足之處是常被網(wǎng)站的反爬取技術(shù)所屏蔽,因此需要頻繁地更新爬取代碼,同時(shí)爬取數(shù)據(jù)存在很多重復(fù)的頁面和垃圾頁面,清洗工作量較大。與網(wǎng)絡(luò)爬取相比,在服務(wù)商提供開放數(shù)據(jù)接口的情況下——如新浪微博服務(wù)商,這種開放接口允許第三方開發(fā)者通過得到應(yīng)用的授權(quán)來獲取數(shù)據(jù),能夠有針對(duì)性地獲取數(shù)據(jù),減少后期數(shù)據(jù)清洗工作量,并且不用擔(dān)心反爬取技術(shù)的屏蔽,編程接口的變動(dòng)相對(duì)穩(wěn)定,也減少了代碼維護(hù)工作。下面以新浪微博簽到數(shù)據(jù)為例,闡述社交地理大數(shù)據(jù)的獲取方法。
新浪微博開放平臺(tái)提供的應(yīng)用程序編程接口(Application Programming Interface,API),該平臺(tái)目前開放了將近200個(gè)數(shù)據(jù)接口,包括微博內(nèi)容、評(píng)論、用戶等數(shù)據(jù)訪問接口,API日均調(diào)用量達(dá)到330億多次。開放平臺(tái)為開發(fā)者提供了多種流行語言的軟件開發(fā)工具包,包括Python、C++、PHP、Java等。
新浪微博API調(diào)用流程如圖1所示。
圖1 新浪微博API調(diào)用流程
新浪微博API的接口中“位置服務(wù)接口”為第三方提供基于“位置服務(wù)”與“興趣圖譜”的多維度位置服務(wù)。以獲取附近地點(diǎn)API和獲取某個(gè)位置地點(diǎn)的動(dòng)態(tài)API結(jié)合,以poiid作為兩個(gè)API的連接點(diǎn),獲取帶有時(shí)間和微博用戶發(fā)布的文本數(shù)據(jù)。poiid是指POI的id,POI是點(diǎn)數(shù)據(jù),它真實(shí)地理實(shí)體的空間信息和屬性信息,例如經(jīng)緯度、名稱等。首先通過獲取附近地點(diǎn)API,獲取簽到數(shù)據(jù)的poiid,得到每個(gè)簽到地點(diǎn)的簽到次數(shù)和簽到用戶數(shù),以poiid為獲取某個(gè)位置地點(diǎn)的動(dòng)態(tài)API的必要參數(shù),獲取帶有簽到時(shí)間、微博文本等屬性的簽到數(shù)據(jù)。獲取附近地點(diǎn)API簽到數(shù)據(jù)樣例如表1所示。
獲取附近地點(diǎn)API簽到數(shù)據(jù)樣例 表1
為了提高獲取簽到數(shù)據(jù)的效率,在提取研究區(qū)域的poiid值時(shí),設(shè)計(jì)提取數(shù)據(jù)的并行算法,對(duì)研究區(qū)域網(wǎng)格化,研究區(qū)域非規(guī)則的正方形,劃分后,為200行×200列共4萬個(gè)矩形格網(wǎng)單元。根據(jù)區(qū)域內(nèi)最小外接矩形的左上角、右下角、格網(wǎng)單元的行列號(hào)得出每個(gè)格網(wǎng)單元的質(zhì)心坐標(biāo),通過設(shè)置半徑,得到簽到數(shù)據(jù)。
格網(wǎng)的劃分以及局部放大視圖如圖2所示。
圖2 格網(wǎng)劃分及局部放大視圖
圖2中,(X1,Y1)表示研究區(qū)域MBR的左上角坐標(biāo);(X2,Y2)表示研究區(qū)域MBR的左上角坐標(biāo);DX、DY表示研究區(qū)域MBR的寬度和高度;Dx、Dy表示格網(wǎng)單元的寬度和高度;(GXmk,GYkn)表示格網(wǎng)單元的質(zhì)心坐標(biāo)。
為了方便利用計(jì)算機(jī)進(jìn)行迭代計(jì)算,將格網(wǎng)單元質(zhì)心坐標(biāo)的計(jì)算方法歸納如下:
其中,m=1,2,3,…,l;p=1,2,3,…,l;k=2,3,4,…,l;△X=|X2-X1|、Y=|Y2-Y1|;△x=△X/200、△y=△Y/200。
利用上述迭代公式同時(shí)可以計(jì)算出格網(wǎng)單元的寬度和高度,取寬度和高度二者中較大值為查詢范圍半徑。為了能全面覆蓋格網(wǎng)單元,并且相鄰格網(wǎng)單元之間要有適當(dāng)?shù)闹丿B度,本例取查詢半徑為 250 m。
在數(shù)據(jù)獲取階段收集到的原始數(shù)據(jù)是“臟”的,存在混亂結(jié)構(gòu)不一致、冗余或重復(fù)、屬性數(shù)據(jù)的缺失等問題,具有模糊性、不完整性和冗余性等特點(diǎn),使得數(shù)據(jù)的預(yù)處理成為數(shù)據(jù)挖掘前期準(zhǔn)備的必要工作,從而保證數(shù)據(jù)的正確性,可靠性,完整性。
原始數(shù)據(jù)為Json格式,此格式對(duì)機(jī)器友好但并不適合人類閱讀操作,因此需要對(duì)其進(jìn)行解析。將屬性信息以逗號(hào)間隔,并存儲(chǔ)在.txt格式文件中。以逗號(hào)為分隔符有利于之后在Excel的單元格中展開數(shù)據(jù),而且.txt格式文件能夠被大多數(shù)數(shù)據(jù)分析軟件導(dǎo)入。要針對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行分析,需從原始數(shù)據(jù)中提取帶有簽到時(shí)間的數(shù)據(jù),共采集2012年~2016年5年新浪微博地理大數(shù)據(jù),從中精選3年完整空間地理數(shù)據(jù),分3年保存在3個(gè)txt格式文件中,時(shí)間包括2013年、2014年和2015年的微博位置簽到數(shù)據(jù)。
本實(shí)驗(yàn)選擇在ArcGIS中自定義Spatial ETL工具批量刪除重復(fù)數(shù)據(jù),從源數(shù)據(jù)中抽取出有用的數(shù)據(jù)。處理前與處理后的數(shù)據(jù)質(zhì)量如表2所示。
數(shù)據(jù)處理前后對(duì)比 表2
時(shí)間序列數(shù)據(jù)指某個(gè)指標(biāo)根據(jù)時(shí)間的先后順序排列而成的在不同時(shí)間點(diǎn)上的數(shù)值數(shù)列。在此試驗(yàn)中,時(shí)間序列數(shù)據(jù)就是同一區(qū)域(即poiid相同)的有時(shí)間變化的簽到數(shù)據(jù)。
在調(diào)用獲取附近地點(diǎn)API和獲取某個(gè)位置地點(diǎn)的動(dòng)態(tài)API后,得到帶有時(shí)間屬性和微博文本等內(nèi)容的簽到數(shù)據(jù),以逗號(hào)間隔,保存到Excel表格。如一條時(shí)間序列數(shù)據(jù),在Excel中展開,在python中編寫代碼完成時(shí)間格式的轉(zhuǎn)換;在poiid相同的情況下,存在不同的簽到時(shí)間,需轉(zhuǎn)換為北京時(shí)間分析處理。
從已獲得的簽到數(shù)據(jù)中提取出含有文本信息的簽到微博來作為語義分析的數(shù)據(jù)。數(shù)據(jù)以Excel表格形式存儲(chǔ)。由于微博數(shù)據(jù)來源多樣、形式不一、文本不規(guī)范等特點(diǎn),對(duì)于提取到的原始語義數(shù)據(jù)還需進(jìn)行數(shù)據(jù)處理來清洗和歸整數(shù)據(jù)。
基于語義分析的研究并不局限于文本信息,還可以利用非文本信息,如地點(diǎn)標(biāo)簽、簽到用戶類型、評(píng)論數(shù)等關(guān)聯(lián)簽到位置來更好地進(jìn)行人類行為模式的研究。
描述性統(tǒng)計(jì)是通過數(shù)據(jù)的收集、加工處理、顯示等來概括和分析數(shù)據(jù)的分布特征。描述性的指標(biāo)包括均值、方差、直方圖、偏度、峰度等。
經(jīng)過數(shù)據(jù)處理,局部放大圖(鐵西區(qū))如圖3所示。由圖片可以看出,鐵西區(qū)隨著“鐵西廣場(chǎng)”商圈的建成,逐漸成為熱點(diǎn)區(qū)域,離地鐵線越近的地方簽到數(shù)量越多。
圖3 局部放大圖(鐵西區(qū))
圖4為2015年某一天的簽到次數(shù)統(tǒng)計(jì),從中可以得出,從早上5:00開始,數(shù)量一直在增加,6:00~9:00、17:00~23:00直線增長(zhǎng),在23:00以后~6:00之前呈現(xiàn)明顯下滑趨勢(shì),曲線整體描述符合人們一天活動(dòng)的規(guī)律:6:00以前為晚間休息,所以簽到數(shù)量一直在下降;6:00~9:00為早上上班時(shí)間,簽到數(shù)量直線增加;11:00~14:00為午休,簽到數(shù)量增量趨緩;17:00以后為下班時(shí)間(“自由活動(dòng)時(shí)間”),簽到數(shù)量也直線增長(zhǎng)。
圖4 2015年某天簽到次數(shù)統(tǒng)計(jì)
社交地理大數(shù)據(jù)反映了用戶在特定的時(shí)間、地點(diǎn)條件下記錄的所見、所聞、所感、言論以及狀態(tài)。這些發(fā)生在用戶身邊的事件能夠通過發(fā)布包含文字、圖片、視頻等內(nèi)容的簽到功能記錄下來,并在以用戶為中心的關(guān)系網(wǎng)絡(luò)中快速傳播。本文以新浪微博的簽到數(shù)據(jù)為研究對(duì)象,通過相關(guān)技術(shù)獲取和處理簽到數(shù)據(jù),并對(duì)其進(jìn)行描述性統(tǒng)計(jì),為分析和挖掘簽到數(shù)據(jù)做好基礎(chǔ),進(jìn)而了解到用戶群體的特征,例如年齡性別、學(xué)歷層次、空間分布、興趣愛好等,根據(jù)這些結(jié)論和知識(shí)為用戶提供個(gè)性化的服務(wù)。