使用 Azure 串流分析進行社交媒體分析

這個教學教你如何建立社群媒體情緒分析解決方案,方法是將即時的 X(前稱 Twitter)事件帶入 Azure 事件中樞,然後用 Stream Analytics 進行分析。 您可以撰寫 Azure 串流分析查詢來分析資料,並儲存結果以供稍後使用,或建立 Power BI 儀表板來即時提供深入解析。

社交媒體分析工具可協助組織了解熱門話題。 熱門話題就是在社交媒體上有大量文章的話題及意見。 情感分析 (亦稱為意見挖掘) 會使用社交媒體分析工具來判斷使用者對產品或概念的態度。

即時 X 趨勢分析是分析工具的絕佳範例,因為哈希標籤訂閱模型可讓您接聽特定關鍵詞(主題標籤),並開發摘要的情感分析。

即時社群媒體情緒分析情境

一家擁有新聞媒體網站的公司,有意透過刊載與讀者立即相關的網站內容,藉此在競爭對手中取得優勢。 該公司透過對 X 數據進行即時情感分析,對與讀者相關的主題使用社交媒體分析。

若要實時識別 X 上的趨勢主題,公司需要即時分析重要主題的推文量和情感。

必要條件

在這個教學中,你會使用一個連接 X 的客戶端應用程式,尋找帶有特定標籤的推文(你可以設定這些標籤)。 下列清單提供執行應用程式及使用 Azure 串流分析分析來分析推文的必要條件。

  • 如果您沒有 Azure 訂閱,請建立免費帳戶。

  • 一個 X 帳戶。

  • 會讀取 X 動態消息的 TwitterClientCore 應用程式。 若要取得此應用程式,請下載 TwitterClientCore。

  • 安裝 .NET Core CLI version 2.1.0 版。

以下是您要實作的解決方案架構。

顯示用於建構社群媒體分析解決方案的服務與應用程式的圖表。

建立串流輸入的事件中樞

此範例應用程式會產生事件,並將事件發送至事件中樞。 Azure 事件中樞是串流分析擷取事件的慣用方法。 如需詳細資訊,請參閱 Azure 事件中樞文件。

建立 Event Hubs 命名空間與事件中樞

請依照 快速入門:使用 Azure 入口網站建立事件中樞 中的指示,建立事件中樞命名空間和名為 socialx-eh 的事件中樞。 您可以使用不同的名稱。 如果這樣做,請記下來,因為稍後需要用到此名稱。 您不需要為事件中樞設定其他任何選項。

授與事件中樞的存取權限

在程序可將資料傳送至事件中樞之前,事件中樞必須具備允許存取的原則。 存取原則會產生包含授權資訊的連接字串。

  1. 在事件中樞命名空間左側導覽列中,選取 [事件中樞],其位於 [實體] 區段中。 然後選取您剛才建立的事件中樞。

  2. 在左側導覽列中,選擇 [共用存取原則],其位於 [設定] 下方。

    注意

    命名空間和活動中心都有 共享存取政策 選項。 請確認您是在事件中樞的內容脈絡下操作,而不是在命名空間中操作。

  3. 在 [共用存取原則] 頁面上,選取命令列上的 [+ 新增]。 然後在 原則名稱 中輸入 socialx-access,並勾選 管理 核取方塊。

  4. 選取 建立。

  5. 部署原則後,在共用存取原則清單中選取此原則。

  6. 找出標示為 [連接字串主要索引鍵] 的方塊,選取連接字串旁邊的複製按鈕。

  7. 將連接字串貼到文字編輯器。 在做一些小幅編輯後,你會在下一節需要用到這個連接字串。

連接字串如下所示:

Endpoint=sb://EVENTHUBS-NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=socialx-access;SharedAccessKey=XXXXXXXXXXXXXXX;EntityPath=socialx-eh

請注意,連接字串包含多個機碼值組,以分號分隔:Endpoint、SharedAccessKeyName、SharedAccessKey 和 EntityPath。

注意

基於安全考量,我們已移除範例中連接字串的某些部分。

設定並啟動 X 用戶端應用程式

用戶端應用程式會直接從 X 取得推文事件。若要這樣做,它需要呼叫 Twitter 串流 API 的許可權。 若要設定該許可權,您可以在 X 中建立應用程式,以產生唯一認證(例如 OAuth 令牌)。 然後,您可以設定用戶端應用程式在呼叫 API 時使用這些認證。

建立 X 應用程式

如果你還沒有可以用來做這個教學的 X 應用程式,你可以自己做一個。 您必須已經有 X 帳戶。

注意

X 中建立應用程式並取得金鑰、秘密和令牌的確切程式可能會變更。 如果這些指示不符合您在 X 網站上看到的內容,請參閱 X 開發人員檔。

  1. 從網頁瀏覽器移至 [X 開發人員]、建立開發人員帳戶,然後選取 [ 建立應用程式]。 您可能會看到訊息,指出您需要申請 X 開發人員帳戶。 您可以隨意執行此動作,在您的應用程式獲得核准之後,您應該會看到一封確認電子郵件。 核准開發人員帳戶可能需要幾天的時間。

    X 開發者入口網站的截圖,顯示「建立應用程式」按鈕。

  2. 在 [建立應用程式] 頁面上,提供新應用程式的詳細資料,然後選取 [建立 Twitter 應用程式]。

    應用程式細節面板的截圖,輸入新申請的數值。

  3. 在應用程式頁面中,選取 [金鑰和權杖] 索引標籤,並複製 [取用者 API 金鑰] 和 [取用者 API 秘密金鑰] 的值。 此外,選取 [存取權杖和存取權杖密碼] 底下的 [建立] 來產生存取權杖。 複製 [存取權杖] 和 [存取權杖祕密] 的值。

    儲存您為 X 應用程式擷取的值。 您稍後需要這些值。

