2017-07-20 3 views
1

Je travaille avec tidytext. Quand je commande unnest_tokens. R renvoie l'erreurunnest_tokens et son erreur ("")

S'il vous plaît fournir le nom de la colonne

Comment puis-je résoudre cette erreur?

library(tidytext) 
library(tm) 
library(dplyr) 
library(stats) 
library(base) 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# 
    #Build a corpus: a collection of statements 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# 
f <-Corpus(DirSource("C:/Users/Boon/Desktop/Dissertation/F")) 
doc_dir <- "C:/Users/Boon/Desktop/Dis/F/f.csv" 
doc <- read.csv(file_loc, header = TRUE) 
docs<- Corpus(DataframeSource(doc)) 
dtm <- DocumentTermMatrix(docs) 
text_df<-data_frame(line=1:115,docs=docs) 

#This is the output from the code above,which is fine!: 
# text_df 
# A tibble: 115 x 2 
#line   docs 
#<int> <S3: VCorpus> 
# 1  1 <S3: VCorpus> 
#2  2 <S3: VCorpus> 
#3  3 <S3: VCorpus> 
#4  4 <S3: VCorpus> 
#5  5 <S3: VCorpus> 
#6  6 <S3: VCorpus> 
#7  7 <S3: VCorpus> 
#8  8 <S3: VCorpus> 
#9  9 <S3: VCorpus> 
#10 10 <S3: VCorpus> 
# ... with 105 more rows 

unnest_tokens(word, docs) 

# Error: Please supply column name 
+2

http://stackoverflow.com/help/mcve –

+0

dont vous avez besoin pour référencer les données avec le premier argument, comme ceci 'unnest_tokens (tib = text_df, sortie = mots, input = docs)' – Nate

+0

Cher Nate, Merci beaucoup pour votre aide. Cela semble fonctionner. Cependant, il produit des erreurs comme suit –

Répondre

1

Si vous souhaitez convertir vos données de texte à un format bien rangé, vous n'êtes pas obligé de le transformer en un corpus ou d'une matrice document terme ou quoi que ce soit d'abord. C'est l'une des idées principales derrière l'utilisation d'un format de données bien rangé pour le texte; vous n'utilisez pas ces autres formats, sauf si vous en avez besoin pour la modélisation.

Vous venez de mettre le texte brut dans un bloc de données, puis utilisez unnest_tokens() pour le ranger. (Je fais quelques hypothèses ici sur ce que votre CSV ressemble, il serait plus utile de publier un reproducible example la prochaine fois.)

library(dplyr) 

docs <- data_frame(line = 1:4, 
        document = c("This is an excellent document.", 
           "Wow, what a great set of words!", 
           "Once upon a time...", 
           "Happy birthday!")) 

docs 
#> # A tibble: 4 x 2 
#> line      document 
#> <int>       <chr> 
#> 1  1 This is an excellent document. 
#> 2  2 Wow, what a great set of words! 
#> 3  3    Once upon a time... 
#> 4  4     Happy birthday! 

library(tidytext) 

docs %>% 
    unnest_tokens(word, document) 
#> # A tibble: 18 x 2 
#>  line  word 
#> <int>  <chr> 
#> 1  1  this 
#> 2  1  is 
#> 3  1  an 
#> 4  1 excellent 
#> 5  1 document 
#> 6  2  wow 
#> 7  2  what 
#> 8  2   a 
#> 9  2  great 
#> 10  2  set 
#> 11  2  of 
#> 12  2  words 
#> 13  3  once 
#> 14  3  upon 
#> 15  3   a 
#> 16  3  time 
#> 17  4  happy 
#> 18  4 birthday 
+0

Si vous avez déjà vos données dans une matrice de terme de document (à partir de tm, par exemple), alors ce que vous voulez faire est ['tidy()'] (http : //tidytextmining.com/dtm.html), n'utilisez pas 'unnest_tokens()'. –

+0

Merci beaucoup Julia :) –