1. Learn
  2. /
  3. Курси
  4. /
  5. R 中使用 sparklyr 的 Spark 入门

Connected

Вправа

不止于词:分词与标记化 (2)

tidytext 包让您可以使用 "tidyverse" 家族(如 dplyr 和 sparklyr)来分析文本数据。情感分析的完整方法超出本课程范围;您可在 Sentiment Analysis 课程中深入了解。本练习旨在让您快速体验如何在 Spark 上进行这类分析。

情感分析的核心是为每个单词分配一个分值或情绪。例如,在 AFINN 词典中,单词 "outstanding" 的分值为 +5,因为它几乎总在正面语境中使用。"grace" 略偏正面,分值为 +1。"fraud" 通常用于负面语境,分值为 -4。AFINN 分值数据集可通过 get_sentiments("afinn") 获取。为方便起见,已将展开后的词数据和情感词典复制到了 Spark。

通常,您会想比较多个数据分组的情感倾向。可使用如下代码模式:

text_data %>%
  inner_join(sentiments, by = "word") %>%
  group_by(some_group) %>%
  summarize(positivity = sum(score))

内连接会取第一张表中的所有值,并在第二张表中查找匹配;若找到匹配,则把第二张表中的数据追加过来。与左连接不同,它会丢弃未能匹配到的行。下图展示了这一原理。

An inner join, explained using table of colors.

与左连接类似,内连接也是一种"变异连接",因为它会向第一张表添加列。请尝试猜一猜用于内连接的函数,以及如何使用它。(提示:其用法与 left_join()、anti_join() 和 semi_join() 非常相似!)

Інструкції

100 XP

已为您创建 Spark 连接 spark_conn。已将标题中的词和存放在 Spark 中的情感词典分别预定义为 title_text_tbl 和 afinn_sentiments_tbl。

  • 从 title_text_tbl 创建名为 sentimental_artists 的变量。
    • 使用 inner_join() 按 "word" 将 afinn_sentiments_tbl 连接到 title_text_tbl。
    • 按 artist_name 分组。
    • 汇总并定义变量 positivity,其值等于 score 字段之和。
  • 找出歌曲标题情感最负面的前 5 位艺人。
    • 按 positivity 升序排列 sentimental_artists。
    • 使用 slice_max 获取前 5 个结果。
  • 找出歌曲标题情感最正面的前 5 位艺人。
    • 按 positivity 降序排列 sentimental_artists。
    • 获取前 5 个结果。