R字数-匹配一个字符串在另一个字符串中的所有组合

R字数-匹配一个字符串在另一个字符串中的所有组合,r,R,我试图计算数据帧中第一个字符串列到第二个字符串列的匹配/模糊匹配的所有组合 例如: string1=“美国加拿大英国澳大利亚日本印度” string2=“美国加拿大印度英国澳大利亚中国巴西法国” 预期结果 单词匹配计数=5(美国加拿大英国澳大利亚印度)匹配 两个单词匹配计数=2(美国-加拿大、英国-澳大利亚)连续匹配的单词 三字匹配计数=0 四字匹配计数=0 五字匹配计数=0 六字匹配计数=0 总计=5+2=7 感谢您的时间和帮助,有人可以帮助编写此函数或指示我使用任何现有软件包此代码应该可

我试图计算数据帧中第一个字符串列到第二个字符串列的匹配/模糊匹配的所有组合

例如:
string1=“美国加拿大英国澳大利亚日本印度” string2=“美国加拿大印度英国澳大利亚中国巴西法国”

预期结果

  • 单词匹配计数=5(美国加拿大英国澳大利亚印度)匹配

  • 两个单词匹配计数=2(美国-加拿大、英国-澳大利亚)连续匹配的单词

  • 三字匹配计数=0

  • 四字匹配计数=0

  • 五字匹配计数=0

  • 六字匹配计数=0

  • 总计=5+2=7


感谢您的时间和帮助,有人可以帮助编写此函数或指示我使用任何现有软件包

此代码应该可以实现以下功能:

string1 <- "USA Canada UK Australia Japan India" 
string2 <- "USA Canada India UK Australia China Brazil France"

str1 <- unlist(strsplit(string1, " "))

library(ngram)
for(i in 1:length(str1)){
  ng1 <- ngram_asweka(string1, min = i, max = i, sep = " ")
  ng2 <- ngram_asweka(string2, min = i, max = i, sep = " ")
  print(paste(i, "word match count", length(which(ng1 %in% ng2)), sep=" "))
}

string1在package
tm
quanteda
中查找
ngram
,这是一个简单的单字匹配版本-
intersect(strsplit(string1,\\s+)[[1]],strsplit(string2,\\s+”[[1]])
,但您可能最好使用正式的软件包。谢谢HubertL提供的软件包参考,为什么对这个问题投反对票。这真的是一个糟糕的/基本的问题还是这个话题上重复的问题?谢谢你,高拉夫,为我工作