2016-12-07 2 views
1

Я хотел бы заменить каждое слово в моем корпусе, которое содержит «kind» с «Kindertoekomst». Я могу это сделать обычно:R: Разработка данных. Замена слов, содержащих подстроку

Woorden<-c("kinderen", "kleinkind") 
Woorden[grepl("kind", Woorden)]<-"Kindertoekomst" 

Но я хотел бы сделать это в своем корпусе.

мне удалось сделать это с

Kind<-grepl("kind", Woorden) 
docs <- tm_map(docs, function(x) stri_replace_all_fixed(x, Woorden[as.logical(Kind)], "kindertoekomst", vectorize_all = FALSE)) 

Но тогда я не могу использовать другие функции больше:

dtm <- DocumentTermMatrix(docs) 

Ошибка: наследует (док, "ТекстовыйДокумент") не ИСТИНА

И corpus_clean < - tm_map (docs, content_transformer (tolower)) Ошибка в UseMethod ("content", x): не применяется метод «содержания», примененного к объекту класса «характер»

Пожалуйста, помогите мне :)

ответ

1

Это должно работать:

docs <- tm_map(docs, function(x) stri_replace_all_fixed(x, Woorden[as.logical(Kind)], "kindertoekomst", vectorize_all = FALSE)) 
docs <- tm_map(docs, PlainTextDocument) 
dtm <- DocumentTermMatrix(docs) 
0

Альтернативный подход, который использует content_transformer() функцию обертку комплект tm

library(tm) 

Woorden<-c("kinderen", "kleinkind") 

rep_kind <- function(x){ 
    gsub("\b.*kind.*\b","Kindertoekomst",x) 
} 

docs <- Corpus(VectorSource(as.list(Woorden))) 
docs <- tm_map(docs, content_transformer(rep_kind)) 
dtm <- DocumentTermMatrix(docs) 
inspect(dtm) 
Смежные вопросы