Tôi đang cố gắng tìm hiểu, nếu có cách tiếp cận nhanh hơn gsub hàm vectơ trong R. Tôi có khung dữ liệu sau đây với một số "câu" (đã gửi $ words) và sau đó tôi có các từ để loại bỏ khỏi các câu này (được lưu trữ trong biến từĐối với biến).Cách tiếp cận nhanh hơn gsub trong r
sent <- data.frame(words =
c("just right size and i love this notebook", "benefits great laptop",
"wouldnt bad notebook", "very good quality", "bad orgtop but great",
"great improvement for that bad product but overall is not good",
"notebook is not good but i love batterytop"),
user = c(1,2,3,4,5,6,7),
stringsAsFactors=F)
wordsForRemoving <- c("great","improvement","love","great improvement","very good","good",
"right", "very","benefits", "extra","benefit","top","extraordinarily",
"extraordinary", "super","benefits super","good","benefits great",
"wouldnt bad")
Sau đó tôi sẽ tạo ra "dữ liệu lớn" mô phỏng cho máy tính tiêu thụ thời gian ...
df.expanded <- as.data.frame(replicate(1000000,sent$words))
library(zoo)
sent <- coredata(sent)[rep(seq(nrow(sent)),1000000),]
rownames(sent) <- NULL
Sử dụng các sau gsub phương pháp để loại bỏ từ (wordsForRemoving) từ gửi $ words mất 72,87 giây Tôi biết, đây không phải là mô phỏng tốt nhưng thực tế tôi đang sử dụng từ điển từ với hơn 3.000 từ cho 300.000 câu và quá trình xử lý tổng thể mất hơn 1,5 giờ.
pattern <- paste0("\\b(?:", paste(wordsForRemoving, collapse = "|"), ")\\b ?")
res <- gsub(pattern, "", sent$words)
# user system elapsed
# 72.87 0.05 73.79
Xin vui lòng, bất kỳ ai cũng có thể giúp tôi viết cách tiếp cận nhanh hơn cho công việc của mình. Bất kỳ trợ giúp hoặc lời khuyên nào đều được đánh giá rất cao. Cảm ơn rất nhiều về phía trước.
Bạn sẽ nhận được một số cải thiện (60% trong ví dụ tôi đã thử, trong đó có một số lượng bản sao giảm) bằng cách sử dụng 'stringi :: stri_replace_all_regex (gửi $ words, pattern," ")' –