TermDocumentMatrix не отвечает на токенизатор - PullRequest
0 голосов
/ 13 декабря 2018

Я очень новичок в R, и я пытаюсь сделать NGram WordCloud.Тем не менее, мои результаты всегда показывают 1Gram вместо NGram.Я искал ответы в Интернете в течение нескольких дней и пробовал разные методы ... все тот же результат.Кроме того, по какой-то причине у меня нет функции Ngramtokenizer, которую я вижу у всех.Однако я нашел другую функцию токенизатора, которую я здесь использую.Я надеюсь, что кто-то может мне помочь.Заранее спасибо!

library(dplyr)
library(ggplot2)
library(tidytext)
library(wordcloud)
library(tm)
library(RTextTools)

library(readxl)
library(qdap)
library(RWeka)
library(tau)
library(quanteda)


rm(list = ls())

#setwd("C:\\RStatistics\\Data\\")

#allverbatims <-read_excel("RS_Verbatims2018.xlsx") #reads excel files
#selgroup <- subset(allverbatims, FastNPS=="Detractors")
#selcolumns <- selgroup[ ,3:8]

#sample data 
selcolumns <- c("this is a test","my test is not working","sample data here")

Comments <- Corpus(VectorSource(selcolumns))
CommentClean <- tm_map(Comments, removePunctuation)
CommentClean <- tm_map(CommentClean, content_transformer(tolower))
CommentClean <- tm_map(CommentClean,removeNumbers)
CommentClean <- tm_map(CommentClean, stripWhitespace)
CommentClean <- tm_map(CommentClean,removeWords,c(stopwords('english')))

#create manual tokenizer using tau textcnt since NGramTokenizer is not available

tokenize_ngrams <- function(x, n=2) return(rownames(as.data.frame(unclass(textcnt(x,method="string", n=n))))) 

    #test tokenizer
    head(tokenize_ngrams(CommentClean))

    td_mat <- TermDocumentMatrix(CommentClean, control = list(tokenize = tokenize_ngrams))

    inspect(td_mat) #should be bigrams but the result is 1 gram

    matrix <- as.matrix(td_mat)
    sorted <- sort(rowSums(matrix),decreasing = TRUE)
    data_text <- data.frame(word = names(sorted),freq = sorted)

    set.seed(1234)
    wordcloud(word = data_text$word, freq = data_text$freq, min = 5, max.words = 100, random.order = FALSE, rot.per = 0.1, colors = rainbow(30))
...