不仅仅是词:分词(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_name和title字段。 - 使用
ft_tokenizer()创建新字段word,其中包含将标题按单词拆分后的结果。 - 收集结果。
- 对
word列进行变换,使用lapply和as.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
___