Zmiana n-gramów
Do tej pory tworzyliśmy macierze TDM i DTM wyłącznie na podstawie pojedynczych słów. Domyślnie używane są unigramy, ale możesz też skupić się na tokenach złożonych z dwóch lub więcej słów. Takie podejście pozwala wyodrębniać użyteczne frazy, które dostarczają dodatkowych spostrzeżeń lub poprawiają jakość cech predykcyjnych w algorytmach uczenia maszynowego.
Poniższa funkcja korzysta z pakietu RWeka, aby tworzyć trigramy (tokeny trzywyrazowe): min i max są ustawione na 3.
tokenizer <- function(x) {
NGramTokenizer(x, Weka_control(min = 3, max = 3))
}
Następnie niestandardową funkcję tokenizer() można przekazać do funkcji TermDocumentMatrix lub DocumentTermMatrix jako dodatkowy parametr:
tdm <- TermDocumentMatrix(
corpus,
control = list(tokenize = tokenizer)
)
To ćwiczenie jest częścią kursu
Eksploracja tekstu metodą Bag-of-Words w R
Instrukcje do ćwiczenia
Obiekt corpus został wstępnie przetworzony jak poprzednio na podstawie tweetów o chardonnay. Wynikowy obiekt text_corp jest dostępny w twoim środowisku.
- Utwórz funkcję
tokenizerpodobną do powyższej, która generuje bigramy (2-wyrazowe). - Utwórz
unigram_dtm, wywołującDocumentTermMatrix()na obiekcietext_corpbez użycia funkcjitokenizer(). - Utwórz
bigram_dtm, wywołującDocumentTermMatrix()na obiekcietext_corpz funkcjątokenizer(), którą właśnie utworzyłeś. - Sprawdź
unigram_dtmibigram_dtm. Który z nich zawiera więcej terminów?
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Make tokenizer function
___ <- function(x) {
___(___, ___(___, ___))
}
# Create unigram_dtm
___ <- ___(___)
# Create bigram_dtm
___ <- ___(
___,
___
)
# Print unigram_dtm
___
# Print bigram_dtm
___