開始使用免費開始

變更 n-gram

到目前為止,我們只用單字建立過 TDM 與 DTM。預設是使用 unigram,但你也可以將重點放在包含 2 個以上單字的 token。這有助於擷取有用片語,進一步帶來新的洞見,或為機器學習演算法提供更好的預測特徵。

下面的函式使用 RWeka 套件建立 trigram(3 個字)token:minmax 都設為 3

tokenizer <- function(x) {
  NGramTokenizer(x, Weka_control(min = 3, max = 3))
}

接著,客製化的 tokenizer() 函式可以做為額外參數,傳入 TermDocumentMatrixDocumentTermMatrix 函式中:

tdm <- TermDocumentMatrix(
  corpus, 
  control = list(tokenize = tokenizer)
)

本練習屬於課程

R 的 Bag-of-Words 文本探勘

檢視課程

練習說明

一個 corpus 已如前一步驟以 chardonnay 推文完成前處理。產生的物件 text_corp 已可在你的工作空間中使用。

  • 建立一個如上所示、可產生 2 字 bigram 的 tokenizer 函式。
  • 直接對 text_corp 呼叫 DocumentTermMatrix()(不使用 tokenizer() 函式)以建立 unigram_dtm
  • 使用你剛建立的 tokenizer(),對 text_corp 呼叫 DocumentTermMatrix() 以建立 bigram_dtm
  • 檢視 unigram_dtmbigram_dtm。哪一個包含的 terms 較多?

動手互動練習

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

# Make tokenizer function 
___ <- function(x) {
  ___(___, ___(___, ___))
}

# Create unigram_dtm
___ <- ___(___)

# Create bigram_dtm
___ <- ___(
  ___,
  ___
)

# Print unigram_dtm
___

# Print bigram_dtm
___
編輯並執行程式碼