如何在R中使用TF IDF计算两个字符串列之间的相似性
在这个论坛上可能会问类似的问题,但我觉得我的要求很特别 我有一个数据帧df1,其中它由变量“writenterms”和40000个观察值组成,我有另一个数据帧df2,其中变量“suggesterms”和17000个观察值 我需要计算“书面术语”和“建议术语”之间的相似性,我使用的是Stringdist包,但这种方法需要花费相当长的时间,因为我们有更多的观察 df1$WrittenTerms 头痛 肺癌 腹痛 df2$suggestedterms 心脏病发作 乳腺癌 腹痛 头痛 肺癌 我需要得到如下输出 df1$WrittenTerms df2$suggestedterms相似度\u百分比 头痛头痛50% 肺癌肺癌100% 腹痛腹痛80% 我正在编写下面的代码以满足要求,但它需要更多的时间,因为它涉及for循环,是否有任何方法可以使用TF-IDF或任何其他花费更少时间的方法找到相似性如何在R中使用TF IDF计算两个字符串列之间的相似性,r,pattern-matching,similarity,tf-idf,stringdist,R,Pattern Matching,Similarity,Tf Idf,Stringdist,在这个论坛上可能会问类似的问题,但我觉得我的要求很特别 我有一个数据帧df1,其中它由变量“writenterms”和40000个观察值组成,我有另一个数据帧df2,其中变量“suggesterms”和17000个观察值 我需要计算“书面术语”和“建议术语”之间的相似性,我使用的是Stringdist包,但这种方法需要花费相当长的时间,因为我们有更多的观察 df1$WrittenTerms 头痛 肺癌 腹痛 df2$suggestedterms 心脏病发作 乳腺癌 腹痛 头痛 肺癌 我需要得到如
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)
df_list这不是重复了你几天前提出的问题吗?谢谢,但是这种方法需要相当长的时间,因此我尝试使用text2vec/tfidf来查找相似性,因为我知道这种方法需要的时间更少。现在我有了231行和70098个丛的矩阵(这是一个样本),它们的相似值是矩阵形式的。但是,使用下面的方法,我无法取消堆栈,因为我有大量的列(70098)。您是否有一个简单的方法可以使用tfidf完成它,它应该花费更少的时间?我想执行以下步骤:在将矩阵转换为数据帧排序(相似性,版本)后取消堆栈删除重复