• 沒有找到結果。

第三章 系統設計與實作

第一節 臉書資料蒐集爬蟲設計

(Domain Specific Language),進而研究相關前端、後端及資料儲存端技術,作為本研究 建立一套蒐集臉書資料功能與描述關係圖建立之系統實作設計參考理念。 係。有許多學者對社會網絡提出定義,Mitchell(1969) 將社會網絡定義為某一群體中,

個體間特定的連結關係,其中正式與非正式之人際關係,都可視為社會網絡。 Pattison (1993) 則認為,社會網絡關係為社會組織中,組織或個人間相互連結之關係集合。

「網絡」形成的基本元素是節點(node)與連結節點的線(line),有了節點與線,才能進 一步形成面,甚至於形成網絡結構。而根據(Hanneman and Riddle, 2005)研究定義,將 社會網絡歸納至少包括三個要素:

2. 關係(relationship):網絡的第二個要素就是關係,包含關係的「存在」以及關係 的「型態」,行動者由於某種關係的存在而產生互動。

3. 連結(linkages)或連帶(ties):當行動者想要與另一位行動者建立關係時,必須透 過某種途徑(path),直接或間接地達成關係的建立,這種互相連結的基本單位稱 為「連帶」(ties)。

社群網絡分析(Social Network Analysis)是對社會網絡的關係結構及其屬性加以 分析的一套規範和方法這種分析可視為是運用各種數學方法、圖論等發展起來的定量 Selection)、Semantic Web、Page Rank 以及 Modularity 等(李政德等,2008;陳信固,

2012;Ding et al,2004;Vise and Malseed,2005)。

第三節 領域專屬語言(Domain Specific Language)

領 域 專 屬 語 言(Domain Specific Language, 以下簡稱 DSL),在 Desursen et al.(2000) 定義下,是一種經過適當抽像化與符號描述,聚焦且局限在特定問題領域的 程式或可執行規格化語言。而 Language Implementation Patterns 一書的作者 Terence Parr(2009) 認為 DSL 就是一種電腦語言,為處理特定領域目問題而設計出來提升該領 域使用者的生產力。另一本討論 Domain Specific Language 作者 Martin Fowler(2010) 則 認為 DSL 不同於一般用途程式語言(Genernal Purpose Language)用以處理任何種類的軟 體問題,而且針對特定知識領域的問題,並非是什麼新穎名詞,已長久在軟體業界中 使用。接著 Martin Fowler 進一步將 DSL 實作分為兩種型式:internal DSL:一種設計 方法是奠基於現行一般用途程式語言上,利用該程式語言的特性,以其為 DSL 的設計 平台與執行環境,透過設計函式庫或定義關鍵字、巨集的方式來設計 DSL,這種作法

不需重新設計程式語言的架構與編譯原理。另一個為external DSL:使用編譯技術與程 式語言設計方法,重新設計一種別於主要語言的程式語言,包含詞彙(lexis)、語法 (syntax)和語意(semantic),並且以現行程式語言實作此 DSL 的編譯器(compiler)或直譯 器(interpreter),透過直譯器或翻譯工具(語言轉換)將此 DSL 的程式碼轉譯成主要程式 語言的程式碼。

第四節 後端技術研究

2.4.1 服務導向架構(Service-Oriented Architecture)

服務導向架構(Service-Oriented Architecture,以下簡稱 SOA)一種系統架構模 型,主要概念是針對企業需求組合而成的一組軟體元件。組合的元素通常包括:軟體

