Как добавить несколько слов в один входной список в RShiny и добавить его в список стоп-слов для Wordcloud - PullRequest
0 голосов
/ 01 апреля 2019

Я создал веб-приложение в R Shiny для создания облака слов.Пользовательский интерфейс имеет поле ввода для пользователей, чтобы добавить дополнительные стоп-слова, кроме встроенного словаря.Облако слов будет одним словом / биграммой / триграммой.До сих пор я успешен, когда несколько отдельных слов из поля ввода, которые будут непосредственно добавлены в список стоп-слов и создать облако слов из одного слова.Но сложность заключается в словах с биграммами / триграммами.Обращение за помощью к любому, кто сталкивался с подобной проблемой или знает о решении.Пожалуйста, найдите ниже мой код.

shinyServer(function(input, output, session) {

  wc_data = reactive({

input$update

isolate({

  withProgress({
    setProgress(message = "Processing Corpus...")
    wc_file = input$wc
    if(!is.null(wc_file)){
      wc_text = readLines(wc_file$datapath)
    }
    else
    {
      wc_text = "A wordcloud is an shape image made of words that together resemble a cloudy shape image."
    }
wc_corpus_clean = tm_map(wc_corpus_clean, removeWords, c("since", "for", "this", "like", "that", "our", "united states", "will", "america", "s", "ve", "'",unlist(strsplit(input$text, "[,]"))))
makeplot <- function() {
stpwords = unlist(strsplit(input$text, "[,]"))   
withProgress({
  setProgress(message = "Creating WordCloud....")
  wc_corpus_1 = wc_data()
  bigrams = textcnt(wc_corpus_1, n = input$gram, method = "string")
  bigrams = bigrams[order(bigrams, decreasing = TRUE)]

  wc_corpus_clean = data.frame(bigrams = names(bigrams), freq = bigrams)
  if (input$gram > 1) {

  wc_corpus_new = wc_corpus_clean
  ronum = which(wc_corpus_new$bigrams  == stpwords)
  print(ronum)
  if (length(ronum) > 0) {
     wc_corpus_clean = wc_corpus_new[-ronum,]
   }
  }

  max_freq = max(wc_corpus_clean$freq) 
  print(max_freq)
  if (input$freq > max_freq){
    NULL }
  else
    par(mar=c(1,1,1,1))
  wordcloud(wc_corpus_clean$bigrams,wc_corpus_clean$freq, min.freq = input$freq, scale = c(2,0.9), max.words = input$max, colors = brewer.pal(8,"Dark2"),rot.per = 0.45,random.order = FALSE, random.color = TRUE)
})
  }
...