• 沒有找到結果。

15-02 R軟體與Facebook API - Text Mining

N/A
N/A
Protected

Academic year: 2021

Share "15-02 R軟體與Facebook API - Text Mining"

Copied!
13
0
0

加載中.... (立即查看全文)

全文

(1)

R 軟體與 Facebook API - Text Mining

江 奕 副統計分析師 生統 eNews 於上一期中,帶大家認識了 R 軟體入門的相關基本應用 與資料型態介紹等功能,希望大家對這套軟體已能有更深入的了解,又到 了出刊的時間,本期eNews 將進一步教大家如何使用 R 軟體串接 Facebook 所提供的API,擷取任何您有興趣的社群資料用於分析上。 想撈取Facebook 上的資料,得先取得通過 Facebook 的權限認證機制, 以下幾個步驟教大家如何順利建立一個Facebook App。 步驟一: 進入https://developers.facebook.com/ FB 開發人員的網頁,並於右上方 我的應用程式中,點選新增應用程式。

(2)

步驟二:

選取您所新增的平台形式,在這裡我們點選最右邊的WWW(網站)

步驟三:

這邊讀者可以取一個任意的 App 的名稱後,點選下方建立新的

(3)

步驟四:

輸入欲顯示的名稱(此處不得輸入含有 FB 等字樣的名稱),聯絡用的 電子郵件,於類別項目下拉選取您的用途。

步驟五:

點選右上角的Skip Quick Start 或從網頁右上方我的應用程式選取剛

(4)

步驟六: 點選左方灰色區塊主控板,右方則會顯示API 版本、應用程式編號, 應用程式密鑰。 步驟七: 點選應用程式密鑰右方顯示按鈕(可能須重新輸入 FB 密碼)。將此應 用程式編號與應用程式密鑰先記錄下來,後續將用於撈取 Facebook 上的 資料。 以上完成了 Facebook APP 的申請,接著我們利用應用程式編號以及 密鑰就可利用R 軟體來取用 Facebook 上的資料囉!

(5)

開啟我們的 R 軟體後,我們必須先安裝 R 套件”Rfacebook”用來連結 Facebook,安裝套件程式碼:install.packages("Rfacebook")。 install.packages ( "Rfacebook" ) 1 library ( Rfacebook ) 2

fb_oauth = fbOAuth ( app_id = "6344xxxx … x", 3 app_secret = "9cf4xxx … x" ) 4 程式碼第 1-2 行中分別為安裝 Rfacebook 套件以及載入套件,接著 3-4 行使用 fbOAuth 函數將步驟七的應用程式編號與應用程式密鑰分別輸入 至參數中,app_id =”應用程式編號”,app_secret =” 應用程式密鑰”,執行 程式後,會出現 Copy and paste into Site URL on Facebook App Settings: http://localhost:1410/ When done, press any key to continue...等訊息文字於 R 的 Console 中,接著將網址 http://localhost:1410/ 複製,開啟步驟六的主控 板頁面,點選左方設定中的基本資料點取下方新增平台。

(6)

選擇網站。

將網址 http://localhost:1410/ 輸入於網站網址中。

回到 Console 介面按下任意鍵後,會有以下訊息: Waiting for authentication in browser...

Press Esc/Ctrl + C to abort Authentication complete. Authentication successful.

此時會自動開啟瀏覽器顯示 Authentication complete. Please close this page and return to R.

(7)

此處若有預先登入非申請 Facebook API 的使用者帳號可能會出現錯誤訊 息,請將此帳號登出後,重新登入已申請過 Facebook API 的帳號即可。 dir_fb_oauth = "d:/fb_oauth"

5

save(dir_fb_oauth, file = dir_fb_oauth ) 6 load( dir_fb_oauth ) 7 程式碼第 5 行為欲存取的路徑,第 6 行使用 save 將 Facebook 存取權 儲存起來,後續可以直接使用第 7 行程式 load 函數碼載入

fb_oauth

即可。 接下來,可以尋找您感興趣的粉絲專業來擷取資訊囉!假設感興趣的是北 醫粉絲版,就可將網址列後面的ID:269261497877複製。 這邊順帶提醒大家,ID 部分也有可能像羅技電子是英文ID:logitech.taiwan

(8)

fb_page = getPage ( page="logitech.taiwan", token = 8 fb_oauth, n = 600 ) 9 names( fb_page ) 10 我們這邊使用羅技電子來做後續的範例操作,程式第 8 行使用 getPage 函數抓取,page 參數 ID 為 logitech.taiwan,token 參數中為剛剛所建立的 認證,n 參數為擷取前 600 篇文章,讀取後可使用第 9 行查看

