Мне нужно рассчитать сходство Jaccard между каждым словом в 2 вектора. Каждое слово по каждому слову. И извлечь наиболее похожее слово.Рассчитайте сходство Jaccard между двумя словами в 2 векторах
Вот мой плохой плохой медленный код:
txt1 <- c('The quick brown fox jumps over the lazy dog')
txt2 <- c('Te quick foks jump ovar lazzy dogg')
words <- strsplit(as.character(txt1), " ")
words.p <- strsplit(as.character(txt2), " ")
r <- length(words[[1]])
c <- length(words.p[[1]])
m <- matrix(nrow=r, ncol=c)
for (i in 1:r){
for (j in 1:c){
m[i,j] = stringdist(tolower(words.p[[1]][j]), tolower(words[[1]][i]), method='jaccard', q=2)
}
}
ind <- which(m == min(m))-nrow(m)
words[[1]][ind]
Пожалуйста, помогите мне улучшить и украсить этот код для большого кадра данных.
Насколько велика «большой», и сколько времени это займет, используя код? – lukeA
Попробуйте это 'sapply (words.p, function (x) mapply (stringdist, words, x, method = 'jaccard'))'. Это напрямую даст вам матрицу, которую вы можете легко изучить. –