Я использую пакет "tm" для создания DocumentTermMatrix в R. Он хорошо работает для одного грамма, но я пытаюсь создать DocumenttermMatrix из N-грамм (сейчас N = 3), используя пакет tm и функцию tokenize_ngrams из " токенизаторы ".
Но я не могу его создать.
Я искал возможное решение, но мне не очень помогли.
По соображениям конфиденциальности я не могу поделиться данными.
Вот что я попробовал,
library(tm)
library(tokenizers)
данные - это фрейм данных, содержащий около 4,5 тыс. Строк и 2 столбца, а именно «doc_id» и «текст»
data_corpus = Corpus(DataframeSource(data))
Пользовательская функция для токенизации n-грамм:
ngram_tokenizer = function(x){
temp = tokenize_ngrams(x, n_min = 1, n = 3, stopwords = FALSE, ngram_delim = "_")
return(temp)
}
контрольный список для создания DTM:
1 грамм
control_list_unigram = list(tokenize = "words",
removePunctuation = FALSE,
removeNumbers = FALSE,
stopwords = stopwords("english"),
tolower = T,
stemming = T,
weighting = function(x)
weightTf(x)
)
для токенизации N-грамм
control_list_ngram = list(tokenize = ngram_tokenizer,
removePunctuation = FALSE,
removeNumbers = FALSE,
stopwords = stopwords("english"),
tolower = T,
stemming = T,
weighting = function(x)
weightTf(x)
)
dtm_unigram = DocumentTermMatrix(data_corpus, control_list_unigram)
dtm_ngram = DocumentTermMatrix(data_cropus, control_list_ngram)
dim(dtm_unigram)
dim(dtm_ngram)
Размеры обоих ДТМ были одинаковыми.
Пожалуйста, поправьте меня!