Risposte:
"Corpus" è una raccolta di documenti di testo.
VCorpus in tm si riferisce al corpus "Volatile" che significa che il corpus è immagazzinato nella memoria e verrebbe distrutto quando l'oggetto R che lo contiene viene distrutto.
Contrastare ciò con PCorpus o Permanent Corpus che sono memorizzati all'esterno della memoria, diciamo in un db.
Per creare un VCorpus usando tm, dobbiamo passare un oggetto "Source" come parametro al metodo VCorpus. Puoi trovare le fonti disponibili usando questo metodo -
getSources ()
[1] "DataframeSource" "DirSource" "URISource" "VectorSource"
[5] "XMLSource" "ZipSource"
La sorgente estrae le posizioni di input, come una directory o un URI, ecc. VectorSource è solo per vettori di caratteri
Un semplice esempio:
Supponiamo che tu abbia un carattere char -
input <- c ('Questa è la prima riga', 'E questa è la seconda')
Crea l'origine - vecSource <- VectorSource (input)
Quindi crea il corpus - VCorpus (vecSource)
Spero che sia di aiuto. Puoi leggere di più qui - https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
In termini pratici, c'è una grande differenza tra Corpuse VCorpus.
Corpusutilizza SimpleCorpuscome predefinito, il che significa che alcune funzionalità di VCorpusnon saranno disponibili. Uno che è immediatamente evidente è che SimpleCorpusnon ti permetterà di mantenere trattini, trattini bassi o altri segni di punteggiatura; SimpleCorpuso Corpusli rimuove automaticamente, VCorpusno. Ci sono altre limitazioni Corpusche troverai nella guida ?SimpleCorpus.
Ecco un esempio:
# 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
L'output sarà:
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 46
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 46
Se si esegue un'ispezione degli oggetti:
# inspect the content of the document
inspect(C.mlk[1:2])
inspect(V.mlk[1:2])
Noterai che Corpusdecomprime il testo:
<<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
Mentre lo VCorpustiene insieme all'interno dell'oggetto.
Diciamo che ora esegui la conversione matrice per entrambi:
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
Infine, vediamo il contenuto. Questo proviene da Corpus:
grep("[[:punct:]]", dtm.C.mlk$dimnames$Terms, value = TRUE)
# character(0)
E da 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."
Dai un'occhiata alle parole con punteggiatura. Questa è una differenza enorme. No?