2017-07-20 7 views
1

Ich arbeite mit Ordytext. Wenn ich unnest_tokens befehle. R liefert den Fehlerunnest_tokens und sein Fehler ("")

Bitte geben Sie Spaltennamen

Wie kann ich diesen Fehler beheben?

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

Sie brauchen um die Daten mit dem ersten Argument zu referenzieren, wie dies 'unnest_tokens (tib = text_df, output = words, input = docs)' – Nate

+0

Lieber Nate, vielen Dank für Ihre Hilfe. Es scheint zu funktionieren. Jedoch erzeugt es einige Fehler als –

Antwort

1

Wenn Sie Ihre Textdaten zu einem ordentlichen Format konvertieren wollen, müssen Sie es nicht zu einem Korpus zu transformieren oder ein Dokument Begriff Matrix oder irgendetwas zuerst. Das ist einer der Grundgedanken hinter einem sauberen Datenformat für Text; Sie verwenden diese anderen Formate nicht, außer Sie müssen sie modellieren.

Sie einfach den rohen Text in einen Datenrahmen, dann verwenden Sie unnest_tokens(), um es aufzuräumen. (Ich mache einige Annahmen hier über das, was Ihre CSV aussieht, es wäre mehr hilfreich sein, ein reproducible example nächstes Mal zu schreiben.)

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

Wenn Sie tatsächlich Ihre Daten in einer Dokument-Term-Matrix bereits haben (von tm, zum Beispiel), dann was Sie tun möchten, ist ['Tidy()'] (http : //tidytextmining.com/dtm.html) es nicht "unnest_tokens()' verwenden. –

+0

Vielen Dank Julia :) –

Verwandte Themen