开始使用免费开始使用

不仅仅是词:分词(1)

文本挖掘的常见用途包括:分析购物评价以判断购买者对产品的感受,或分析财经新闻以预测对股价的情绪倾向。要分析文本数据,常见的预处理步骤包括将文本转换为小写(参见 tolower()),以及将句子拆分为单词。

ft_tokenizer() 可同时完成这两个步骤。它的用法与您之前见到的其他转换相同,无需额外参数。

shop_reviews %>%
  ft_tokenizer("review_text", "review_words")

由于每一行的输出可能包含不同数量的单词,output.col 是一个列表列,其中每个元素都是字符串列表。为便于分析文本数据,通常希望数据中每行只包含一个单词。可以使用 tidyr 包中的 unnest() 将"列表的字符串列表"这种格式转换为单一的字符向量。当前在 Spark 上尚无直接展开列表的方式,因此需要先收集到 R,再进行转换。相应的代码模式如下所示。

library(tidyr)
text_data %>%
  ft_tokenizer("sentences", "word") %>%
  collect() %>%
  mutate(word = lapply(word, as.character)) %>%
  unnest(word)

如果您想进一步学习 tidyr 包的用法,推荐参加 Cleaning Data in R 课程。

本练习是课程的一部分

R 中使用 sparklyr 的 Spark 入门

查看课程

练习说明

已经为您创建了名为 spark_conn 的 Spark 连接。已在 Spark 中预定义了指向曲目元数据的 tibble,名称为 track_metadata_tbl

  • track_metadata_tbl 创建名为 title_text 的变量。
    • 选择 artist_nametitle 字段。
    • 使用 ft_tokenizer() 创建新字段 word,其中包含将标题按单词拆分后的结果。
    • 收集结果。
    • word 列进行变换,使用 lapplyas.character 将其展平成字符向量列表。
    • 使用 unnest() 展平该列表列,使数据按每行一个单词的形式呈现。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# track_metadata_tbl has been pre-defined
track_metadata_tbl

title_text <- track_metadata_tbl %>%
  # Select artist_name, title
  ___ %>%
  # Tokenize title to words
  ___ %>%
  # Collect the result
  ___ %>%
  # Flatten the word column 
  ___ %>% 
  # Unnest the list column
  ___
编辑并运行代码