簡體   English   中英

R: wordcloud包從語料中省略三個字符以下的單詞

[英]R: wordcloud package omitting words below three characters from corpus

使用 wordcloud 包創建 wordcloud 時,該包似乎默認省略三個字符以下的單詞(例如“tv”)。 我認為這是一個功能而不是一個錯誤,但我仍然找不到調整最小字符數的參數。

wordcloud 是針對使用 tm 包中的Corpus()tm_map()函數創建和預處理的語料庫運行的。 我已經確認有問題的單詞在例如刪除停用詞時沒有丟失 - 它們仍在運行wordcloud()函數的最終語料庫中。

可重現的例子[編輯]

真實數據顯然看起來不同。 但是,下面的行復制了錯誤。

customPalette <- brewer.pal(4, "Dark2")

wordVector <- c(rep("tv", 15), rep("computer", 4), rep("phone", 16), rep("tablet",10))
newCorpus <- Corpus(VectorSource(wordVector))

wordcloud(newCorpus, max.words = 100, scale=c(8,1), random.order = FALSE, random.color = TRUE, colors = customPalette)

這將創建輸出:

詞雲輸出

會話信息:

R version 3.3.2 (2016-10-31)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Amazon Linux AMI 2016.09

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] bindrcpp_0.2             zoo_1.8-0                wordcloud_2.5            RColorBrewer_1.1-2       SnowballC_0.5.1          tm_0.7-1                
 [7] NLP_0.1-10               reshape2_1.4.2           lubridate_1.6.0          scales_0.4.1             ggplot2_2.2.1            aws.s3_0.3.3            
[13] githubinstall_0.2.1.9001 aws.signature_0.3.2      RJDBC_0.2-5              rJava_0.9-8              DBI_0.7                  RCurl_1.95-4.8          
[19] bitops_1.0-6             jsonlite_1.5             dplyr_0.7.0              sparklyr_0.5.6           drat_0.1.2               devtools_1.13.2         

loaded via a namespace (and not attached):
 [1] slam_0.1-40       lattice_0.20-34   colorspace_1.3-2  htmltools_0.3.6   yaml_2.1.14       base64enc_0.1-3   rlang_0.1.1       glue_1.1.1       
 [9] withr_1.0.2       dbplyr_1.0.0      bindr_0.1         plyr_1.8.4        stringr_1.2.0     munsell_0.4.3     gtable_0.2.0      memoise_1.1.0    
[17] labeling_0.3      httpuv_1.3.3      parallel_3.3.2    curl_2.6          Rcpp_0.12.11      xtable_1.8-2      backports_1.1.0   config_0.2       
[25] mime_0.5          digest_0.6.12     stringi_1.1.5     shiny_1.0.3       rprojroot_1.2     grid_3.3.2        tools_3.3.2       magrittr_1.5     
[33] lazyeval_0.2.0    tibble_1.3.3      pkgconfig_2.0.1   data.table_1.10.4 xml2_1.1.1        assertthat_0.2.0  httr_1.2.1        rstudioapi_0.6   
[41] R6_2.2.2          git2r_0.18.0

無論是使用向量wordVector還是使用語料庫版本, wordVector出現問題。 這似乎是預期的行為 - 請參閱下面來自包維護者的評論。

以下替代方法有效,使用wordcloud的能力分別wordcloud單詞及其頻率的向量......

worddf <- as.data.frame(table(newCorpus$content))
wordcloud(words = worddf[,1], freq = worddf[,2], max.words = 100, scale=c(8,1), 
          random.order = FALSE, random.color = TRUE, colors = customPalette)

在此處輸入圖片說明

我觀察到的是,如果您的輸入文本中有任何單詞的頻率大於或等於 min freq 的默認值,即 3,則所有其他頻率小於 3 的單詞將被忽略。

但是,如果您的輸入文本沒有任何 freq >= 3 的單詞,則所有單詞都被考慮用於繪圖。 因此,在這種情況下,請始終更新 min.freq 參數並將其設置為您想要的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM