我正在使用“tm”包在 R 中创建 DocumentTermMatrix。它适用于 1-gram,但我正在尝试使用 tm 包和“tokenizers”包中的 tokenize_ngrams 函数创建 N-Grams(现在 N = 3)的 DocumenttermMatrix 。但我无法创建它。
我搜索了可能的解决方案,但没有得到太多帮助。出于隐私原因,我无法共享数据。这是我尝试过的,
library(tm)
library(tokenizers)
Run Code Online (Sandbox Code Playgroud)
data 是一个大约有 4.5k 行和 2 列的数据框,即“doc_id”和“text”
data_corpus = Corpus(DataframeSource(data))
Run Code Online (Sandbox Code Playgroud)
n-gram 标记化的自定义函数:
ngram_tokenizer = function(x){
temp = tokenize_ngrams(x, n_min = 1, n = 3, stopwords = FALSE, ngram_delim = "_")
return(temp)
}
Run Code Online (Sandbox Code Playgroud)
用于 DTM 创建的控制列表:
1-gram
control_list_unigram = list(tokenize = "words",
removePunctuation = FALSE,
removeNumbers = FALSE,
stopwords = stopwords("english"),
tolower = T,
stemming = T,
weighting = function(x)
weightTf(x)
)
Run Code Online (Sandbox Code Playgroud)
用于 N-gram …