Cosa sono VectorSource e VCorpus nel pacchetto 'tm' (Text Mining) in R


9

Non sono sicuro di cosa siano esattamente VectorSource e VCorpus nel pacchetto 'tm'.

La documentazione non è chiara su questi, qualcuno può farmi capire in termini semplici?

Risposte:


12

"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


5

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?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.