開始使用免費開始

情緒內省

在這個練習中,你要超越只用正面與負面的子集合。你會改為依據 Plutchik 情緒之輪中的 8 種情緒來篩選文字,並據此建立視覺化。用這種方式,你能把詞彙對應到特定情緒,而不只是正向或負向,從而更清楚地理解用字。

使用 tidytext 的主觀性詞彙庫「nrc」,你會把它與文字做一次 inner_join()。這個「nrc」詞彙庫同時包含 8 種情緒以及正面與負面兩類詞彙。因此在完成 inner_join() 之後,你需要將正面與負面的詞移除。一個做法是搭配否定符號 !grepl()

「Global Regular Expression Print Logical」函式 grepl() 會在每一列中檢查是否找到某個字串樣式,並回傳 True 或 False。在這個練習中,你會用 | 運算子來搜尋 positive 或 negative,如下所示。通常這條直線位在鍵盤的 Enter 鍵上方。因為在 grepl() 前面加上 ! 否定,T 或 F 會被反轉,因此會把 "positive|negative" 移除,而不是保留。

Object <- tibble %>%
  filter(!grepl("positive|negative", column_name))

接著,對識別出的詞套用 count(),並配合 pivot_wider() 來整理資料框的結構。

comparison.cloud() 需要輸入物件具有列名稱,因此你需要把它轉成 base R 的 data.frame,使用 data.frame() 並設定 row.names 參數。

本練習屬於課程

R 情感分析

檢視課程

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

moby_tidy <- moby %>%
  # Inner join to nrc lexicon
  ___(___, by = c("term" = "word")) %>% 
  # Drop positive or negative
  ___(!___("___", sentiment)) %>% 
  # Count by sentiment and term
  ___(___, ___) %>% 
  # Pivot sentiment, using n for values
  ___(names_from = ___, values_from = ___, values_fill = ___) %>%
  # Convert to data.frame, making term the row names
  data.frame(row.names = "___")

# Examine
head(moby_tidy)
編輯並執行程式碼