【问题标题】:Count number of words in the open ended responses in R [closed]计算R中开放式响应中的单词数[关闭]
【发布时间】:2014-08-14 15:22:34
【问题描述】:

我有一个包含 600 个响应的数据集,其中包含一个“Free_Text”变量,其中包含来自受访者的反馈/cmets。现在我想计算每个受访者在 cmets 中的单词数。我该怎么做?我是 R 的新学习者,正在 R 工作室工作。

【问题讨论】:

标签: regex r pattern-matching


【解决方案1】:

考虑使用stringi 包中的stri_extract_words,尤其是当您有非英文文本时。它使用 ICU 的 BreakIterator 来完成这项任务,并包含一个复杂的断词规则列表。

library(stringi)
str <- c("How many words are there?", "R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU.")
stri_extract_words(str)
## [[1]]
## [1] "How"   "many"  "words" "are"   "there"
## 
## [[2]]
##  [1] "R"                "язык"             "программирования" "для"              "статистической"  
##  [6] "обработки"        "данных"           "и"                "работы"           "с"               
## [11] "графикой"         "а"                "также"            "свободная"        "программная"     
## [16] "среда"            "вычислений"       "с"                "открытым"         "исходным"        
## [21] "кодом"            "в"                "рамках"           "проекта"          "GNU"   
sapply(stri_extract_words(str), length) # how many words are there in each character string?
## [1]  5 25

【讨论】:

    【解决方案2】:

    拆分字符串并计算元素是一种简单的入门方法。

    str = "This is a string."
    
    str_length = length(strsplit(str," ")[[1]])
    
    > str_length
    [1] 4
    

    【讨论】:

      【解决方案3】:

      这可能会有所帮助:

       str1 <- c("How many words are in this sentence","How many words")
       sapply(gregexpr("\\W+", gsub("[[:punct:]]+","",str1)), length) + 1
       #[1] 7 3
      

      还有,

       library(qdap)
       word_count(str1)
      #[1] 7 3
      
       str2 <- "How many words?."  
       word_count(str2)
       #[1] 3
      

      【讨论】:

        【解决方案4】:

        还有一种方法,使用 stringr 包列出单个单词:

        str1 <- c("How many words are in this sentence","How many words")
        length(unlist(str_match_all(str1, "\\S+" ))) # list all words -- strings that end with one or more white spaces, then unlist them so that the length function counts them
        

        【讨论】:

          猜你喜欢
          • 2014-01-02
          • 2015-06-14
          • 2014-02-15
          • 2021-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-21
          相关资源
          最近更新 更多