기계 학습을위한 데이터 세트를 준비하려고합니다. 이 과정에서 나는 거의 발생하지 않는 단어를 제거 (중지)하고 싶습니다 (종종 나쁜 OCR 수치와 관련이 있습니다). 현재 나는 제거하고 싶은 약 1 개의 단어들을 포함하는 단어 목록을 가지고 있습니다.두 개의 큰 문자열 벡터를 비교하는 데 시간이 오래 걸림 (중지 단어 제거)
그러나이 설정으로 내 데이터 집합을 처리하는 데 오랜 시간이 걸립니다.
library(stringi)
#generate the stopword list
b <- stri_rand_strings(1000000, 4, pattern = "[A-Za-z0-9]")
#remove stopstopwords form the dataset
system.time({
a <- stri_rand_strings(10, 4, pattern = "[A-Za-z0-9]")
c <- a[!(a %in% b)]
c
})
user system elapsed
0.14 0.00 0.14
'% a % b'은 (멀리 떨어져있는) O (N)와 같지 않습니다. 프로세스가 몇 시간 내에 완료되지 않으면 전체 데이터 세트에서이 작업을 실행할 수 없습니다.
R에서 두 벡터를 비교하는 효율적인 방법이 있습니까?
조회가 매우 빠르다 고 생각합니다. 나는 C# 사전을 사용하여 몇 분 안에 완료 한 테스트를 수행했다.
data.table' 빨리 즉해야'에서'%의 턱 %'로보십시오'system.time ({C <- A [(A %의 턱 % b)]}) # user system elapsed 0.01 0.00 0.02''% in % '에 기반한'0.13 ' – akrun