Erreur DocumentTermMasortingx sur l’argument Corpus

J’ai le code suivant:

# returns ssortingng w/o leading or trailing whitespace sortingm <- function (x) gsub("^\\s+|\\s+$", "", x) news_corpus <- Corpus(VectorSource(news_raw$text)) # a column of strings. corpus_clean <- tm_map(news_corpus, tolower) corpus_clean <- tm_map(corpus_clean, removeNumbers) corpus_clean <- tm_map(corpus_clean, removeWords, stopwords('english')) corpus_clean <- tm_map(corpus_clean, removePunctuation) corpus_clean <- tm_map(corpus_clean, stripWhitespace) corpus_clean <- tm_map(corpus_clean, trim) news_dtm <- DocumentTermMatrix(corpus_clean) # errors here 

Lorsque je lance la méthode DocumentTermMasortingx() , cela me donne cette erreur:

Erreur: hérite (doc, “TextDocument”) n’est pas VRAI

Pourquoi est-ce que je reçois cette erreur? Mes lignes ne sont-elles pas des documents texte?

Voici le résultat lors de l’inspection de corpus_clean :

 [[153]] [1] obama holds technical school model us [[154]] [1] oil boom produces jobs bonanza archaeologists [[155]] [1] islamic terrorist group expands territory captures tikrit [[156]] [1] republicans democrats feel eric cantors loss [[157]] [1] tea party candidates try build cantor loss [[158]] [1] vehicles materials stored delaware bridges [[159]] [1] hill testimony hagel defends bergdahl trade [[160]] [1] tweet selfpropagates tweetdeck [[161]] [1] blackwater guards face sortingal iraq shootings [[162]] [1] calif man among soldiers killed afghanistan [[163]] [1] stocks fall back world bank cuts growth outlook [[164]] [1] jabhat alnusra longer useful turkey [[165]] [1] catholic bishops keep focus abortion marriage [[166]] [1] barbra streisand visits hill heart disease [[167]] [1] rand paul cantors loss reason stop talking immigration [[168]] [1] israeli airssortingke kills northern gaza 

Edit: Voici mes données:

 type,text neutral,The week in 32 photos neutral,Look at me! 22 selfies of the week neutral,Inside rebel tunnels in Homs neutral,Voices from Ukraine neutral,Water dries up ahead of World Cup positive,Who's your hero? Nominate them neutral,Anderson Cooper: Here's how positive,"At fire scene, she rescues the pet" neutral,Hunger in the land of plenty positive,Helping women escape 'the life' neutral,A tour of the sex underworld neutral,Miss Universe Thailand steps down neutral,China's 'naked officials' crackdown negative,More held over Pakistan stoning neutral,Watch landmark Cold War series neutral,In photos: History of the Cold War neutral,Turtle predicts World Cup winner neutral,What devoured great white? positive,Nun wins Italy's 'The Voice' neutral,Bride Price app sparks debate neutral,China to deport 'pork' artist negative,Lightning hits moving car neutral,Singer won't be silenced neutral,Poland's mini desert neutral,When monarchs retire negative,Murder on Street View? positive,Meet armless table tennis champ neutral,Incredible 400 year-old globes positive,Man saves falling baby neutral,World's most controversial foods 

Ce que je récupère comme:

 news_raw <- read.csv('news_csv.csv', stringsAsFactors = F) 

Edit: Voici la traceback ():

 > news_dtm  traceback() 9: stop(sprintf(ngettext(length(r), "%s is not TRUE", "%s are not all TRUE"), ch), call. = FALSE, domain = NA) 8: stopifnot(inherits(doc, "TextDocument"), is.list(control)) 7: FUN(X[[1L]], ...) 6: lapply(X, FUN, ...) 5: mclapply(unname(content(x)), termFreq, control) 4: TermDocumentMasortingx.VCorpus(x, control) 3: TermDocumentMasortingx(x, control) 2: t(TermDocumentMasortingx(x, control)) 1: DocumentTermMasortingx(corpus_clean) 

Quand inherits(corpus_clean, "TextDocument") c’est FALSE.

    Il semble que cela aurait bien fonctionné dans tm 0.5.10 mais les changements dans tm 0.6.0 semblent l’avoir brisé. Le problème est que les fonctions tolower et sortingm ne renvoient pas nécessairement TextDocuments (il semble que l’ancienne version ait automatiquement effectué la conversion). Ils renvoient plutôt des caractères et le DocumentTermMasortingx ne sait pas comment traiter un corpus de caractères.

    Donc, vous pouvez changer pour

     corpus_clean <- tm_map(news_corpus, content_transformer(tolower)) 

    Ou vous pouvez courir

     corpus_clean <- tm_map(corpus_clean, PlainTextDocument) 

    après toutes vos transformations non standard (celles qui ne getTransformations() pas dans getTransformations() ) sont effectuées et juste avant la création de DocumentTermMasortingx. Cela devrait vous assurer que toutes vos données sont dans PlainTextDocument et devraient rendre DocumentTermMasortingx heureux.

    J’ai trouvé un moyen de résoudre ce problème dans un article sur TM.

    Un exemple dans lequel l’erreur suit ci-dessous:

     getwd() require(tm) files <- DirSource(directory="texts/", encoding="latin1") # import files corpus <- VCorpus(x=files) # load files, create corpus summary(corpus) # get a summary corpus <- tm_map(corpus,removePunctuation) corpus <- tm_map(corpus,stripWhitespace) corpus <- tm_map(corpus,removePunctuation); matrix_terms <- DocumentTermMatrix(corpus) 

    Messages d'avertissement:

    Dans TermDocumentMasortingx.VCorpus (x, control): identificateurs de document non valides

    Cette erreur se produit car vous avez besoin d'un object de la classe Vector Source pour définir votre masortingce de documents à terme, mais les transformations précédentes transforment votre corpus de caractères en caractères, modifiant ainsi une classe qui n'est pas acceptée par la fonction.

    Cependant, si vous ajoutez la fonction content_transformer dans la commande tm_map, vous n'aurez peut-être pas besoin d'une commande supplémentaire avant d'utiliser la fonction TermDocumentMasortingx pour continuer.

    Le code ci-dessous modifie la classe (voir dernière ligne) et évite l'erreur:

     getwd() require(tm) files <- DirSource(directory="texts/", encoding="latin1") corpus <- VCorpus(x=files) # load files, create corpus summary(corpus) # get a summary corpus <- tm_map(corpus,content_transformer(removePunctuation)) corpus <- tm_map(corpus,content_transformer(stripWhitespace)) corpus <- tm_map(corpus,content_transformer(removePunctuation)) corpus <- Corpus(VectorSource(corpus)) # change class matrix_term <- DocumentTermMatrix(corpus) 

    Change ça:

     corpus_clean <- tm_map(news_corpus, tolower) 

    Pour ça:

     corpus_clean <- tm_map(news_corpus, content_transformer(tolower)) 

    Cela devrait fonctionner.

     remove.packages(tm) install.packages("http://cran.r-project.org/bin/windows/consortingb/3.0/tm_0.5-10.zip",repos=NULL) library(tm)