情緒內省
在這個練習中,你要超越只用正面與負面的子集合。你會改為依據 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)