fb_page

有 哪些名稱。簡述幾個較常使用到的資料變數。 "message":官方貼出的文章。 "created_time":官方貼文的文章時間 "likes_count":每篇文章的按讚數 "comments_count":每篇文章的留言數 "shares_count":每篇文章的分享數 #查詢前 5 篇官方的貼文: 11 fb_page$message[ 1:5 ] 12 利用$字符號與[ ]指標系統,可撈出官方所發表的文章。 以下為 R 的輸出結果 [1] "這人生,美好的派對生活無「線」展開\n#Logitech …… [2] "【#羅技不藏私 黑暗領域技術的秘密】 \n 外出拜訪客戶…… [3] "【2016 台灣電競節】 三大亮點!….. [4] "為什麼羅技要稱它旗艦?\nG900 鼠王背後的秘密!….. [5] "【羅技 M720 Triathlon 多工滑鼠開放預購ヽ(○´∀`○)ノ】….. #查詢前 15 篇留言數目: 13 fb_page$comments_count[ 1:15 ] 14 以下為 R 的輸出結果 [1] 0 1 0 1 4 0 2 0 1 2 1 1 15 21 2

(9)

# 單純取出粉絲頁的第 14 篇文章: 15

post = getPost ( post = fb_page$id[ 14 ], 16

token = fb_oauth ) 17

# 顯示前 20 筆回應 18

comments = post$comments$message 19 comments[ 1:20 ] 20 以下為 R 的輸出結果 [1] "小羅對不起大家!(跪主機板 名單已補上 QwQ" [2] "" [3] "" [4] "誰中啊?000" [5] "我也來卡位 XD" # 顯示前 6 筆按讚人資訊 21 head( post$likes ) 22 以下為 R 的輸出結果 from_name from_id 1 林 xx 1395956xxxx 2 陳 xx 1004927xxxx 3 許 xx 3143544xxxx 4 Lee xx 1015455xxxx 5 葉 xx 1164919xxxx 6 Sylvia xx 1586205xxxx

messageTXT = fb_page$message[ 1:600 ] 23

dirDATA = "路徑"

24

write( messageTXT, file = dirDATA, 25

ncolumns = length( messageTXT ), sep=",") 26

程式碼 23-26 行將官發 PO 的 600 篇文章寫出到您的裝置中,待後續 使用。

(10)

library( tm ) # Text Mining Package 1 library( Rwordseg ) #中文斷詞 2 library( tmcn ) #處理中文字的輔助套件 3

library( wordcloud ) # Word Clouds 4

library( colorspace ) # Color Space Manipulation 5 使用 R 軟體進行文字探勘前,需先安裝些許套件,其中包含,tm、 Rwordseg、tmcn、wordcloud、colorspace 等,其中 Rwordseg 套件需安裝含 有 Java 環境的作業系統中才能正常操作,若 R 軟體執行載入套件過程出 現相關錯誤,請讀者前往 http://java.com/zh_TW/download/ 下載適合自己 系統的版本進行安裝並執行 library(rJava)載入套件。程式碼 1-5 行為載入 所需套件指令。

#Representing and computing on corpora. - tm

6

FbData = Corpus( DirSource( "路徑", encoding = "big5" ) ) 7

#Interface to apply transformation functions to corpora. - tm

8

FbData = tm_map( FbData, stripWhitespace ) 9

FbData = tm_map( FbData, removePunctuation ) 10

FbData = tm_map( FbData, removeNumbers ) 11

FbData = tm_map( FbData, 12

function( word ){ gsub( "[A-Za-z0-9]", "", word ) } ) 13

FbData = tm_map( FbData, PlainTextDocument ) 14

程式碼第 7 行將剛剛所存取的 600 篇文字檔使用 Corpus 函數讀取至

R 軟體(tm 套件)。9-14 行主要為資料的整理,包含清除多餘的空白鍵(Strip

extra whitespace from a text document. Multiple whitespace characters are collapsed to a single blank.),清除標點符號(Remove punctuation marks from

(11)

a text document.),清除數字(Remove numbers from a text document.)以及

英文大小寫等等,最後創建為一純文字檔(Create plain text documents.)。

StopWords = stopwordsCN( ) 15

FbData = tm_map( FbData, removeWords, StopWords ) 16

FbData2 = tm_map( FbData, ontent_transformer( segmentCN ), 17

nature = TRUE, returnType = 'tm') 18

