Как считать документы, в которых два слова появляются в непосредственной близости в 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)
}
Он отлично работает, но должен быть улучшен, чтобы посчитать количество слов вместо символов.