Ich habe diese Frage vor und bekam eine negative Bewertung, weil ich keinen Code zur Verfügung gestellt habe. Ich habe den ganzen Tag damit verbracht, es zu versuchen und zu versuchen, und jetzt stecke ich in einem Problem fest.Suche nach Schlüsselbegriffen (Corpus) in eine andere in R
Dieser Code wurde von einem Benutzer in Stackoverflow "Tyler Rincker" < - großer Dank an ihn geholt!
hier ist der Code:
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")
Mein Problem ist, dass ich für Bigramme oder trigram (2 oder 3 Wörter) im Korpus suchen möchten.
Wenn ich diese Codezeile ausführen:
corpus2.Freq[corpus2.Freq$corpus2.wrds %in%key.terms, ]
Ich erhalte diese Ergebnisse, die mit einer Frequenz von „1“ zeigen.
[1] corpus2.wrds Freq
<0 rows> (or 0-length row.names)
Wenn jedoch die keyterm nur 1 Wort:
key.terms <- c("research")
corpus2.Freq[corpus2.Freq$corpus2.wrds %in%key.terms, ]
der Code funktioniert gut und ich bekomme folgendes Ergebnis:
corpus2.wrds Freq
research 2
Vielen Dank! und hoffentlich kann jemand helfen.
Hallo Lenka, danke. Ja, der Code, den ich implementiert habe, ist irgendwie alt. als ich deine lösung mit den unigrammen ausprobiert habe, bin ich aus dem fehler geraten. –
Haben Sie es mit dem gleichen Satz versucht, den Sie als Beispiel angegeben haben ('corpus2')? Sie könnten den Fehler "out of bounds" erhalten, wenn das Wort "research" nicht in Ihren Korpora erscheint. Welche Ausgabe erhalten Sie, wenn Sie 'inspect (tdm)' ausführen? –