開始使用免費開始

DTM 與 tidytext 矩陣

tidyverse 是一組有共同理念、可彼此協作的 R 套件。本章會介紹一些 tidy 函式來操作資料。在這個練習中,你會把 DTM 與一個稱為 tibble 的 tidy 文字資料框做比較。 在 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))

你也會使用 tidyrpivot_wider() 來整理資料,讓每一列代表書中的一行文字,並將正向與負向分數作為欄位。

index negative positive
42 2 0
43 0 1
44 1 0

若要把 DTM 轉為 tidy 格式,請使用 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, ],以比較 tidy 格式。你會看到與第 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[___, ]
編輯並執行程式碼