J'ai un ensemble de documents:
documents = c("She had toast for breakfast",
"The coffee this morning was excellent",
"For lunch let's all have pancakes",
"Later in the day, there will be more talks",
"The talks on the first day were great",
"The second day should have good presentations too")
Dans cet ensemble de documents, je voudrais supprimer les mots vides. J'ai déjà supprimé la ponctuation et converti en minuscule, en utilisant:
documents = tolower(documents) #make it lower case
documents = gsub('[[:punct:]]', '', documents) #remove punctuation
D'abord je convertis en un objet Corpus:
documents <- Corpus(VectorSource(documents))
Ensuite, j'essaie de supprimer les mots vides:
documents = tm_map(documents, removeWords, stopwords('english')) #remove stopwords
Mais cette dernière ligne entraîne l'erreur suivante:
THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC () à déboguer.
Cela a déjà été demandé ici mais aucune réponse n’a été donnée. Que signifie cette erreur?
MODIFIER
Oui, j'utilise le package tm.
Voici la sortie de sessionInfo ():
R version 3.0.2 (2013-09-25) Plate-forme: x86_64-Apple-darwin10.8.0 (64 bits)
Lorsque je rencontre des problèmes tm
, je finis souvent par éditer le texte original.
C’est un peu gênant de supprimer des mots, mais vous pouvez coller ensemble une expression régulière à partir de la liste de mots clés de tm
stopwords_regex = paste(stopwords('en'), collapse = '\\b|\\b')
stopwords_regex = paste0('\\b', stopwords_regex, '\\b')
documents = stringr::str_replace_all(documents, stopwords_regex, '')
> documents
[1] " toast breakfast" " coffee morning excellent"
[3] " lunch lets pancakes" "later day will talks"
[5] " talks first day great" " second day good presentations "
vous pouvez utiliser le package quanteda pour supprimer les mots vides, mais assurez-vous d’abord que vos mots sont des jetons, puis utilisez les éléments suivants:
library(quanteda)
x<- tokens_select(x,stopwords(), selection=)
Essayez peut-être d'utiliser la fonction tm_map
pour transformer le document. Cela semble fonctionner dans mon cas.
> documents = c("She had toast for breakfast",
+ "The coffee this morning was excellent",
+ "For lunch let's all have pancakes",
+ "Later in the day, there will be more talks",
+ "The talks on the first day were great",
+ "The second day should have good presentations too")
> library(tm)
Loading required package: NLP
> documents <- Corpus(VectorSource(documents))
> documents = tm_map(documents, content_transformer(tolower))
> documents = tm_map(documents, removePunctuation)
> documents = tm_map(documents, removeWords, stopwords("english"))
> documents
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 6
Cela donne
> documents[[1]]$content
[1] " toast breakfast"
> documents[[2]]$content
[1] " coffee morning excellent"
> documents[[3]]$content
[1] " lunch lets pancakes"
> documents[[4]]$content
[1] "later day will talks"
> documents[[5]]$content
[1] " talks first day great"
> documents[[6]]$content
[1] " second day good presentations "