1. 分散式架構 (distributed)-SOA 的組成元件是由許多分散在網路上的系統組合而 來 , 可 能 是 區 域 網 路 , 也 可 能 是 來 自 廣 域 網 路 。 例 如 網 站 服 務 技 術 (web

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

9

3. 依據開放的標準 (Open standard)-使用開放標準是 SOA 的核心特色,過去的軟 體元件平台如 CORBA、DCOM、RMI、J2EE 採用專屬協定作為元件連結的規 範,使得不同平台的元件無法相通。SOA 則著重於標準與互動性,將可避免不 同平台 (.NET web services 與 Java web services) 開發程式間相互整合的困擾。

4. 以流程角度出發 (process centric)-在建構系統時,首先了解特定工作的流程要 求,並將其切割成服務界面(包括輸入與輸出資料格式),如此其他的發展者就 可以依據服務界面開發 (或選擇) 合適的元件來完成工作。

2.4.2 微服務架構(Microservice Architecture)

微服務 (Microservices) 是一種軟體架構風格,它是以專注於單一責任與功能的 小型功能區塊 (Small Building Blocks) 為基礎,利用模組化的方式組合出複雜的大型應 用程式。微服務的起源是由 Peter Rodgers 博士於 2005 年度雲端運算博覽會提出的微 Web 服務 (Micro-Web-Service) 開始,直到在 2011 年春季的軟件架構師大會上首次亮 相微服務一詞(wikipedia,2017)。如今在 2014 年 03 月 25 號時,Martin Fowler 與 James Lewis 在網路上發表一篇文章,共同定義微服務是由以單一應用程式構成的小服 務,自己擁有自己的行程與輕量化處理,服務依業務功能設計,以全自動的方式部 署,與其他服務使用 HTTP API 通訊。同時服務會使用最小的規模的集中管理 (例如 Docker) 能力,服務可以用不同的程式語言與資料庫等元件實作,不需局限在某種平台 上 。 人 們 常 把 SOA 與 微 服 務 進 行 比 較 , 於 是 Sam Newman 的 《 Building Microservices》一書中,作者對 SOA 和微服務的區別給出了定義:你可以把微服務想 成是 SOA 的一種實踐方式,正如 XP 或 Scrum 是敏捷軟體開發的實踐方式。面向服務 架構(SOA)的概念已有十多年,SOA 提出了一種架構設計思想,但沒有給出標準的 參考實現,所以當微服務架構出現時, 讓人以為是一套全新的架構思想,但事實上它 的本質依然是 SOA 的一種實踐方式。

2.5.1 響應式網頁設計(

Responsive Web Design

)

響應式網頁設計(Responsive Web Design,以下簡單 RWD)概念於 2010 年為網頁 設計師 Ethan Marcotte 所提出的網頁設計方法。傳統上網頁設計預設操作使用者為一

2.5.2 單一頁面應用程式(

Single Page Application)

Mesbah 與 Deursen (2007)的技術報告裡提出一個很重要的問題,那就是網頁應 用程式因為互動性差,導致網頁使用者得到的回應性不佳。造成這個問題來自傳統的 網站設計是多頁模式(Multi-Page Model),網頁使用者必須自己按下某特定網頁按鍵,

將資料送到遠端網頁伺服器,等伺服器回傳對應網頁內容,待瀏覽器重新載入網頁內 容處理完畢後,方能將內容顯現在網頁使用者面前,這就是回應性不佳的主因。因此 單一頁面應用程式(Single Page Application,以下簡稱 SPA)的設計模式就被提出來解決 這個問題,透過 SPA 設計網頁,可以提供網頁使用者更接近桌面應用程的使用經驗,

即時的回應功能提高了網頁與使用者之間的互動性。這是因為 SPA 設計模式,不同於 傳統多頁模式(Multi-Page Model)網站運作方法,跟遠端網頁伺服務要求資料時,只傳 輸更新部分畫面的資料,所佔用資源較少,再取得回應資料後也只是更新網站畫面部 份內容,比起重新載入整個網頁能更快速的回應給使用者,故能提高使用者操作體 驗,現在各大網站均採用此設計模式,如Google、Twitter 及臉書等。

了 A Relational Model of Data for Large Shared Data Banks 論文才引起大家的注意。關聯 式資料庫系統將所有的資料都透過行與列的二元表現形式表示出來,在網狀資料庫系 Cassandra、MongoDB、CouchDB,大致可以分為下列幾類。 鍵與值(Key/Value)型:

存放鍵值成對的簡單構造。如 Amazon.com 的 Amazon Dynamo 採 用的資料模式。 列

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

12

第六節 小結

透過臉書資料蒐集相關文獻探討之後,本研究問題一:探討該蒐集哪些資料便 有了解答,故本研究蒐集臉書資料類型為粉絲頁、使用者、粉絲頁貼文、貼文分享、

貼文留言與其回覆等資料,作為本系統實作蒐集功能主要蒐集資料內容,其中林瑞程 (2015)研究整理指出,按讚資料價值最低,故按讚資料不列入本研究蒐集範圍。而在 經過社群分析相關研究探討,把取得之臉書相關資料,定義粉絲頁、用戶、貼文、留 言、回覆等為行動者,透過描述連結路徑,建立行動者彼此間互動關係作為關係圖領 域專屬語言(Domain Specific Language 以下簡稱 DSL)之理論基礎。後續分析則利用社 群網絡分析技術,依 HITS 演算法計算結果調整行動者,也就是節點大小以突顯重要 角色,再用 Modularity 演算法分群標色關係圖節點,以找出彼此之間的共同性作為視 覺化參考數據。

綜合DSL 研究學者與業界人士所闡述得知,DSL 即是針對特定問題領域所產生 設計出的電腦語言,故依據 Martin Fowler 分類方式,本研究採用 Java 程式語言進行系 統開發,並非能滿足 internal DSL 所提要件。因此,基於臉書互動行為的關係圖領域 專屬語言採 external DSL 設計方法,將蒐集到的臉書資料名詞轉化成詞彙(lexis),再透 過自訂語法(syntax)達成如何建立互動關係語意(semantic),進而描繪出一份臉書互動行 為的關係圖。

在進行相關技術研究後,本研究後端以 SOA 作為系統設計理念,用以微服務架

構實作分散式架構、開放標準與關係鬆散的界面。而為了讓使用者能操作快速建立關

係圖,將 RWD 配合 SPA 作為開發前端的規範發展一套響應式使用者操作介面。最

後,本研究雖會處理到不算小量的資料,但還尚屬關聯式資料庫所成承受範圍,且大 數據資料處理並非本研究問題所探討範圍,故本研究採用關聯式資料庫作為資料儲存 技術採用方案。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

13

第三章 系統設計與實作

本章將依問題二、三、四之探討進行本研究實作之「臉書資料蒐集與關係圖建 立系統」設計方式、技術應用與操作判面之詳細介紹說明。首先是探討問題二,如何 確保蒐集的用戶資料具識別度,說明如何透過先行實驗與反複操作得到如何取得相同 識別子,以及取得資料與解析的方式;其次是探討問題三,如何描述建立關係圖,透 過社會網絡與社群網絡分析文獻探討結果明白如何描述定義出行動者。最後,為了探 討問題四,如何確保本工具能快速有效地建立關係圖實作設計一套使用者操作介面,

讓使用者能透過幾個步驟操作即可建立新的關係圖。

第一節 臉書資料蒐集爬蟲設計

3.1.1 資料蒐集人工操作實驗

依照上述章節所示,本研究蒐集臉書資料類型為粉絲頁、使用者、粉絲頁貼 文、貼文分享、貼文留言與其回覆等資料為實作蒐集功能主要蒐集資料內容。本小節 主要進行研究問題二探討,如何確保蒐集的用戶資料具識別度,也就是確保蒐集之貼 文、貼文分享、貼文留言其其回覆用戶資料是具識別度。在臉書資料蒐集相關文獻探 討中可以發現,研究人員皆是透過臉書 Graph API 進行資料蒐集,也因如此,蒐集回 來 的 用 戶 資 料 的 用 戶 識 別 子 不 在 是 唯 一 值 , 而 是 應 用 程 式 作 用 域 用 戶 識 別 子 (Pymaster, 2017)。故本研究進行一項假設,假設透過不同登入臉書帳號操作瀏覽器

蒐集臉書資料會否有相同識別子不一問題,經操作實驗結果如下圖 3-1 所示,在臉書

蒐集臉書資料會否有相同識別子不一問題,經操作實驗結果如下圖 3-1 所示,在臉書

相關文件