孫國平,耿繼原
(1.沈陽市勘察測繪研究院有限公司,遼寧 沈陽 110004; 2.遼寧工程技術大學,遼寧 阜新 123000)
社交網絡平臺的存在使得感知不同社會群體的周圍物質環境和社會環境成為可能,在現實世界中,人們通過自身的感知來體驗周圍的環境,它支配了人類的行為。根據認識論原則,感知通常是對某種既定事實的認知。感知可以了解自身擁有的信息,為自己下一步的判斷和行為提供參考。它包括以下三層含義:感知是隨環境而變化的知識;感知是通過環境中收集到的信息來實現的;感知是為了某一目的而服務的一種手段。利用社交網絡數據感知人類社會的物質和社會環境,可以被稱作一種“遙感”。如何獲取與處理社交媒體地理大數據,成為眾源地理空間數據分析與挖掘領域的主要任務。因此,透過空間數據分析與挖掘方法分析用戶行為的首要任務便是社交媒體地理大數據的獲取和處理,針對此問題本文以新浪微博數據為例進行研究。
常見的社交地理大數據的獲取方法分兩種,網頁爬取和使用社交服務商提供的開放數據接口獲取。在服務商沒有對外開放提取數據的接口的情況下,網頁爬取是最有效的獲取數據方法,如人人網、Flicker和Facebook等。網絡爬取的不足之處是常被網站的反爬取技術所屏蔽,因此需要頻繁地更新爬取代碼,同時爬取數據存在很多重復的頁面和垃圾頁面,清洗工作量較大。與網絡爬取相比,在服務商提供開放數據接口的情況下——如新浪微博服務商,這種開放接口允許第三方開發者通過得到應用的授權來獲取數據,能夠有針對性地獲取數據,減少后期數據清洗工作量,并且不用擔心反爬取技術的屏蔽,編程接口的變動相對穩定,也減少了代碼維護工作。下面以新浪微博簽到數據為例,闡述社交地理大數據的獲取方法。
新浪微博開放平臺提供的應用程序編程接口(Application Programming Interface,API),該平臺目前開放了將近200個數據接口,包括微博內容、評論、用戶等數據訪問接口,API日均調用量達到330億多次。開放平臺為開發者提供了多種流行語言的軟件開發工具包,包括Python、C++、PHP、Java等。
新浪微博API調用流程如圖1所示。

圖1 新浪微博API調用流程
新浪微博API的接口中“位置服務接口”為第三方提供基于“位置服務”與“興趣圖譜”的多維度位置服務。以獲取附近地點API和獲取某個位置地點的動態API結合,以poiid作為兩個API的連接點,獲取帶有時間和微博用戶發布的文本數據。poiid是指POI的id,POI是點數據,它真實地理實體的空間信息和屬性信息,例如經緯度、名稱等。首先通過獲取附近地點API,獲取簽到數據的poiid,得到每個簽到地點的簽到次數和簽到用戶數,以poiid為獲取某個位置地點的動態API的必要參數,獲取帶有簽到時間、微博文本等屬性的簽到數據。獲取附近地點API簽到數據樣例如表1所示。

獲取附近地點API簽到數據樣例 表1
為了提高獲取簽到數據的效率,在提取研究區域的poiid值時,設計提取數據的并行算法,對研究區域網格化,研究區域非規則的正方形,劃分后,為200行×200列共4萬個矩形格網單元。根據區域內最小外接矩形的左上角、右下角、格網單元的行列號得出每個格網單元的質心坐標,通過設置半徑,得到簽到數據。
格網的劃分以及局部放大視圖如圖2所示。

