DTM 与 tidytext 矩阵
tidyverse 是一组遵循共同哲学、并可协同工作的 R 包。本章将介绍若干 tidy 函数来处理数据。在本练习中,您将把 DTM 与一种称为 tibble 的整洁文本数据框进行比较。
在 tidyverse 中,每一条观测都是数据框中的一行。这使在不同包中工作更容易,因为底层的数据结构一致。本课程的部分内容大量借鉴了使用该数据组织方式的 tidytext 包。
例如,您可能已经熟悉来自 magrittr 包的 %>% 运算符。它会将左侧对象作为右侧函数的第一个参数传递。
在下面的示例中,您将对象 data 传递给 function1()。请注意括号为空。然后结果再传递给 function2()。在最后一个函数中,您无需再添加 data 对象,因为它来自 function1() 的输出。不过,您添加了一个虚构参数 some_parameter = TRUE。这些管道传递最终创建了 object。
object <- data %>%
function1() %>%
function2(some_parameter = TRUE)
要使用 %>% 运算符,不一定要加载 magrittr 包,因为 dplyr 包中同样提供了该运算符。dplyr 还包含用于连接数据的 inner_join()(您稍后会学习更多)以及用于计数的 count()。您还需要的另一个函数是 mutate(),用于创建新变量或修改已有变量。
object <- data %>%
mutate(new_Var_name = Var1 - Var2)
或者修改变量:
object <- data %>%
mutate(Var1 = as.factor(Var1))
您还将使用 tidyr 的 pivot_wider() 函数整理数据,使每一行对应书中的一行文本,正向与负向的值作为列。
| index | negative | positive |
|---|---|---|
| 42 | 2 | 0 |
| 43 | 0 | 1 |
| 44 | 1 | 0 |
要将 DTM 转换为整洁格式,请使用 broom 包中的 tidy()。
tidy_format <- tidy(Document_Term_Matrix)
本练习使用希腊悲剧《Agamemnon》中的文本。《Agamemnon》讲述了婚姻不忠与谋杀的故事。您可以在此处下载副本。
本练习是课程的一部分
R 中的情感分析
练习说明
我们已为本练习创建了清洗后的 DTM,命名为 ag_dtm。
- 使用
as.matrix()作用于ag_dtm,创建ag_dtm_m。 - 使用中括号
[和],将ag_dtm_m按行索引到第2206行。 - 对
ag_dtm应用tidy(),将新对象命名为ag_tidy。 - 查看
ag_tidy的行[831:835, ],以比较整洁格式。您会在第 2 步查看的ag_dtm_m片段中看到一个常见的词。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# As matrix
ag_dtm_m <- ___
# Examine line 2206 and columns 245:250
ag_dtm_m[___, 245:250]
# Tidy up the DTM
ag_tidy <- ___
# Examine tidy with a word you saw
ag_tidy[___, ]