R - 如何计算包含字符串的句子的百分比?

时间:2017-09-01 13:29:21

标签: r text tokenize

我想计算包含双引号的文本中句子的百分比,并编写了以下函数来执行此操作:

library(tokenizers)

quote_ratio <- function(text){
  sentences <- tokenize_sentences(text, simplify = TRUE)
  quote_sentences <- 0
  for (i in sentences){
    quote_hits <- grepl('\\"', i)
    if (quote_hits == TRUE) {
      quote_sentences <- quote_sentences + 1
    }
  }
  ratio <- quote_sentences / length(sentences)
  return (ratio)
}

该功能在许多情况下都有效,但是在我的句子中遇到NA和/或NULL值的问题时,我遇到了更多的数据。

library(tm)

corpus = VCorpus(DirSource("/path/to/directory"))

ratios <- tm_map(corpus, content_transformer(quote_ratio))

# Error in if (quote_hits == TRUE) { : argument is of length zero
# In addition: Warning message:
# In if (quote_hits == TRUE) { : the condition has length > 1 and only the first element will be used

我尝试更改if语句以检查null和NA值,如下所示:

if (!is.na(quote_hits) && !is.null(quote_hits) && quote_hits == TRUE) {

但这只会产生更多错误:

# Error in if (!is.na(quote_hits) && !is.null(quote_hits) && quote_hits ==  : missing value where TRUE/FALSE needed

有没有更好的方法来制定if语句和/或函数?非常感谢。

编辑:

我后来意识到使用tm_mapcontent_transformer函数来计算它可能是错误的。当我将文本存储在向量中并使用lapply时,该函数工作得很好。

0 个答案:

没有答案