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
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_dtmdoorDocumentTermMatrix()aan te roepen optext_corpzonder detokenizer()-functie te gebruiken. - Maak
bigram_dtmmetDocumentTermMatrix()optext_corpmet detokenizer()-functie die je zojuist hebt gemaakt. - Bekijk
unigram_dtmenbigram_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
___