FbData3 = Corpus( VectorSource( FbData2 ) ) 19

程式碼第 15-16 行主要為清除停止詞,例如:既然,以及,因此..等 等字詞清除(tmcn 套件),17-18 行將文字檔進行中文斷詞的工作(Rwordseg 套件),最後存為最後拿來分析的語料庫中。

Fbcloud = segmentCN( FbData3[[1]]$content, nature = TRUE)

1

Fbcloud = unlist( Fbcloud ) 2

noun = Fbcloud[ names ( Fbcloud ) == "n" ] 3

tab = table( noun ) 4

Data = as.data.frame( tab[ tab >= 1 ] ) 5

程式碼 1-5 行主要將資料取出只包含有名詞的文字,計算每個字詞 出現次數並保留大於一次的部分。將其存為一資料框架變數。

wordcloud( 6

words = Data$noun, freq = Data$Freq, 7

min.freq =8, 8

random.order = F, ordered.colors = T, scale=c(9,.8), 9

colors = rainbow_hcl( nrow( Data ) ) 10

) 11

(12)

程式碼 6-11 使用 wordcloud 函數將資料畫出文字雲(wordcloud 套件), 參數設定部分可調整,出現頻率,順序,顏色,大小...等等(詳細可參考套 件說明文件),結果如下圖: 其實撈取資料後,可以看到許多資訊,下圖是前 25 篇發出文章的類 型,基本上羅技電子官方發文幾乎都是圖片佔多數。

粉絲

鍵盤

決定權

時間

圖片

世界 禮 手 來源 節 朋友 獎品 序號 產品 虹彩 粉 音樂 條款 創意 好友 官方 小時 得主 機會 專業 辦法 專人 程序 時尚 資訊 英雄 團 錯 獎 聯盟 氣 商品 軸 隊 電腦 誌 機械 按鍵 範例 日期 冠軍 音效 動物 潮 獎項 牙 全區 名單 星 雪 公告 心 明星 原價 會議 攤位 中文版 功能 耳機 派對 裝置 價值 線 禮物 女子 手機 光華 名字 技術 官 效能 馬 方式 主 市價 平台 故事 商 大獎 代言人 台幣 掌聲 隊伍 新品 圖說 實況 價格 樓 辦公室 心情 光 版 值 麥克風 資格 熱血 獎金 題目 系統 時候 規則 速度 照片 顏色 難度 利器 爸 圖 魅力 力 方向盤 平板 門 神 配件 資料 夢幻 網頁 數量 賽事 人員 耳 沙發 空間 音箱 音響 國際 喇叭 報 超人 裝備 網路 標記 環境 蟲 寶 中心 角度 車 依據 武器 爸爸 表面 城市 紅色 風 處 量 媽媽 極致 路 雷 電子 福 戰場 總價值 願望 0 5 10 15

link note photo video

型態

(13)

若想看回應留言數,按讚人數,分享人數的比例,可將 600 篇文章畫 一圓餅圖。如下圖: 有興趣的讀者,也可以畫出月份對於留言數,按讚人數,分享人數的 平均次數。如下圖: 上方的長條圖,圓餅圖,折線圖,都是使用 R 軟體中的 ggplot2 套件 所畫出,有興趣的讀者可以參考網路上的資源進行實作看看! 1 10 50 100 200 550 2015-04月 2015-07月 2015-10月 2016-01月 2016-04月 2016-07月 2016-10月 平均次數 回應 留言數 按讚次數 分享次數 Logitech

參考文獻

相關文件

 附錄 2:在 Windows XP 中將 Tera Term 設定為預設 Telnet 用戶端..  附錄

(一)本中心進行微軟公司校園授權軟體 CA 簽約,微軟已將台灣通用之制式合約由 CA 3.4 版變更為 3.5 版;其中將原來的 office pro 更改為 office pro for Windows,即新版

粉絲頁面 facebook 朋友

微算機原理與應用 第6

台灣大選將於明年 1 月登場,屆時將舉行第十五任總統、副總統與第十屆立法委

 Request.Cookies[ "Cookie 名稱" ].Value –取得使用者所傳送的 Cookie 內容. 

 駭客集團「Gameover Zeus」被指自 2006 年起就散播病毒,入侵企業及個人 電腦,並利用儲存於電腦內的使用者密 碼與私人資料 登入銀行戶頭盜取資 金 ;此外,Gameover

台灣大選將於明年 1 月登場,屆時將舉行第十五任總統、副總統與第十屆立法委