r - 如何在 R 中使用 TF IDF 计算 2 个字符串列之间的相似度
问题描述
在这个论坛上可能会问类似的问题,但我觉得我的要求很特殊。
我有一个数据框 df1,其中包含具有 40,000 个观察值的变量“WrittenTerms”,我有另一个具有 17,000 个观察值的变量“SuggestedTerms”的数据名 df2
我需要计算“书面术语”和“建议术语”之间的相似性,我使用的是 Stringdist 包,但这种方法需要相当长的时间,因为我们有更多的观察。
df1$WrittenTerms
头疼
肺癌
腹痛
df2$建议条款
心脏病发作
乳腺癌
腹部疼痛
头痛
肺癌
我需要得到如下输出
df1$WrittenTerms df2$suggestedterms Similarity_percentage
头痛 头痛 50%
肺癌 肺癌 100%
腹痛 腹痛 80%
我正在编写下面的代码来满足要求,但它需要更多时间,因为它涉及 for 循环,有没有什么方法可以使用 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)
解决方案
推荐阅读
- reactjs - 反应useEffect没有运行
- java - 插件 'org.springframework.boot:spring-boot-maven-plugin:' 未找到
- c++ - 我可以“隐藏”在 C++ 的头文件中定义的任何内容吗
- typescript - Typescript + Webpack 库生成“ReferenceError: self is not defined”
- javascript - JavaScript 无法正常运行
- python - 在 windows 上手动安装 tensorflow
- twilio - 多个 twilio 号码转为单个号码,我如何向接线员指示呼叫了哪个号码?
- php - 无法理解函数的返回和回显行为
- javascript - 为什么我必须先从我的论点中拉出,然后再从我的数组中拉出以从数组中删除一个项目?
- docker - 无法启动 FastAPI 服务器,asyncpg 中的错误