Это может быть похожий вопрос, заданный на этом форуме, но я чувствую свое требование особенным. У меня есть фрейм данных df1, в котором он состоит из переменной «WrittenTerms» с 40 000 наблюдений, и у меня есть еще один фрейм данных df2 с переменной «RecommendedTerms» с 17 000 наблюдений
Мне нужно вычислить сходство между «письменным термином»и "рекомендуемые термины"
df1 $ WrittenTerms
боль в голове
рак легкого
боль в животе
df2 $ рекомендуемые термины
сердечный приступ
рак молочной железы
боль в животе
головная боль
рак легкого
Мне нужно получитьвывод следующим образом
df1 $ WrittenTerms df2 $ рекомендуемые термины Similarity_percentage
головная боль головная боль 50%
рак легких 100%
боль в животе боль в животе 80%
Я пишу приведенный ниже код, чтобы выполнить требование, но это занимает больше времени, так как оно связано с циклом и есть ли способ найти сходство с помощью TF IDFИЛИ любой другой подход, который будетзаймет меньше времени
df_list <- data.frame(check.names = FALSE) # Creating empty dataframe
# calculating similarity between strings.
for(i in df1$WrittenTerms){
df2$oldsim<- stringdist(i,df2$suggestedterms,method = "lv")
df2$oldsim <- 1 - df2$oldsim / nchar(as.character(df2$suggestedterms))
df2 <- head(df2[order(df2$oldsim, decreasing = TRUE),],1)
df_list <- rbind(df_list, df2)
}
df1 <- cbind(df1, df_list)