如何在R

时间:2019-10-24 05:04:58

标签: r pattern-matching similarity tf-idf stringdist

在这个论坛上可能会问类似的问题,但是我觉得我的要求很奇怪。

我有一个数据框df1,其中包含具有40,000个观察值的变量“ WrittenTerms”,而我还有另一个数据源df2,其具有17,000个观察值的变量“ SuggestedTerms”

我需要计算“书面术语”和“建议术语”之间的相似性,我使用的是Stringdist软件包,但是这种方法要花很长时间,因为我们有更多观察结果。

df1 $ WrittenTerms

头疼

肺癌

腹痛

df2 $建议的条款

心脏病发作

乳腺癌

腹部疼痛

头痛

肺癌

我需要获得如下输出

df1 $ WrittenTerms df2 $ suggestedterms相似度百分比

头疼头痛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)

0 个答案:

没有答案