注意

X 應用程式的金鑰和秘密可讓您存取您的 X 帳戶。 請將此資訊視為敏感資訊,如同對待您的 X 密碼一樣。 例如,請勿將這項資訊內嵌在您提供給其他人的應用程式中。

設定用戶端應用程式

我們已建立用戶端應用程式,使用 Twitter 串流 API 連線到 X 數據,以收集特定主題的相關推文事件。

在應用程式執行之前,您需要提供一些資訊,例如 Twitter 金鑰和事件中樞連接字串。

  1. 請確定您已下載 TwitterClientCore 應用程式,如必要條件中所示。

  2. 使用文字編輯器開啟 App.config 檔案。 對 <appSettings> 元素做出下列變更:

    • 將 oauth_consumer_key 設為 Twitter 取用者金鑰 (API 金鑰)。
    • 將 oauth_consumer_secret 設為 Twitter 取用者祕密 (API 祕密金鑰)。
    • 將 oauth_token 設為 Twitter 存取權杖。
    • 將 oauth_token_secret 設為 Twitter 存取權杖祕密。
    • 將 EventHubNameConnectionString 設為連接字串。
    • 將 EventHubName 設為事件中樞名稱 (也就是實體路徑的值)。
  3. 開啟命令列,並流覽至您的 TwitterClientCore 應用程式所在的目錄。 使用 dotnet build 命令建立專案。 然後使用 dotnet run 命令執行應用程式。 應用程式會將推文傳送至事件中樞。

建立串流分析作業

既然推文事件是從 X 即時串流,您可以設定串流分析作業,以即時分析這些事件。

  1. 在 Azure 入口網站中,瀏覽至您的資源群組並選取 [+ 新增]。 然後搜尋 串流分析作業,並選取 建立。

  2. 將作業命名為 socialx-sa-job,並指定訂用帳戶、資源群組和位置。

    最好將作業和事件中樞放在相同的區域,以達到最佳效能,在區域之間傳送資料也不需要付費。

  3. 選取 建立。 然後在部署完成時,瀏覽至您的工作。

指定作業輸入

  1. 在您的串流分析作業中,從 作業拓撲 下方的左側選單中選取 輸入。

  2. 選取+ 新增資料流輸入>事件中樞。 在 [新輸入] 表單中填寫下列資訊︰

    設定 建議的值 說明
    輸入別名 TwitterStream 輸入此輸入項目的別名。
    訂用帳戶 <您的訂用帳戶> 選取您要使用的 Azure 訂用帳戶。
    事件中樞命名空間 asa-x-eventhub
    事件中樞名稱 socialx-eh 選擇 使用現有。 然後選取您剛才建立的事件中樞。
    事件壓縮類型 Gzip 資料壓縮類型。

    保留其餘預設值並選取 [儲存]。

指定作業查詢

串流分析支援說明轉換的簡單、宣告式查詢模型。 若要深入了解語言,請參閱 Azure 串流分析 查詢語言參考。 這個教學會幫助你針對 X 資料撰寫並測試多個查詢。

為了比較提及不同話題的次數,您可以使用輪轉視窗,依話題每隔五秒取得一次提及次數。

  1. 在作業的概觀中,選取 [查詢] 方塊右上方附近的編輯查詢。 Azure 會列出作業已設定的輸入和輸出,並讓您建立查詢,在輸入資料流傳送至輸出時進行轉換。

  2. 在查訊編輯器中,將查詢變更如下:

    SELECT *
    FROM TwitterStream
    
  3. 訊息中的事件資料應該會出現在查詢底下的 [輸入預覽] 視窗中。 確定 [檢視] 已設定為 [JSON]。 如果您看不到任何資料,請確定您的資料產生器正在將事件傳送至事件中樞,而且您已選取 Gzip 做為輸入的壓縮檔類型。

  4. 選取 [測試查詢],並注意查詢底下的 [測試結果] 視窗中的結果。

  5. 在程式碼編輯器中將查詢變更成以下的程式碼,然後選取 [測試查詢]:

    SELECT System.Timestamp as Time, text
    FROM TwitterStream
    WHERE text LIKE '%Azure%'
    
  6. 此查詢會傳回包含關鍵字「Azure」的所有推文。

建立輸出接收器

您現在已定義事件資料流、用來內嵌事件的事件中樞,以及用來轉換資料流的查詢。 最後一個步驟是為該作業定義輸出接收端。

在這個教學中,你會將工作查詢中彙整的推文事件寫入 Azure Blob 儲存。 根據您的應用程式需求,您也可以將結果發送至 Azure SQL Database、Azure 資料表儲存體、事件中樞或 Power BI。

指定作業輸出

  1. 在左側導覽功能表的 [作業拓撲] 區段下,選取 [輸出]。

  2. 在輸出頁面上,選取 + 新增及 Blob 儲存體/Data Lake 儲存體 Gen2:

    • 輸出別名:使用名稱 TwitterStream-Output。
    • 匯入選項: 選取 [從您的訂用帳戶選取儲存體]。
    • 儲存體帳戶。 選取您的儲存體帳戶。
    • 容器。 選取 [新建],然後輸入 socialx。
  3. 選取 儲存。

啟動作業

已指定作業輸入、查詢和輸出。 您已準備好啟動串流分析作業。

  1. 請確定 TwitterClientCore 應用程式正在執行。

  2. 在 [作業總覽] 中,選取 [開始]。

  3. 在 [啟動作業] 頁面的 [作業輸出開始時間] 中,選取 [現在],然後選取 [啟動]。

獲得 Azure 串流分析 支援

如需進一步的協助,請嘗試 Azure 串流分析的 Microsoft 問與答頁面。

下一步