2
Rでwordnetライブラリを使用し、コーパスの補題を得ることができました。以下は私が使ったコードです。Rでwordnetから得られたコーパスの補題を置換する方法
library(tm)
doc1 <- "Stray cats are running all over the place. I see 10 a day!"
doc2 <- "Cats are killers. They kill billions of animals a year."
doc3 <- "The best food in Columbus, OH is the North Market."
doc4 <- "Brand A is the best tasting cat food around. Your cat will love it."
doc5 <- "Buy Brand C cat food for your cat. Brand C makes healthy and happy cats."
doc6 <- "The Arnold Classic came to town this weekend. It reminds us to be healthy."
doc7 <- "I have nothing to say. In summary, I have told you nothing."
doc.list <- list(doc1, doc2, doc3, doc4, doc5, doc6, doc7)
N.docs <- length(doc.list)
names(doc.list) <- paste0("doc", c(1:N.docs))
query <- "Healthy cat food"
my.docs <- VectorSource(c(doc.list, query))
my.docs$Names <- c(names(doc.list), "query")
my.corpus <- Corpus(my.docs)
my.corpus
my.corpus <-tm_map(my.corpus,content_transformer(tolower))
#remove potentially problematic symbols
toSpace <- content_transformer(function(x, pattern) { return (gsub(pattern, " ", x))})
removeSpecialChars <- function(x) gsub("[^a-zA-Z0-9 ]","",x)
my.corpus <- tm_map(my.corpus, toSpace, "/")
my.corpus <- tm_map(my.corpus, toSpace, "-")
my.corpus <- tm_map(my.corpus, toSpace, ":")
my.corpus <- tm_map(my.corpus, toSpace, ";")
my.corpus <- tm_map(my.corpus, toSpace, "@")
my.corpus <- tm_map(my.corpus, toSpace, "\\(")
my.corpus <- tm_map(my.corpus, toSpace, ")")
my.corpus <- tm_map(my.corpus, toSpace, ",")
my.corpus <- tm_map(my.corpus, toSpace, "_")
my.corpus <- tm_map(my.corpus, content_transformer(removeSpecialChars))
my.corpus <- tm_map(my.corpus, content_transformer(tolower))
my.corpus <- tm_map(my.corpus, removeWords, stopwords("en"))
my.corpus <- tm_map(my.corpus, removePunctuation)
my.corpus <- tm_map(my.corpus, stripWhitespace)
my.corpus <- tm_map(my.corpus, removeNumbers)
my.corpus <- tm_map(my.corpus, removeWords, c("status","please","need","mail",
"email","unable","re","fw","st","th","sep","nov","thank","kmmvlkm","prb"))
#Stem document
my.corpus <- tm_map(my.corpus,stemDocument)
library(wordnet)
setDict("C:/Program Files (x86)/WordNet/2.1/dict")
initDict("C:/Program Files (x86)/WordNet/2.1/dict")
lapply(my.corpus,function(x){
sapply(unlist(strsplit(as.character(x),"[[:space:]]+")), function(word) {
x.filter <- getTermFilter("StartsWithFilter", word, TRUE)
terms <- getIndexTerms("NOUN",1,x.filter)
if(!is.null(terms)) sapply(terms,getLemma)
})
})
今、私は補題とコーパス内の単語を置き換えたいがWordNetのライブラリを使用してポストを受け、任意の誰もが解決策を取得する方法を知っている場合、それは大きな助けになります共有していただけます。