2016-04-14 9 views
0

Ich kratzte einige tripadvisor Inhalt (ID, Zitat, Bewertungen, vollständige Überprüfung) in einer CSV-Datei und versuchte, die Dokumente mit nur 5 * Bewertung herauszufiltern, aber es scheint nicht zu funktionieren.R - Analysieren tripadvisor Inhalt mit tm

> x <- read.csv ("test.csv", header = TRUE, stringsAsFactors = FALSE) 
> (corp <- VCorpus(DataframeSource (x), 
+ readerControl = list(language = "eng"))) 

ich folgendes:

<<VCorpus>> 
Metadata: corpus specific: 0, document level (indexed): 0 
Content: documents: 50 

nun auf Filterung, es zeigt, dass es 0 Dokumente mit einem Rating von 5 * und das kann nicht richtig sein.

> idx <- meta(corp, "rating") == '5' 

> corp [idx] 

<<VCorpus>> 
Metadata: corpus specific: 0, document level (indexed): 0 
Content: documents: 0 

Habe ich etwas über die Erstellung des Corpus übersehen?

Textausgabe angefordert als

'data.frame': 682 obs. of 6 variables: 
$ X   : int 1 2 3 4 5 6 7 8 9 10 ... 
$ id   : chr "rn360260358" "rn359340351" "rn356397660"  "rn355961772" ... 
$ quote  : chr "Nice but not unique " "Beautiful scenery of German  forest with a lake" "Beautiful Lake and Amazing Mountain Views" "Beautiful!" ... 
$ rating  : chr "3" "5" "5" "5" ... 
$ date   : chr "Reviewed 5 March 2016" "Reviewed 29 February 2016" "Reviewed 27 February 2016" ... 
$ reviewnospace: chr "We visited the lake with our daughters in March. All s... 
+1

Willkommen bei StackOverflow. Bitte geben Sie eine [mcve] –

+1

Es kann sein, dass Bewertungen sind Integer und keine Zeichenfolgen (in diesem Fall brauchen Sie "5" anstelle von "5"), aber es ist schwer zu sagen, ohne einen Blick auf Ihre Daten. Sie könnten mindestens ein Dokument teilen, indem Sie die Ausgabe von 'dput (corp [[1]])' – scoa

+0

vielen Dank für die Beantwortung senden. Ich habe die Ausgabe als Bild zur obigen Frage hinzugefügt. Ich bin neu in R, wie Sie wahrscheinlich erkannt haben ... :) –

Antwort

0

Ihre Daten Import-Methode einfach nicht die Metadaten nicht besteht. DataFrameSource(x) übergibt alle Variablen von x als Dokumenttext.

Darüber hinaus gibt es keine einfache, automatische Methode zum Hinzufügen einer Reihe von Metadaten in tm. Stattdessen können wir VectorSource(x$reviewnospace) verwenden (vorausgesetzt, dass dies die Spalte ist, die den Text enthält), und in einem zweiten Schritt die Metadaten zuweisen. Ihre Indizierung funktioniert dann wie erwartet.

library(tm) 

# use VectorSource to import data 
corp <- VCorpus(VectorSource(x$reviewnospace), readerControl = list(language = "eng")) 
# assign metadata 
meta(corp,tag = "rating") <- x$rating 

idx <- meta(corp, "rating") == '5' 
corp [idx]