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 Corpus
und VCorpus
.
Corpus
wird SimpleCorpus
standardmäßig verwendet, was bedeutet, dass einige Funktionen von VCorpus
nicht verfügbar sind. Eine, die sofort ersichtlich ist, ist, SimpleCorpus
dass Sie keine Bindestriche, Unterstriche oder andere Zeichen der Interpunktion behalten können. SimpleCorpus
oder Corpus
entfernt sie automatisch, VCorpus
nicht. 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 Corpus
der 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 VCorpus
hä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?