Modificare gli n-gram
Finora abbiamo creato solo TDM e DTM usando singole parole. L'impostazione predefinita è usare unigrammi, ma puoi anche concentrarti su token che contengono due o più parole. Questo può aiutare a estrarre frasi utili che portano a ulteriori insight o forniscono attributi predittivi migliori per un algoritmo di Machine Learning.
La funzione seguente utilizza il pacchetto RWeka per creare trigrammi (tre parole): min e max sono entrambi impostati a 3.
tokenizer <- function(x) {
NGramTokenizer(x, Weka_control(min = 3, max = 3))
}
Quindi la funzione tokenizer() personalizzata può essere passata alle funzioni TermDocumentMatrix o DocumentTermMatrix come parametro aggiuntivo:
tdm <- TermDocumentMatrix(
corpus,
control = list(tokenize = tokenizer)
)
Questo esercizio fa parte del corso
Text mining con Bag-of-Words in R
Istruzioni dell'esercizio
Un corpus è stato pre-elaborato come in precedenza usando i tweet su chardonnay. L'oggetto risultante text_corp è disponibile nel tuo workspace.
- Crea una funzione
tokenizercome quella sopra che generi bigrammi di 2 parole. - Crea
unigram_dtmrichiamandoDocumentTermMatrix()sutext_corpsenza usare la funzionetokenizer(). - Crea
bigram_dtmusandoDocumentTermMatrix()sutext_corpcon la funzionetokenizer()che hai appena creato. - Esamina
unigram_dtmebigram_dtm. Quale ha più termini?
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Make tokenizer function
___ <- function(x) {
___(___, ___(___, ___))
}
# Create unigram_dtm
___ <- ___(___)
# Create bigram_dtm
___ <- ___(
___,
___
)
# Print unigram_dtm
___
# Print bigram_dtm
___