Я использую stringr для сканирования очень длинного текста.Если слово найдено.Я хочу извлечь не только слово, но и некоторый контекст, скажем, двадцать слов до и после того, как слово было обнаружено.
Итак, если у меня есть «Привет, как дела?»и я ищу "там", я хочу извлечь там + -1 Слово: "Привет, как"
Однако у меня возникают проблемы при объединении str_locate и str_word, так как один выражает местоположение как номер символаа другой работает со словом число
Как мне это сделать?Я знаю, как найти слово, и я знаю, как извлечь слова.Но как мне извлечь слова из определенного слова?
library(tidyverse)
library(stringr)
text <- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
# Lets say I am looking for "sit"
str_locate_all(text,"sit") # I get the positions for "sit" ... but expressed in the number of letters
# assuming sit-position is expressed as word-number and not character number
sit_position <- c(4,20,30,40) # not the real positions of "sit" just to simulate
#the word plus minus two
sit_position_d <- sit_position-2
sit_position_u <- sit_position+2
wordcontext <- rep(NA,NROW(sit_position))
for (i in c(1:NROW(sit_position))) {
wordcontext[i] <- word(text, sit_position_d[i],sit_position_u[i])
}
Как мне изменить этот код, чтобы сказать word (), что он должен начинаться с определенного слова?