Быстрее для петли для нечеткого матча

Ниже приведен простой скрипт для нечеткого соответствия, который я написал. Во входном файле около 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
Другие вопросы по тегам