Câu trả lời:
"Corpus" là một bộ sưu tập các tài liệu văn bản.
VCorpus trong tm đề cập đến tử thi "Dễ bay hơi" có nghĩa là kho đó được lưu trữ trong bộ nhớ và sẽ bị phá hủy khi đối tượng R chứa nó bị phá hủy.
Tương phản điều này với PCorpus hoặc Permanent Corpus được lưu trữ bên ngoài bộ nhớ nói trong một db.
Để tạo một VCorpus bằng tm, chúng ta cần truyền đối tượng "Nguồn" làm tham số cho phương thức VCorpus. Bạn có thể tìm thấy các nguồn có sẵn bằng phương thức này -
getSource ()
[1] "DataframeSource" "DirSource" "URISource" "VectorSource"
[5] "XMLSource" "ZipSource"
Nguồn tóm tắt các vị trí đầu vào, như thư mục hoặc URI, v.v. VectorSource chỉ dành cho vectơ ký tự
Một ví dụ đơn giản:
Giả sử bạn có một vectơ char -
đầu vào <- c ('Đây là dòng một.', 'Và đây là dòng thứ hai')
Tạo nguồn - vecSource <- VectorSource (đầu vào)
Sau đó tạo kho văn bản - VCorpus (vecSource)
Hi vọng điêu nay co ich. Bạn có thể đọc thêm tại đây - https://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
Trong thực tế, có một sự khác biệt lớn giữa Corpus
và VCorpus
.
Corpus
sử dụng SimpleCorpus
như một mặc định, có nghĩa là một số tính năng VCorpus
sẽ không có sẵn. Một điều hiển nhiên ngay lập tức là SimpleCorpus
sẽ không cho phép bạn giữ dấu gạch ngang, dấu gạch dưới hoặc các dấu hiệu khác của dấu câu; SimpleCorpus
hoặc Corpus
tự động loại bỏ chúng, VCorpus
không. Có những hạn chế khác Corpus
mà bạn sẽ tìm thấy trong trợ giúp với ?SimpleCorpus
.
Đây là một ví dụ:
# 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
Đầu ra sẽ là:
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 46
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 46
Nếu bạn kiểm tra các đối tượng:
# inspect the content of the document
inspect(C.mlk[1:2])
inspect(V.mlk[1:2])
Bạn sẽ nhận thấy rằng Corpus
giải nén văn bản:
<<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
Trong khi VCorpus
giữ nó cùng nhau trong đối tượng.
Giả sử bây giờ bạn thực hiện chuyển đổi ma trận cho cả hai:
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
Cuối cùng, hãy xem nội dung. Đây là từ Corpus
:
grep("[[:punct:]]", dtm.C.mlk$dimnames$Terms, value = TRUE)
# character(0)
Và từ 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."
Hãy nhìn vào các từ có dấu câu. Đó là một sự khác biệt rất lớn. Phải không?