Alterando n-grams
Até agora, só criamos TDMs e DTMs usando palavras únicas. O padrão é fazê-los com unigramas, mas você também pode focar em tokens contendo duas ou mais palavras. Isso pode ajudar a extrair frases úteis que geram insights adicionais ou oferecer atributos preditivos melhores para um algoritmo de Machine Learning.
A função abaixo usa o pacote RWeka para criar tokens de trigrama (três palavras): min e max estão ambos definidos como 3.
tokenizer <- function(x) {
NGramTokenizer(x, Weka_control(min = 3, max = 3))
}
Depois, a função tokenizer() personalizada pode ser passada para as funções TermDocumentMatrix ou DocumentTermMatrix como um parâmetro adicional:
tdm <- TermDocumentMatrix(
corpus,
control = list(tokenize = tokenizer)
)
Este exercício faz parte do curso
Mineração de Texto com Bag-of-Words em R
Instruções do exercício
Um corpus foi pré-processado como antes usando os tweets sobre chardonnay. O objeto resultante text_corp está disponível no seu workspace.
- Crie uma função
tokenizercomo a acima que gere bigramas de 2 palavras. - Crie
unigram_dtmchamandoDocumentTermMatrix()emtext_corpsem usar a funçãotokenizer(). - Crie
bigram_dtmusandoDocumentTermMatrix()emtext_corpcom a funçãotokenizer()que você acabou de fazer. - Examine
unigram_dtmebigram_dtm. Qual tem mais termos?
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Make tokenizer function
___ <- function(x) {
___(___, ___(___, ___))
}
# Create unigram_dtm
___ <- ___(___)
# Create bigram_dtm
___ <- ___(
___,
___
)
# Print unigram_dtm
___
# Print bigram_dtm
___