微博數據分析,已經有了JSON格式的爬蟲數據,如何做數據分析呢?

剛剛入手這個方面的研究,導師之前也沒有涉及過,所以上來求問一下基本流程和所需要的知識儲備以及工具,非常感謝。


那麼請問你的量是多大?

如果只是自己寫寫腳本抓取的話,那麼你可以只是用你擅長的腳本語言(如Python等)做一些純粹統計意義上的分析,例如:

  • 根據微博的轉發鏈以及個人profile,做一些人口屬性的分布統計,例如性別,地理位置,認證類型(公司,學校,政府,個人認證,達人等等),粉絲數,標籤雲等所有的維度
  • 根據微博的內容可以做一些分詞統計,例如如果抓取的是評論內容,可以提取評論裡面的熱詞,如果是根據搜索內容獲取的微博,可以計算該搜索詞的相關關鍵詞

總之也就是找一些有邏輯的數據文本,即使量少,也可以進行一些統計分析

但如果你是集群分散式抓取,量特別大的,那麼你可以規劃一下整個數據流,對於上面的基於人口屬性或者其他維度的分布統計,你可以直接用Hadoop做ETL,將數據存儲在HDFS上,然後HIVE建表,進行相關維度的SQL查詢了

同時你又可以寫一些MapReduce的腳本,利用一些基本演算法,進行一些人物畫像的分析,例如:

  • 假定你已經有一個比較好的某個領域的Topic Model(抓取垂直網站,或者其他途徑獲取),那麼針對某個人的所有微博,你可以根據Topic Model生成相關領域的關鍵詞,例如汽車行業,旅遊行業,也就是類似一些品牌關鍵詞。
  • 假定你已經有一個比較好的知識分類表,那麼你可以利用每個人的微博語料生成一些興趣標籤之類的。
  • 如果你還有關注鏈的數據話,那麼你可以利用GraphLab或者其他對迭代演算法有優化的框架,利用Pagerank這一類的演算法,計算人的影響力。
  • 其次文本以及微博的行為以及微博例如發布來源等數據維度很多,所以你也可以計算一個人的購買力等等。

上面只是簡單舉下例子,可以做的遠遠超過上面的部分,因為涉及到一些公司利益,只能簡單地介紹下,所以基本上也有初步的用戶畫像,但是這背後更重要的不是流程,而是背後的演算法。

總之,將所有的結構化數據進行梳理,然後找出一些維度之間關聯關係,以及維度背後的意義,其實可以挖的地方有很多。


如果是編程作業的話,可以參考twitter的案例,和新浪微博非常類似。網上有完整的參考http://www.slideshare.net/ksankar/the-art-of-social-media-analysis-with-twitter-python

如果是做數據分析的話,不妨利用現成的工具。北京大學 PKUVIS 微博可視分析工具

如果是做論文課題的話,有很多選擇,隨便舉個例子,可以設計一個用戶活躍度指標,檢驗一下新浪用戶流失的速度。可以參考誰說新浪微博活躍度下降?三塊板磚來了 下面的評論(正文可以作為典型的學術界思維的例子,走的是老傳媒的路子,和互聯網思維差距太大)


基本流程:

JSON數據最好的處理方式我認為應該是存進關係型資料庫

我之前用PHP寫過一個JSON格式的爬蟲,就是直接curl獲取JSON,然後JSON_decode,之後直接存進資料庫(注意主鍵和索引),限於網速大概一秒能抓10個頁面,每個JSON頁數據里大概有20條數據,最後花了20分鐘左右往資料庫里寫了20萬條數據。

分析的話,如果如果你存進了關係型資料庫的話,要做起來就非常簡單了。

所以如果你有JSON數據,那麼可以直接存進關係型資料庫,這樣可以非常簡單地進行分析。

需要的知識儲備有

  1. 一門編程語言(只要簡單地入門就夠了,類型隨意,無論是C還是JAVA、PHP都可以輕而易舉地辦到這件事,JSON格式是比較規範化的,就算沒有PHP里那樣的JSON_decode函數,自己寫一個也是非常方便的。)

  2. 一種關係型資料庫相關知識(考慮到你是一個學生,手裡的數據也不會太多,估計也就幾百萬條,並且並非面向Web,MYSQL也足夠應付了,MYSQL應該能比較好地應付到數千萬這個級別的數據)

工具:

  1. 一門編程語言的開發工具以及編譯器;
  2. 一個資料庫管理系統例如MYSQL;
  3. 其他雜項例如可視化的資料庫查詢工具、圖表生成插件。

數據分析的話,以我自己的另一個存在MYSQL中的資料數據表`profile`為例,直接

SELECT COUNT(*) AS `num`, `sex` FROM `profile` GROUP BY `sex` ORDER BY `sex`

可以獲得這樣的返回:

num sex

00079 null

41704 女

34776 男

分析數據會非常方便,甚至還可以這樣,直接返回各種圖表。(下圖為PHPMyAdmin的圖表查看工具,如果你對Javascript有入門級別的認識,也可以通過網上現有的圖表插件來輸出你想要的圖表數據)

同理,如果有足夠的用戶數據,通過關係型資料庫和一門編程語言,你可以非常簡單地辦到像區域分析、粉絲數量分布等等的事情。

如果是微博內容數據,也可以通過提取分詞來統計最熱門話題、發微博時間分布等等內容。

到底有什麼東西可以分析其他回答者已經說的非常清楚了,我只是針對題主的問題基本流程和所需要的知識儲備以及工具來回答

最後順便問下題主數據量大概有多少?


新浪微博,對抓取的數據量和頻率是做了限制的,你不可能抓取很多數據,分析的價值很有限!


你是什麼方面的數據啊,是關係鏈方面的,那就爭取用網路的模型

如果是文本方面的,那就用文本挖掘

如果是標籤的,可以試著用下聚類,關聯等


要數據的話 萬能的馬雲 店鋪:數據大爆炸


推薦閱讀:

醫療大數據的分析和挖掘發展現狀如何?未來會有什麼樣的應用前景?
機器學習模型中的分類變數最多可以有多少個值?
你遇到過什麼,讓你一瞬間覺得數據如此有趣美妙,又有價值?
標準化和歸一化什麼區別?
決策樹演算法中,CART與ID3、C4.5特徵選擇之間的區別會對實際應用有哪些影響?哪種的結果會更好些?

TAG:微博 | 數據挖掘 | 數據分析 |