[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

Eastmount發表於2019-01-22

本文主要是作者學習輿情分析、情感分析、人類行為動力學分析的線上筆記,主要包括兩方面內容,一是結合參考文獻介紹人類行為動力學分析,二是講解Python繪製冪律特性及時間間隔分佈圖的方法。基礎性文章,希望對您有所幫助。

PS:最近參加CSDN2018年部落格評選,希望您能投出寶貴的一票。我是59號,Eastmount,楊秀璋。投票地址:https://bss.csdn.net/m/topic/blog_star2018/index

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

一.輿情分析基礎知識

該部分主要借鑑引用如下論文,強烈推薦讀者學習,尤其是研究輿情分析、圖書情報、人類行為動力學的同學。

  • 閆小勇. 人類個體出行行為的統計特徵. 電子科技大學學報, 2011.
  • 劉海鷗, 等. 線上社交活動中的使用者畫像及其資訊傳播行為研究. 情報科學, 2018.
  • 樑曉敏, 等. 輿情時間中評論物件的情感分析及其關係網路研究. 情報科學, 2018.
  • 郭宇, 等. 基於情感分析的社會網路使用者影響力模型研究. 情報科學, 2018.
  • Barabasi A-L. The origin of bursts and heavy tails in human dynamics. Natrue(London),2005,435:207-211.
  • 王澎. 人類線上行為的實證和建模. 安徽:中國科學技術大學,2010.

隨著網際網路迅速發展,社交網路發展為民眾瞭解社會現象、輿情事件的重要平臺,帶來便利的同時,部分網民也會在網際網路上宣洩情感,引發公共輿情事件。為了更好地進行輿情監控和情感預警,把握網民的情感趨向,基於人類行為動力學的輿情事件分析,探究輿情物件的情感變化和關係演化是非常必要的。

人類個體行為是隱藏在許多複雜社會經濟現象背後的驅動力,定量理解人類行為是現代科學的一個重要研究課題。2005年,Barabási研究顯示人類行為間隔規律是高度非均勻的,稱之服從冪律分佈,並在《自然》發表了一篇文章,開創了“人類行為動力學”的新研究方向。目前,科學家通過大量的實證統計發現了一些人類行為,如郵件通訊、簡訊通訊、網頁瀏覽、電影點播、微博事件等的時間間隔近似服從冪律分佈,這種冪律分佈特性無論在群體水平還是個體水平上都可以得到證實。除了發現人類行為的時間間隔分佈中廣泛存在的冪律現象外,近年來證實研究發現在人類的空間運動行為中也存在冪律分佈特性,如停留時間分佈和出行距離分佈。

常見的人類行為動力學分析包括:時間間隔分佈、活躍性分析、時間間隔分佈寬度、時間間隔重標度、互動週期與熱度分析、互動的陣發性和記憶性分析等。劉海鷗等老師研究發現微博、QQ群、天涯論壇、人人網服從冪律分佈如下圖所示,表明線上社交活動少數人處於活躍狀態,積極頻繁地釋出訊息,而大部分成員活躍性較低,處於靜默狀態。

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

樑曉敏等老師提出瞭如下圖所示的輿情事件中評論物件的情感及關係分析模型,並分析了“魏則西事件”的負向情感指數演化趨勢及關係網路。

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製
[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製
[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

二.時間間隔分佈圖繪製

為解釋人類個體為何具有高概率進行長時間停留的特徵,通常會對個體在統計時間段內的日常活動事件序列進行分析。下圖是一個典型的個體在一週內活動的情況,圖中空白區域表示個體在某地點的停留,黑色豎線表示在不同地點的出行。

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

冪律特性分析通常會得到如下圖所示的圖形,而它如何通過Python進行繪製呢?

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

1.資料集
假設作者定義網路爬蟲抓取了天涯社群某一個事件的992條回覆資訊,包括id、主題使用者、評論點贊數、評論被追評數、評論內容、評論時間、積極情緒分數。現在需要繪製時間間隔分佈圖。

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

2.SQL語句
接著通過Python呼叫本地的MySQL資料庫,並獲取每個評論時間的時間,然後繪製柱狀圖,其中SQL語句核心程式碼如下:

select zhutishijian,jijiqingxu from yq_ml order by zhutishijian;

包括評論時間和積極情緒分數,輸出結果如下所示:

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

Python訪問MySQL資料庫的核心程式碼如下,本地資料庫名為“20181228db”。

class lianjie(object):
    def __init__(self):
        pass
    def connect(self,hostaddress):
        self.conn = msd.connect(host = hostaddress,user = "root",passwd = "123456",db = "20181228db",charset = 'utf8')
        #cur = self.conn.cursor()
        return self.conn
    def guanbi(self):
        return self.conn.close()

3.時間間隔分佈圖完整程式碼
完整程式碼如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Dec 19 13:35:17 2018

@author: yxz yq
"""

import matplotlib.pyplot as plt
import MySQLdb as msd
class lianjie(object):
    def __init__(self):
        pass
    def connect(self,hostaddress):
        self.conn = msd.connect(host = hostaddress,user = "root",passwd = "123456",db = "20181228db",charset = 'utf8')
        #cur = self.conn.cursor()
        return self.conn
    def guanbi(self):
        return self.conn.close()
    
    
if __name__ == '__main__':
    lj = lianjie()
    ############################################呼叫資料##########################
    conn = lj.connect("localhost")
    cur=conn.cursor()
    sql = "select zhutishijian,jijiqingxu from yq_ml order by zhutishijian;"
    cur.execute(sql)
    data = cur.fetchall()
    
    print (data)
    
    time =[]
    score = []
    l1=[]
    for i in range (0,len(data)):
        time.append(data[i][0])
        score.append(data[i][1])
        l1.append(1)
    plt.subplot(711)
    plt.bar(time,l1,width=0.005,color='black')
    plt.yticks([])
    plt.xticks([])
    plt.show()

程式碼中time用於統計時間,l1用於繪製豎線,生成圖形如下,圖中空白區域表示個體回覆在某個時刻的停留時間,黑色豎線表示在不同時刻出現了回覆行為,黑色豎線越多,該時刻的回覆事件越活躍。

[Python輿情分析] 一.輿情事件的冪律特性分析及時間間隔分佈圖繪製

這是2019年的基礎性文章,希望對大家有所幫助,不喜勿噴,感謝Y與我一起付出。同時,寒假已開始了自己奮鬥學習之路,希望一個月的時間能堅持把英語、專業課鞏固上來。考博之路很艱辛,且努力且珍惜。你我一起加油,也希望讀者給我投一票吧。我是59號,Eastmount,楊秀璋。
投票地址:https://bss.csdn.net/m/topic/blog_star2018/index

(By:Eastmount 2019-01-22 下午2點 http://blog.csdn.net/eastmount/ )

相關文章