圖2 格網劃分及局部放大視圖
圖2中,(X1,Y1)表示研究區域MBR的左上角坐標;(X2,Y2)表示研究區域MBR的左上角坐標;DX、DY表示研究區域MBR的寬度和高度;Dx、Dy表示格網單元的寬度和高度;(GXmk,GYkn)表示格網單元的質心坐標。
為了方便利用計算機進行迭代計算,將格網單元質心坐標的計算方法歸納如下:
其中,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。
利用上述迭代公式同時可以計算出格網單元的寬度和高度,取寬度和高度二者中較大值為查詢范圍半徑。為了能全面覆蓋格網單元,并且相鄰格網單元之間要有適當的重疊度,本例取查詢半徑為 250 m。
在數據獲取階段收集到的原始數據是“臟”的,存在混亂結構不一致、冗余或重復、屬性數據的缺失等問題,具有模糊性、不完整性和冗余性等特點,使得數據的預處理成為數據挖掘前期準備的必要工作,從而保證數據的正確性,可靠性,完整性。
原始數據為Json格式,此格式對機器友好但并不適合人類閱讀操作,因此需要對其進行解析。將屬性信息以逗號間隔,并存儲在.txt格式文件中。以逗號為分隔符有利于之后在Excel的單元格中展開數據,而且.txt格式文件能夠被大多數數據分析軟件導入。要針對時間序列數據進行分析,需從原始數據中提取帶有簽到時間的數據,共采集2012年~2016年5年新浪微博地理大數據,從中精選3年完整空間地理數據,分3年保存在3個txt格式文件中,時間包括2013年、2014年和2015年的微博位置簽到數據。
本實驗選擇在ArcGIS中自定義Spatial ETL工具批量刪除重復數據,從源數據中抽取出有用的數據。處理前與處理后的數據質量如表2所示。

數據處理前后對比 表2
時間序列數據指某個指標根據時間的先后順序排列而成的在不同時間點上的數值數列。在此試驗中,時間序列數據就是同一區域(即poiid相同)的有時間變化的簽到數據。
在調用獲取附近地點API和獲取某個位置地點的動態API后,得到帶有時間屬性和微博文本等內容的簽到數據,以逗號間隔,保存到Excel表格。如一條時間序列數據,在Excel中展開,在python中編寫代碼完成時間格式的轉換;在poiid相同的情況下,存在不同的簽到時間,需轉換為北京時間分析處理。
從已獲得的簽到數據中提取出含有文本信息的簽到微博來作為語義分析的數據。數據以Excel表格形式存儲。由于微博數據來源多樣、形式不一、文本不規范等特點,對于提取到的原始語義數據還需進行數據處理來清洗和歸整數據。
基于語義分析的研究并不局限于文本信息,還可以利用非文本信息,如地點標簽、簽到用戶類型、評論數等關聯簽到位置來更好地進行人類行為模式的研究。
描述性統計是通過數據的收集、加工處理、顯示等來概括和分析數據的分布特征。描述性的指標包括均值、方差、直方圖、偏度、峰度等。
經過數據處理,局部放大圖(鐵西區)如圖3所示。由圖片可以看出,鐵西區隨著“鐵西廣場”商圈的建成,逐漸成為熱點區域,離地鐵線越近的地方簽到數量越多。

圖3 局部放大圖(鐵西區)
圖4為2015年某一天的簽到次數統計,從中可以得出,從早上5:00開始,數量一直在增加,6:00~9:00、17:00~23:00直線增長,在23:00以后~6:00之前呈現明顯下滑趨勢,曲線整體描述符合人們一天活動的規律:6:00以前為晚間休息,所以簽到數量一直在下降;6:00~9:00為早上上班時間,簽到數量直線增加;11:00~14:00為午休,簽到數量增量趨緩;17:00以后為下班時間(“自由活動時間”),簽到數量也直線增長。

圖4 2015年某天簽到次數統計
社交地理大數據反映了用戶在特定的時間、地點條件下記錄的所見、所聞、所感、言論以及狀態。這些發生在用戶身邊的事件能夠通過發布包含文字、圖片、視頻等內容的簽到功能記錄下來,并在以用戶為中心的關系網絡中快速傳播。本文以新浪微博的簽到數據為研究對象,通過相關技術獲取和處理簽到數據,并對其進行描述性統計,為分析和挖掘簽到數據做好基礎,進而了解到用戶群體的特征,例如年齡性別、學歷層次、空間分布、興趣愛好等,根據這些結論和知識為用戶提供個性化的服務。