2013年11月19日 星期二

[小程式] 用 matlab 抓取 ptt上特定文章推文的時間序列資料 (Catch the "push" and "spurn" index time series data from a article in PTT by matlab )


動機:
   
        ptt 是目前中文文化圈中最大的電子佈告欄,平均來說隨時隨地都有10萬名左右的使用者在線上瀏覽、發文、或參與討論。其討論區涵蓋的領域包羅萬象,幾乎你想的到的主題都有其討論區,沒有的話也可以自己申請創一個。而裡面大多數的發文以及後續討論資料皆會以純文字檔的形式被保存下來,久而久之其形成的巨大資料庫確實是一個分析以台灣為主的中文文化圈之社會行為的好資料。

       推噓文系統則為ptt電子布告欄裡面獨有的文章底下評論模式,藉由推文可以肯定這篇文章的價值,而噓文則多半代表不認同 (唯此兩種情況又因各不同討論區文化有異)。但整體來說,一篇獲得眾多推文噓文或註解的文章可約略代表是一篇受到大眾所關注的資訊,較多推文的文章受到較多人賦予正面評價,較多噓文或註解的文章受到較多人賦予負面或持平評價。因此一篇文章的推文噓文或註解的數目嚴然可以成為一篇文章受到多大程度關注的指標。

        而進一步來說,推噓文與註解隨著時間而變化的動力學過程,或許也可以展現出一則具有某種特色的資訊如何自某個地方發生後透過社會上人群的隨機關注語互相影響而漸漸發展成一個廣為人知的訊息。這些資料對於探討以台灣為主的中文文化圈中資訊如何透過社會發展自我關注度應該會是很有幫助的數據。



在2011/10/12的時候我曾經手動去統計ptt上面熱門排行版第一名的八卦版( Gossiping )上面當天全版的文章數目與推文數目對應的關係,發現文章數目與推文數之間有頗為明顯的乘冪(power law)關係,可很粗略的揭露出在一個最熱門看板中平均來看,一篇文章要取得高推文數的難易度大概如何(從關係可粗估推文數目增加兩倍的文章數目會是原先的1/5~1/4倍)。

但這樣粗糙的結果尚無法看見更精細的東西,若能取得單篇文章的推文噓文與註解的時間序列資料則可以進一步看到一篇文章受關注程度隨時間演變的資訊,或許就有更多可供分析的原始數據。

而今天中午因為新桌機正在進行持久的硬碟格式化過程,筆電也快跑不動目前的分析結果,該查的資料又毫無進展,一個翻桌之下我就來寫這個程式轉換心情了。

從今天中午寫的這個小程式可以藉由輸入ptt某篇文章的網址而得到該篇文章的推噓文時間序列資料,若進一步的運算與分析應可看到更多性質,而或許也可以根據這些數據的基本結果建立資訊受關注程度的時間演化模型來討論一則訊息是如何受到關注的唷!

然後這個大概會慢慢的玩,如果有人有興趣也可以來找我討論討論唷 ^^"


檔案與連結:

檔案名稱:  push_time_sequence_data.m
檔案路徑: http://sdrv.ms/17IdlPe


使用說明:

0. 打開matlab,開啟本m檔案.
1. 請抓取目標文章網址(可在ptt介面下文章前用大寫 Q取得).
2. 將文章網址貼於下方 urlpath=後面, 記得網址前後要用 ' 符號包夾 ( 例: 'www.google.com.tw')
url_path='http://www.ptt.cc/bbs/StupidClown/M.1233060106.A.55E.html'

3. 儲存檔案後按F5開始跑
4. 跑完後資料存於tPEN_data檔:
                            tPEN_data(:,1) 為時間軸, 目前設定時間單位為小時(hour)
                            tPEN_data(:,2) 為推文資訊, 該時間有推文則值為1,否則為0
                            tPEN_data(:,3) 為註解資訊, 該時間有註解則值為1,否則為0
                            tPEN_data(:,4) 為噓文資訊, 該時間有噓文則值為1,否則為0
5. 資料取得完成