Apa itu VectorSource dan VCorpus dalam paket 'tm' (Text Mining) di R

9

Saya tidak yakin apa sebenarnya VectorSource dan VCorpus dalam paket 'tm'.

Dokumentasinya tidak jelas mengenai hal ini, adakah yang bisa membuat saya mengerti secara sederhana?

kamu
sumber

Jawaban:

12

"Corpus" adalah kumpulan dokumen teks.

VCorpus dalam tm mengacu pada korpus "Volatile" yang berarti bahwa corpus disimpan dalam memori dan akan dihancurkan ketika objek R yang mengandungnya dihancurkan.

Bandingkan ini dengan PCorpus atau Corpus Permanen yang disimpan di luar memori katakan dalam db.

Untuk membuat VCorpus menggunakan tm, kita perlu mengirimkan objek "Source" sebagai paramter ke metode VCorpus. Anda dapat menemukan sumber yang tersedia menggunakan metode ini -
getSources ()

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

Sumber abstrak lokasi input, seperti direktori, atau URI dll. VectorSource hanya untuk vektor karakter

Contoh sederhana:

Katakanlah Anda memiliki vektor char -

masukan <- c ('Ini baris satu.', 'Dan ini yang kedua')

Buat sumber - vecSource <- VectorSource (input)

Kemudian buat corpus - VCorpus (vecSource)

Semoga ini membantu. Anda dapat membaca lebih lanjut di sini - https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf

Indi
sumber
5

Secara praktis, ada perbedaan besar antara Corpusdan VCorpus.

Corpusmenggunakan SimpleCorpussebagai default, yang berarti beberapa fitur VCorpustidak akan tersedia. Salah satu yang langsung terbukti adalah bahwa SimpleCorpustidak akan memungkinkan Anda untuk menyimpan tanda hubung, garis bawah atau tanda baca lainnya; SimpleCorpusatau Corpussecara otomatis menghapusnya, VCorpustidak. Ada batasan lain Corpusyang akan Anda temukan dalam bantuan ?SimpleCorpus.

Berikut ini sebuah contoh:

# 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

Outputnya adalah:

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

Jika Anda melakukan pemeriksaan objek:

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

Anda akan melihat bahwa Corpusmembongkar teks:

<<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

Sambil VCorpusmenyimpannya bersama di dalam objek.

Katakanlah sekarang Anda melakukan konversi matriks untuk keduanya:

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

Akhirnya, mari kita lihat isinya. Ini dari Corpus:

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

Dan dari 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."

Lihatlah kata-katanya dengan tanda baca. Itu perbedaan besar. Bukan?

f0nzie
sumber