Как считать документы, в которых два слова появляются в непосредственной близости в R?

Я хотел бы посчитать документы, в которых две строки появляются в пределах установленного расстояния, в пределах 10 слов друг от друга. Давайте скажем "немецкий *" и "война". Я не хочу подсчитывать общее время их появления, а только количество документов, в которых появляется набор (если он появляется один раз, считайте его как один).

Я умею считать документы, содержащие слово. Но я не уверен, нужно ли мне извлекать 10 граммов и посмотреть, появятся ли эти два слова, а затем посчитать это за документ или есть более эффективный способ.

1 ответ

Далее приводится небольшая функция, которая проверяет, являются ли два слова ближе, чем 100 символов в тексте.

isclose = function(text){
  test <- FALSE
  limit <- 100 # Interval in char counts
  match1 <- gregexpr('war', text)[[1]]
  match2 <- gregexpr('German', text)[[1]]

  for(i in 1:length(match1)){
    for(j in 1:length(match2)){
      if(abs(match1[i]-match2[j]) < limit) test <- TRUE
    }
  }
  return(test)
}

Он отлично работает, но должен быть улучшен, чтобы посчитать количество слов вместо символов.

Другие вопросы по тегам