Thứ nhất, đây là một data.frame mẫu
dd<-data.frame(
id=10:13,
text=c("No wonder, then, that ever gathering volume from the mere transit ",
"So that in many cases such a panic did he finally strike, that few ",
"But there were still other and more vital practical influences at work",
"Not even at the present day has the original prestige of the Sperm Whale")
,stringsAsFactors=F
)
Bây giờ, để đọc các thuộc tính đặc biệt từ một data.frame, chúng tôi sẽ sử dụng readTabular
chức năng để làm cho người đọc tùy chỉnh data.frame của chúng ta. Đây là tất cả những gì chúng ta cần làm
library(tm)
myReader <- readTabular(mapping=list(content="text", id="id"))
Chúng tôi chỉ định cột để sử dụng cho nội dung và id trong data.frame. Bây giờ chúng tôi đọc nó với DataframeSource
nhưng sử dụng trình đọc tùy chỉnh của chúng tôi.
tm <- VCorpus(DataframeSource(dd), readerControl=list(reader=myReader))
Bây giờ nếu chúng ta chỉ muốn giữ một nhóm từ nào đó, chúng ta có thể tạo hàm content_transformer
riêng. Một cách để làm điều này là
keepOnlyWords<-content_transformer(function(x,words) {
regmatches(x,
gregexpr(paste0("\\b(", paste(words,collapse="|"),"\\b)"), x)
, invert=T)<-" "
x
})
Điều này sẽ thay thế mọi thứ không có trong danh sách từ. Lưu ý rằng bạn có thể muốn chạy stripWhitespace sau này. Do đó sự biến đổi của chúng ta sẽ trông giống như
keep<-c("wonder","then","that","the")
tm<-tm_map(tm, content_transformer(tolower))
tm<-tm_map(tm, keepOnlyWords, keep)
tm<-tm_map(tm, stripWhitespace)
Và sau đó chúng ta có thể biến chúng thành một ma trận hạn tài liệu
dtm<-DocumentTermMatrix(tm)
inspect(dtm)
# <<DocumentTermMatrix (documents: 4, terms: 4)>>
# Non-/sparse entries: 7/9
# Sparsity : 56%
# Maximal term length: 6
# Weighting : term frequency (tf)
# Terms
# Docs that the then wonder
# 10 1 1 1 1
# 11 2 0 0 0
# 12 0 1 0 0
# 13 0 3 0 0
và bạn có thể nó nó có danh sách các từ và các ID tài liệu thích hợp từ các dữ liệu. khung
Công cụ tuyệt vời! Làm việc một giấc mơ! – RUser
Cảm ơn bạn. Làm tốt lắm! – imriss
nhưng làm cách nào để biến nó thành một khung dữ liệu có ID được ánh xạ để chúng tôi có thể sử dụng nó cho các thử nghiệm khác? – bicepjai