1 of 60

Twitter analysis

主辦單位:

台大新聞研究所

教育部UFO人文社會與科技前瞻人才培育計畫

協辦單位:

台大社科院行為與資料科學研究中心

台大人口與性別研究中心

台大多媒體製作中心

資料新聞

工作坊

2 of 60

The workshop

教育部UFO人文社會與科技前瞻人才培育計畫�

網路資通科技變遷下的媒體知能、民主素養與公民意識:

從資訊跨域人才培育到實踐

3 of 60

4 of 60

科技發展對新聞媒體產業的影響

1990

2000

2010

2020

2030

1988�報業解禁

1998 Google

2008 臉書開心農場

2009/12/09 蘋果新聞粉絲專頁

1999 聯合新聞網

1998 奇摩新聞

2010/01/07 聯合新聞網粉絲專頁

2014/12 聯合新聞網LINE

2012/02 LINE台灣

2018 事實查核中心

5 of 60

小報、假訊息

6 of 60

自發、封閉社群

7 of 60

事實查核

8 of 60

大數據視野與能力

因果與模式思考

語言與認知

媒體知能與素養

民主素養與公民意識

總整與�行動

網絡互動探察

社會實踐

語言所�資訊跨域學程

新聞所

資訊跨域學程

經濟系

資訊跨域學程

網路資通科技對媒體知能、�公民意識、民主素養的影響

9 of 60

工作坊相關的計畫執行方針

訓練人社領域的科技前瞻人才

學生能有學 → 做 → 實際解決問題 → 帶人解決問題的能力

教材教法研擬與推廣 → 從校園走向社會(所以你在這邊)

10 of 60

總整課程�Capstones

資料行動�Data activism

計算與傳播研究中心

黑客松

大專生論文

行為與資料研究中心

協助公部門、產業界進行分析

公部門�產業界

提升

學生

動機

微軟業務部

課程�聯展

媒體

資料新聞工作坊

實驗�媒體

線上�教材

專書�出版

研討會

助教�培育

資料�新聞

工作坊

11 of 60

工作坊議程

09:30~10:20 謝吉隆 開場、工作坊說明、R語言速遊�10:40~11:30 許家瑜 探索性分析:使用dplyr套件11:40~12:30 許家瑜 萃取並分析香港反佔中事件相關tweets

Lunch break

13:30~14:20 謝吉隆 社會網絡分析方法簡介咖啡+茶水�14:40~15:30 吳冠賢 網絡分析與視覺化�15:30~16:00 謝吉隆 網絡分析結果的詮釋與結語

預習課程後的實戰

資料基礎操作

認識Twitter資料

需結合領域知識

來看看程式能做什麼

人口與性別研究中心�熱情

12 of 60

經濟系跨域�資料科學與社會研究

新聞所跨域與計算傳播�新聞與數位創作

政治系、國發所、社會系�大數據分析與文字探勘

「計算社會科學」:社科院「跨域資訊科技人才培育」

語言所跨域�語言、資訊與認知

文學院

資料科學與社會研究 (R)

新聞資料分析 (R)

大數據分析專題 (R)

R語言與資料科學導論 (語言)

社會科學程式設計 (Python)

經濟系林明仁

新聞所謝吉隆

新聞所謝吉隆

新聞所劉好迪

政治系張祐宗

國發所鄧志松

語言所謝舒凱

社群媒介輿論分析

社會科學程式設計 (Python)

總整課程

資訊跨域基礎

總整、實作

R語言與文字探勘:公共議題 (政治)

網路時代的政治傳播 (理論/程式)

語言、計算與認知導論 (語言)

媒介社會學、大眾傳播理論 (理論)

Python 程式寫作與文本分析 (國發)

社群媒體與社會網絡分析 (程式)

社會與經濟網絡分析專題 (政治)

政策網絡與社會網絡分析 (政治)

社會網絡專題 (社會)

社會網絡分析專題 (圖資)

文字探勘�計算語言學

社會網絡

經統建模

經濟學原理 (原理與模型)

計量經濟學 (程式)

人文學群的 Python 程式設計 (語言)

計算語意學 (語言)

計算語言學專題研究 (語言)

應用個體經濟學 (程式)

計量經濟理論(數據與模型)

資料行動 Data activism

跨域專題製作 / 業界實習

傳播、媒介與政治

文字與語言

網絡分析

經統建模

資訊基礎

13 of 60

Topics and Skills mapping

語言與資料格式

網頁爬蟲

資料探索與視覺化

文字處理與探勘

統計與機器學習

課程概述與程式環境

R語言與邏輯

讀取CSV

讀取JSON

dplyr套件

dplyr套件

選題:資料庫

產假支薪:長條圖

台北市竊盜統計

AirIndex, Youbike

租屋網, 線上新聞

線上新聞, PTT, ibon

內政部人口統計資料

Trump tweets

早、近期風災新聞

PTT網軍偵測

臉書按讚

鉅亨網、股價

類別資料視覺化

ggplot2、地圖

ggplot2: 計數與類別

英文斷詞

中文斷詞

字詞特徵選取

