Я задал этот вопрос раньше и получил отрицательную обратную связь, потому что я не предоставлял код. Я целый день пытался и пытался, и теперь я застрял в проблеме.Поиск ключевых терминов (Корпус) в другой в R
Этот код был выбран пользователем в Stackoverflow «Tyler Rincker» < - большое спасибо ему!
вот код:
strip <- function(x, digit.remove = TRUE, apostrophe.remove = FALSE){
strp <- function(x, digit.remove, apostrophe.remove){
x2 <- Trim(tolower(gsub(".*?($|'|[^[:punct:]]).*?", "\\1", as.character(x))))
x2 <- if(apostrophe.remove) gsub("'", "", x2) else x2
ifelse(digit.remove==TRUE, gsub("[[:digit:]]", "", x2), x2)
}
unlist(lapply(x, function(x) Trim(strp(x =x, digit.remove = digit.remove,
apostrophe.remove = apostrophe.remove))))
corpus2 <- "In Westerman's disruptive article, Quantitative research as
an interpretive enterprise: The mostly
unacknowledged role of interpretation in research efforts."
corpus2 <- gsub("\\s+", " ", gsub("\n|\t", " ", corpus2))
corpus2.wrds <- as.vector(unlist(strsplit(strip(corpus2), " ")))
corpus2.Freq <- data.frame(table(corpus2.wrds))
corpus2.Freq$corpus2.wrds <- as.character(corpus2.Freq$corpus2.wrds)
corpus2.Freq <- corpus2.Freq[order(-corpus2.Freq$Freq), ]
rownames(corpus2.Freq) <- 1:nrow(corpus2.Freq)
key.terms <- c("research as")
Моя проблема заключается в том, что я хочу, чтобы искать биграмм или триграммы (2 или 3 слов) в корпусе.
Когда я выполнить эту строку кода:
corpus2.Freq[corpus2.Freq$corpus2.wrds %in%key.terms, ]
Я получаю это результаты, которые должны показать частоту «1».
[1] corpus2.wrds Freq
<0 rows> (or 0-length row.names)
Однако, если keyterm только 1 слово:
key.terms <- c("research")
corpus2.Freq[corpus2.Freq$corpus2.wrds %in%key.terms, ]
код работает отлично, и я получаю следующий результат:
corpus2.wrds Freq
research 2
Спасибо большое! и, надеюсь, кто-то может помочь.
Привет Ленка, спасибо. Да, код, который я реализовал, как-то устарел. когда я попробовал ваше решение с помощью униграмм, я вышел из связанной ошибки. –
Вы попробовали это с тем же предложением, которое вы предоставили в качестве примера ('corpus2')? Вы можете получить ошибку «вне границ», если слово «исследование» не появляется в ваших корпусах. Какой результат вы получаете при запуске 'inspect (tdm)'? –