Was ist VectorSource und VCorpus im Paket 'tm' (Text Mining) in R.

9

Ich bin mir nicht ganz sicher, was genau VectorSource und VCorpus im 'tm'-Paket enthalten.

Die Dokumentation dazu ist unklar. Kann mich jemand in einfachen Worten verstehen lassen?

Yo Ich
quelle

Antworten:

12

"Corpus" ist eine Sammlung von Textdokumenten.

VCorpus in tm bezieht sich auf "flüchtiger" Korpus, was bedeutet, dass der Korpus im Speicher gespeichert ist und zerstört würde, wenn das R-Objekt, das ihn enthält, zerstört wird.

Vergleichen Sie dies mit PCorpus oder Permanent Corpus, die außerhalb des Speichers gespeichert sind, beispielsweise in einer Datenbank.

Um einen VCorpus mit tm zu erstellen, müssen wir ein "Source" -Objekt als Parameter an die VCorpus-Methode übergeben. Mit dieser Methode finden Sie die verfügbaren Quellen -
getSources ()

[1] "DataframeSource" "DirSource" "URISource" "VectorSource"
[5] "XMLSource" "ZipSource"

Die Quelle abstrahiert Eingabepositionen wie ein Verzeichnis oder eine URI usw. VectorSource ist nur für Zeichenvektoren

Ein einfaches Beispiel:

Angenommen, Sie haben einen Zeichenvektor -

Eingabe <- c ('Dies ist Zeile eins.', 'Und dies ist die zweite')

Erstellen Sie die Quelle - vecSource <- VectorSource (Eingabe)

Dann erstellen Sie den Korpus - VCorpus (vecSource)

Hoffe das hilft. Weitere Informationen finden Sie hier - https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf

Indisch
quelle
5

In der Praxis gibt es einen großen Unterschied zwischen Corpusund VCorpus.

Corpuswird SimpleCorpusstandardmäßig verwendet, was bedeutet, dass einige Funktionen von VCorpusnicht verfügbar sind. Eine, die sofort ersichtlich ist, ist, SimpleCorpusdass Sie keine Bindestriche, Unterstriche oder andere Zeichen der Interpunktion behalten können. SimpleCorpusoder Corpusentfernt sie automatisch, VCorpusnicht. Es gibt andere Einschränkungen Corpus, die Sie in der Hilfe finden ?SimpleCorpus.

Hier ist ein Beispiel:

# Read a text file from internet
filePath <- "http://www.sthda.com/sthda/RDoc/example-files/martin-luther-king-i-have-a-dream-speech.txt"
text <- readLines(filePath)

# load the data as a corpus
C.mlk <- Corpus(VectorSource(text))
C.mlk
V.mlk <- VCorpus(VectorSource(text))
V.mlk

Die Ausgabe wird sein:

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

Wenn Sie eine Inspektion der Objekte durchführen:

# inspect the content of the document
inspect(C.mlk[1:2])
inspect(V.mlk[1:2])

Sie werden feststellen, dass Corpusder Text entpackt wird:

<<SimpleCorpus>>
Metadata:  corpus specific: 1, document level (indexed): 0
Content:  documents: 2
[1]                                                                                                                                            
[2] And so even though we face the difficulties of today and tomorrow, I still have a dream. It is a dream deeply rooted in the American dream.


<<VCorpus>>
Metadata:  corpus specific: 0, document level (indexed): 0
Content:  documents: 2
[[1]]
<<PlainTextDocument>>
Metadata:  7
Content:  chars: 0
[[2]]
<<PlainTextDocument>>
Metadata:  7
Content:  chars: 139

Während VCorpushält es zusammen im Objekt.

Angenommen, Sie führen jetzt die Matrixkonvertierung für beide durch:

dtm.C.mlk <- DocumentTermMatrix(C.mlk)
length(dtm.C.mlk$dimnames$Terms)
# 168

dtm.V.mlk <- DocumentTermMatrix(V.mlk)
length(dtm.V.mlk$dimnames$Terms)
# 187

Lassen Sie uns zum Schluss den Inhalt sehen. Dies ist von Corpus:

grep("[[:punct:]]", dtm.C.mlk$dimnames$Terms, value = TRUE)
# character(0)

Und von VCorpus:

grep("[[:punct:]]", dtm.V.mlk$dimnames$Terms, value = TRUE)

[1] "alabama,"       "almighty,"      "brotherhood."   "brothers."     
 [5] "california."    "catholics,"     "character."     "children,"     
 [9] "city,"          "colorado."      "creed:"         "day,"          
[13] "day."           "died,"          "dream."         "equal."        
[17] "exalted,"       "faith,"         "gentiles,"      "georgia,"      
[21] "georgia."       "hamlet,"        "hampshire."     "happens,"      
[25] "hope,"          "hope."          "injustice,"     "justice."      
[29] "last!"          "liberty,"       "low,"           "meaning:"      
[33] "men,"           "mississippi,"   "mississippi."   "mountainside," 
[37] "nation,"        "nullification," "oppression,"    "pennsylvania." 
[41] "plain,"         "pride,"         "racists,"       "ring!"         
[45] "ring,"          "ring."          "self-evident,"  "sing."         
[49] "snow-capped"    "spiritual:"     "straight;"      "tennessee."    
[53] "thee,"          "today!"         "together,"      "together."     
[57] "tomorrow,"      "true."          "york."

Schauen Sie sich die Wörter mit Interpunktion an. Das ist ein großer Unterschied. Ist es nicht?

f0nzie
quelle