詞嵌入模型

類別資料統計

Chi-square、回歸

t檢定

t-SNE, PCA, KMean

Logistic Regression

DT, RF, SVM

Final Project

地圖視覺化

讀取JSON

類別計數與交叉分析

HTML檔剖析

網絡視覺化

選題:社會網絡分析

591租屋資料

選題:RShiny互動

厭女文本觀察

基礎

獲取彙整

分析

實作

Linear regression

ggraph: 網絡視覺化

主題分析模型

Using Google sheet

Using Tableau

14 of 60

The topic: Twitter

15 of 60

16 of 60

�We are disclosing a significant state-backed information operation focused on the situation in Hong Kong, specifically the protest movement and their calls for political change.

This disclosure consists of 936 accounts originating from ... China .... Overall, these accounts ... attempting to sow political discord in Hong Kong, ..., we have reliable evidence to support that this is a coordinated state-backed operation. Specifically, we identified large clusters of accounts behaving in a coordinated manner to amplify messages related to the Hong Kong protests.

組織性、協調性的�訊息操作

香港反送中相關

17 of 60

... these accounts accessed Twitter using VPNs. However, some ... from specific unblocked IP addresses originating in mainland China. The accounts we are sharing today represent the most active portions of this campaign; a larger, spammy network of approximately 200,000 accounts — many created following our initial suspensions — were proactively suspended before they were substantially active on the service.

... violations of our platform manipulation policies, ... define as:

  • Spam (發佈垃圾訊息)
  • Coordinated activity
  • Attributed activity(用什麼語言發文、做了什麼事)
  • Fake accounts
  • Ban evasion (想辦法不要被Ban)

看似容易,也是偵測假新聞常用手段,但不是平台方,可能會證據不全

20萬帳號的活躍核心成員,大部分帳號在還沒活動前就被停用了

數據上可偵測

平台方才有辦法偵測

18 of 60

19 of 60

20 of 60

被刪帳戶之資料特性

二十萬帳戶網絡中的936個活躍帳戶,但抽取基準為何不明確。是根據帳戶資訊?VPN?又是根據什麼樣的特徵和行為?(給了936個帳戶及其歷史發文內容)

帳戶被認為涉及香港反送中的相關訊息操作,但發文內容可能包山包海,不侷限在反送中主題。有可能帳號之前是別人用,最近才被買走。

Twitter官方偵測重點為發佈垃圾訊息、有組織、協調性的操作和特殊行為。透過VPN的偵測可能會誤判。

21 of 60

資料分析如何開始?

了解資料的特性:開放資料、統計資料、社群資料

  • 具有基礎資料探測能力 → Morning
  • 針對資料特性設計分析方法 → Afternoon

形成假設並逐一驗證 → 構思可能的故事線

22 of 60

社群資料的特性

When and Where, Who do What to Whom�什麼時候、在什麼地方、誰對誰做了什麼事。

E.g., liyiyiyu RT @feituji1994liyuyuyufeituji1994的這則推特RT回自己的timeline

行為:RT(Retweet)�相當於臉書的轉發分享

23 of 60

形成假設並逐一驗證

24 of 60

形成假設並逐一驗證

被刪帳戶什麼時候建立的?國籍?所用語言為何?

被刪帳戶在哪些時期的發文特別多?是否與事件相關

發了多少哪些反送中的推特?時間軸的特徵為何?內文主題為何?數量特徵為何(可參考READr文章)?

資料中發文語言是否有所變化?

被刪帳戶在個人與小群體的社群結構上有何特徵?可否呈現是組織性、協調性的操作

他們的粉絲和他們Follow的人,和一般群眾有何不同?

網絡的互動結構為何?

25 of 60

READr (2019-09-18)【Twitter 大戰中國網軍】剖析網軍互動!長期低度使用、蹭熱點、小夥伴支援

26 of 60

Retweet

27 of 60

Part I: R basic

Review of R basic

28 of 60

個人註解區塊

程式碼區塊

程式碼內的註解

執行整個區塊的程式碼

29 of 60

Basic

Variable 變項、變數(後面沒跟小括號、不是數字、沒雙引號的)

a <- c(1, 2, 3, 4, 5) # numeric vector

b <- c(3, 4, 5, 6, 7) # numeric vector

d <- a + b

Assignment 將右方的物件指給(Assign)給左方的變項

users_1 <- users_1 %>%

select(user_screen_name, account_creation_date, account_language)

30 of 60

Basic

head() 取出前六列出來觀察

View() 開啟表格出來觀察�tweets_1 %>% � mutate(year = year(tweet_time)) %>%� count(year, account_language, tweet_language) %>% View

31 of 60

Pipeline

View(users_1)

users_1 %>% View()

View(head(users_1))

users_1 %>% head %>% View

glimpse(users_1)

users_1 %>% glimpse()

new_variable <- tweets_1 %>%

mutate(userid = as.character(userid)) %>%

mutate(nword = nchar(tweet_text)) %>%

filter(nword > 20)

�temp1 <- mutate(tweets_1, userid = as.character(userid))

