開始使用免費開始

AFINN:I'm your Huckleberry

現在來切換到 AFINN 詞彙庫。AFINN 詞彙庫的分數是從 5 到 -5 的數值,而不僅是正面或負面。與 Bing 詞彙庫的 sentiment 欄不同,AFINN 詞彙庫的情緒分數欄位名稱是 value

和之前一樣,你會先套用 inner_join(),再用 count()。接著,為了彙總每一行的分數,我們會用到 dplyrgroup_by()summarize() 函式。group_by() 會把既有的資料框轉成依「群組」進行運算的群組化資料框。然後,summarize() 讓你以彙總函式(例如 sum()mean())計算每個群組的值。因此,在我們的例子中可以像這樣撰寫:

data_frame %>% 
    group_by(book_line) %>% 
    summarize(total_value = sum(book_line))

在整齊化版本的《Huckleberry Finn》中,第 9703 行包含了「best」、「ever」、「fun」、「life」與「spirit」等詞。「best」與「fun」的 AFINN 分數分別是 3 與 4。彙總後,第 9703 行的總分會是 7。

在 tidyverse 中,因為語法更簡潔且涵蓋了 subset() 的功能,通常會偏好使用 filter() 而非 subset()。以下範例示範如何在 data_frame 上使用 filter() 篩選 column1 等於 24 的列。注意欄位名稱不需要加引號。

filter(data_frame, column1 == 24)

afinn 物件包含 AFINN 詞彙庫。huck 物件則是 Mark Twain 的《Adventures of Huckleberry Finn》為了分析而整理成的整齊化版本。

第 5400 行的內容是:All the loafers looked glad; I reckoned they was used to having fun out of Boggs.(資料集中已經移除了停用詞與標點符號。)

本練習屬於課程

R 情感分析

檢視課程

動手互動練習

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

# See abbreviated line 5400
huck %>% filter(line == 5400)

# What are the scores of the sentiment words?
afinn %>% filter(word %in% c("fun", "glad"))

huck_afinn <- huck %>% 
  # Inner Join to AFINN lexicon
  inner_join(___, by = c("___" = "___")) %>%
  # Count by value and line
  ___(___, ___)
編輯並執行程式碼