Быстрее для петли для нечеткого матча
Ниже приведен простой скрипт для нечеткого соответствия, который я написал. Во входном файле около 24 000 ключевых слов и около 900 000 в основном списке.
В настоящее время требуется около 24 000 ключевых слов для обработки. Любые идеи, как я могу устранить цикл for в пользу чего-то гораздо быстрее?
> #=====Install Packages====#
library(stringdist)
>
> #=====Import Master List======#
master_list =
> read.csv('/Documents/Keywords Search Terms
> Tool/input/master/Master List.csv')
>
> #=====Import Input File=====# input_data =
> read.csv('/Documents/Keywords Search Terms
> Tool/input/test_input_file.csv')
>
> #=====Fuzzy Matching for Keywords=====#
> #Convert to Characters
master_list$Keyword<-as.character(master_list$Keyword)
> input_data$Keyword<-as.character(input_data$Keyword)
>
> #Perform Matching
fuzzy_match = data.frame()
>
> for (i in 1:nrow(input_data)){ new_word = subset(input_data, Keyword
> == input_data$Keyword[i]) new_word$match_dummy = ain(new_word$Keyword,master_list$Keyword) fuzzy_match <-
> rbind(fuzzy_match,new_word) }
1 ответ
Попробуйте поиграть с функцией stringdistmatrix. Распараллелено.
library(stringdist)
stringdistmatrix(c('a', 'b', 'c'), c('a', 'b', 'c'))
ОБНОВЛЕНИЕ на основе комментария:
Попробуйте что-то вроде:
ain(c('a', 'd'), c('a', 'b', 'c'))
Это даст:
TRUE FALSE