temp2 <- mutate(temp1, nword = nchar(tweet_text)) %>%

new_variable <- filter(temp2, nword > 20)

32 of 60

dplyr 十分善於操作類表格資料

select() 選取直欄、變項

filter() 根據變項的條件篩選資料列

mutate() 根據某些變項的操作產生新變項

count() 根據某些變項計算出現次數:例如各種語言的tweet各有幾個?

33 of 60

dplyr

select() 選取必要的欄col,也就是變數、變項variable

users_1 <- users_1 %>%

select(user_screen_name, account_creation_date, account_language)

�filter() 篩出符合條件的列row、資料項、觀察值Observation�

users_1 %>%

filter(account_creation_date > as.Date("2018-12-31"))

tweets_1 %>%

filter(str_detect(tweet_text, "RT @")) %>% dim

34 of 60

dplyr II

mutate() 在該dataframe中,從其他變項產生新的變項

new_variable <- tweets_1 %>%

mutate(userid = as.character(userid)) %>%

mutate(nword = nchar(tweet_text)) %>%

filter(nword > 20)

count() 根據某個變項計算出現次數,會產生一個新變項n��users_1 %>%

count(account_language, sort = T)

users_1 %>%

count(follower_count > 0)

users_1 %>%

count(following_count > mean(following_count)) %>% View

35 of 60

ggplot2

tweets_1 %>%

mutate(month = floor_date(tweet_time, unit = "month")) %>%

count(month) %>%

ggplot() +

aes(as.Date(month), n) +

# geom_line(color = "royalblue") +

geom_area(fill = "royalblue") +

# geom_step(color = "royalblue") +

bbc_style() +

geom_vline(xintercept = as.Date(c("2019-01-01")),

color="red", alpha=0.5)

會產生一個n的變項

從這行開始繪圖

指定x、y軸變項

指定要畫什麼圖

其他的參數們

36 of 60

37 of 60

geom_line()

38 of 60

geom_area()

39 of 60

geom_step()

40 of 60

Preview Part II & III

41 of 60

Part II preview

42 of 60

Part III preview

43 of 60

Part I & II ending

Furthermore

44 of 60

45 of 60

Account creation date

46 of 60

Tweet language count

47 of 60

Tweet language sample

48 of 60

Tweet language count by users

49 of 60

Tweet language by month

中文tweet在2017近年大增�

這些被刪帳號的tweet中,有些語言很久以前就沒再用過

50 of 60

Language

of hk-related account

n = 104, �similar to READr’s n = 105

51 of 60

Network analysis

Final Recaps

52 of 60

Morning 探索性分析

  1. 因集體行動而大量創建假帳號、甚至購買他人帳號,因此有同帳號有數種語言發文的情形。而被刪的帳號於近年均改為使用中文。
  2. 可發現散發垃圾訊息的行為
  3. 被刪帳號和一般帳號在follower/following的比例上和一般使用者相較下有所差異(Attributed activities)
  4. 在2017年前帳號間尚未有互動的資料幾乎不用看,只能夠詮釋這些帳號的行為過去與現在不同(例如語言)

53 of 60

帳號販賣的證據

早期的tweets僅用以了解每個帳號的過去,所以會呈現早期的tweet都是連續是某一個帳號的紀錄。就這些帳號以前可能都是屬於不同的人,各做各的事,所以推文都發生在不同的時間區段。

若這些被刪帳號的人都是這個帳號的原本擁有者,沒道理說,這些人過去沒什麼交集。

54 of 60

Afternoon 網絡分析

  1. 這群成員間彼此RT的關係不多,但會組織性地一起去RT別人。
  2. 組織性的行為依照事件凝聚成子群。
  3. 組織性的行為有兩種:一種是透過集散(Portal、Hub)節點去影響他人、一種是兩兩一起去影響他人,反應出個體在網絡上的角色差異
  4. 網絡分析視角對於互動結構的詮釋能力甚佳

55 of 60

56 of 60

關於資料新聞產製

生產線不必人人會寫程式,但需要了解資料處理流程,提出可能的疑點,且資料分析需要有高負責標準

  1. 是否了解資料?看互動、假帳號分別要看哪些資料?
  2. 挑選反送中相關tweet的做法對不對?
  3. 為了看清楚網絡,篩去權重多少以下的內容?對網絡結構是否產生影響?

57 of 60

58 of 60

關於程式語言

在不使用機器學習與深度學習的狀況下,R在視覺化與資料操作的想像上十分具有優勢,寫作方法固定,尤其適合初學者

R可以處理大量的資料(3百多萬則的tweets)

59 of 60

Thanks

60 of 60

相關計畫目標

透過跨域知識學習從來了解新聞與線上輿論、政治傳播等以培養媒體素養與民主知能

透過資料分析實作來理解新聞、輿論現象背後的動機、認知、與結構因素

透過跨域進階分析方法來深化觀察問題的視角與洞察問題的成因

傳播理論�多元文化�政治傳播

資訊跨域課程

含R與Python

每年共10門400人次

經濟計量

網絡分析

自然語言處理、文字探勘

機器學習