Aan de slagGa gratis aan de slag

n-grams wijzigen

Tot nu toe hebben we alleen TDM's en DTM's gemaakt met losse woorden. Standaard worden ze met unigrams gemaakt, maar je kunt ook focussen op tokens die uit twee of meer woorden bestaan. Dat kan helpen om zinvolle woordgroepen te extraheren die extra inzichten opleveren of betere voorspellende kenmerken bieden voor een machine learning-algoritme.

De onderstaande functie gebruikt het RWeka-pakket om trigrammen (driewoordtokens) te maken: min en max staan allebei op 3.

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

Vervolgens kan de aangepaste tokenizer()-functie worden meegegeven aan de functies TermDocumentMatrix of DocumentTermMatrix als extra parameter:

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

Deze oefening maakt deel uit van de cursus

Text mining met bag-of-words in R

Cursus bekijken

Oefeninstructies

Een corpus is, net als eerder, voorbewerkt met de chardonnay-tweets. Het resulterende object text_corp staat voor je klaar in je werkruimte.

  • Maak een tokenizer-functie zoals hierboven, die 2-woord-bigrammen maakt.
  • Maak unigram_dtm door DocumentTermMatrix() aan te roepen op text_corp zonder de tokenizer()-functie te gebruiken.
  • Maak bigram_dtm met DocumentTermMatrix() op text_corp met de tokenizer()-functie die je zojuist hebt gemaakt.
  • Bekijk unigram_dtm en bigram_dtm. Welke heeft meer termen?

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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

# Create unigram_dtm
___ <- ___(___)

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

# Print unigram_dtm
___

# Print bigram_dtm
___
Code bewerken en uitvoeren