Ich versuche einige Wörter aus einem Korpus zu entfernen, das ich gebaut habe, aber es scheint nicht zu funktionieren. Ich durchlaufe zuerst alles und erstelle einen Datenrahmen, der meine Wörter in der Reihenfolge ihrer Häufigkeit auflistet. Ich verwende diese Liste, um Wörter zu identifizieren, an denen ich nicht interessiert bin, und versuche dann, eine neue Liste mit den entfernten Wörtern zu erstellen. Die Wörter bleiben jedoch in meinem Datensatz. Ich frage mich, was ich falsch mache und warum die Wörter nicht entfernt werden? Ich habe den vollständigen Code unten enthalten:R tm removeWords Funktion entfernt keine Wörter
install.packages("rvest")
install.packages("tm")
install.packages("SnowballC")
install.packages("stringr")
library(stringr)
library(tm)
library(SnowballC)
library(rvest)
# Pull in the data I have been using.
paperList <- html("http://journals.plos.org/plosone/search?q=nutrigenomics&sortOrder=RELEVANCE&filterJournals=PLoSONE&resultsPerPage=192")
paperURLs <- paperList %>%
html_nodes(xpath="//*[@class='search-results-title']/a") %>%
html_attr("href")
paperURLs <- paste("http://journals.plos.org", paperURLs, sep = "")
paper_html <- sapply(1:length(paperURLs), function(x) html(paperURLs[x]))
paperText <- sapply(1:length(paper_html), function(x) paper_html[[1]] %>%
html_nodes(xpath="//*[@class='article-content']") %>%
html_text() %>%
str_trim(.))
# Create corpus
paperCorp <- Corpus(VectorSource(paperText))
for(j in seq(paperCorp))
{
paperCorp[[j]] <- gsub(":", " ", paperCorp[[j]])
paperCorp[[j]] <- gsub("\n", " ", paperCorp[[j]])
paperCorp[[j]] <- gsub("-", " ", paperCorp[[j]])
}
paperCorp <- tm_map(paperCorp, removePunctuation)
paperCorp <- tm_map(paperCorp, removeNumbers)
paperCorp <- tm_map(paperCorp, removeWords, stopwords("english"))
paperCorp <- tm_map(paperCorp, stemDocument)
paperCorp <- tm_map(paperCorp, stripWhitespace)
paperCorpPTD <- tm_map(paperCorp, PlainTextDocument)
dtm <- DocumentTermMatrix(paperCorpPTD)
termFreq <- colSums(as.matrix(dtm))
head(termFreq)
tf <- data.frame(term = names(termFreq), freq = termFreq)
tf <- tf[order(-tf[,2]),]
head(tf)
# After having identified words I am not interested in
# create new corpus with these words removed.
paperCorp1 <- tm_map(paperCorp, removeWords, c("also", "article", "Article",
"download", "google", "figure",
"fig", "groups","Google", "however",
"high", "human", "levels",
"larger", "may", "number",
"shown", "study", "studies", "this",
"using", "two", "the", "Scholar",
"pubmedncbi", "PubMedNCBI",
"view", "View", "the", "biol",
"via", "image", "doi", "one",
"analysis"))
paperCorp1 <- tm_map(paperCorp1, stripWhitespace)
paperCorpPTD1 <- tm_map(paperCorp1, PlainTextDocument)
dtm1 <- DocumentTermMatrix(paperCorpPTD1)
termFreq1 <- colSums(as.matrix(dtm1))
tf1 <- data.frame(term = names(termFreq1), freq = termFreq1)
tf1 <- tf1[order(-tf1[,2]),]
head(tf1, 100)
Wenn Sie tf1
schauen durch Sie, dass viele der Wörter werden feststellen, dass nicht tatsächlich entfernt wurden entfernt werden angegeben wurden.
Ich frage mich nur, was ich falsch mache, und wie ich diese Wörter aus meinen Daten entfernen könnte?
HINWEIS: removeWords
macht etwas, weil die Ausgabe von head(tm, 100)
und head(tm1, 100)
nicht genau die gleichen sind. So scheint removeWords
einige Instanzen der Wörter zu entfernen, die ich versuche loszuwerden, aber nicht alle Instanzen.
In Ihrem Code ist ein Tippfehler enthalten. 'paperCorp1 <- tm_map (paperCorp, removeWords, c (" die "))' sollte 'paperCorp1 <- tm_map sein (paperCorp1, removeWords, c (" the "))' – phiver
Hallo @phiver, danke für das Abholen. Ich habe das versehentlich vergessen, als ich versuchte, das Problem herauszufinden. Nach dem Entfernen dieser Codezeile habe ich immer noch das gleiche Problem. Viele der Wörter, die ich entfernen möchte, einschließlich "der", sind immer noch in "tf1". – Adam
Es könnte wegen der Großbuchstaben Wörter. Versuchen Sie: 'paperCorp <- tm_map (paperCorp, tolower)' – scoa