你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 流分析进行社交媒体分析

本文介绍如何通过将实时 X 事件引入 Azure 事件中心,然后使用流分析对其进行分析来生成社交媒体情绪分析解决方案。 可以编写 Azure 流分析查询来分析数据并存储结果以供将来使用,或者创建 Power BI 面板来实时提供见解。

社交媒体分析工具可帮助组织了解热门话题。 热门话题是在社交媒体中有大量博文的主题和态度。 情绪分析(也称为“观点挖掘”)使用社交媒体分析工具来确定大众对产品和理念的态度。

实时 X 趋势分析就是一个很好的分析工具示例,因为井号标签订阅模型使你可以侦听特定关键字(井号标签)并开发源的情绪分析。

方案:实时社交媒体情绪分析

一家拥有新闻媒体网站的公司关注如何打造特色网站内容,使之迅速贴近其读者,以便增加相较于其竞争对手的竞争优势。 该公司通过对 X 数据执行实时情绪分析,以便在贴近读者的主题上使用社交媒体分析。

若要标识 X 上的实时热门话题,公司需要关于关键主题推文量及情绪的实时分析。

先决条件

本操作指南将引导你使用客户端应用程序连接到 X,并查找具有特定话题标签(可设置)的推文。 以下列表提供了运行应用程序并使用 Azure 流分析来分析推文的先决条件。

  • 如果还没有 Azure 订阅,可以创建一个免费帐户

  • X 帐户。

  • TwitterClientCore 应用程序,用于读取 X 源。 若要获取此应用程序,请下载 TwitterClientCore

  • 安装 .NET Core CLI 版本 2.1.0。

以下是要实现的解决方案体系结构。

显示用于生成解决方案的不同服务和应用程序的示意图。

为流式处理输入创建事件中心

示例应用程序生成事件并将其推送到事件中心。 Azure 事件中心是适合流分析的首选事件引入方法。 有关详细信息,请参阅 Azure 事件中心文档

创建事件中心命名空间和事件中心

按照快速入门:使用 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

请注意,连接字符串包含多个键值对,用分号分隔:EndpointSharedAccessKeyNameSharedAccessKeyEntityPath

注意

为安全起见,已删除示例中的部分连接字符串。

配置并启动 X 客户端应用程序

客户端应用程序直接从 X 获取推文事件。为此,它需要有权调用 Twitter 流式处理 API。 若要配置该权限,可在 X 中创建一个应用程序,该应用会生成唯一凭据(例如 OAuth 标记)。 然后,可配置客户端应用程序,以便在其执行 API 调用时使用这些凭据。

创建 X 应用程序

如果还没有可用于本操作指南的 X 应用程序,可以创建一个。 你必须已有 X 帐户。

注意

X 中创建应用程序以及获取密钥、机密和令牌的确切过程可能会改变。 如果这些说明与你在 X 网站上看到的内容不符,请参阅 X 开发人员文档。

  1. 在 Web 浏览器中,转到 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 数据库、Azure 表存储、事件中心或 Power BI,具体取决于应用程序需求。

指定作业输出

  1. 在左侧导航菜单的“作业拓扑”部分下,选择“输出” 。

  2. 在“输出”页中,选择“+ 添加”和“Blob 存储/Data Lake Storage Gen2”:

    • 输出别名:使用名称 TwitterStream-Output
    • 导入选项:选择“从订阅选择存储”。
    • 存储帐户: 选择存储帐户。
    • 容器: 选择“新建”,并输入 socialx
  3. 选择“保存”。

启动作业

指定作业输入、查询和输出。 已准备好启动流分析作业。

  1. 请确保 TwitterClientCore 应用程序正在运行。

  2. 在作业概述中,选择“开始”。

  3. 在“启动作业”页中,为“作业输出开始时间”选择“现在”,然后选择“开始” 。

获取支持

如需获取进一步的帮助,可前往 Azure 流分析的 Microsoft 问答页面

后续步骤