Antworten:
"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
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?