【发布时间】:2017-04-09 18:48:57
【问题描述】:
我需要计算 2 个向量中每个单词之间的 Jaccard 相似度。一个字一个字。并提取最相似的词。
这是我的糟糕糟糕的慢代码:
txt1 <- c('The quick brown fox jumps over the lazy dog')
txt2 <- c('Te quick foks jump ovar lazey 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]
请帮我改进和美化这个大数据框的代码。
【问题讨论】:
-
“大”有多大,使用您的代码需要多长时间?
-
试试这个
sapply(words.p, function(x) mapply(stringdist, words, x, method='jaccard'))。这将直接为您提供一个您可以轻松检查的矩阵。
标签: r stringdist