字符串距离度量标准是否支持子字符串,并且与单词顺序无关?

Yu Shen

对于我的数据分析问题,我通常需要对名称进行命名,即名称A和B,如果A和B共享大量公共子串,而不论这些子串的顺序如何,我都认为它们是相同或非常相似的。

例如,对于“ COLD”和c(“ FLOOD”,“ COLD / WIND CHILL”),我想选择“ COLD / WIND CHILL”,使其与“ COLD”更像,而不是“ FLOOD”。

我当前的任务是在R中。因此,我的具体问题如下:

  1. R中是否已经定义了此类指标?

  2. 是否可以提供我自己的实现并以某种方式与R的stringdist软件包集成?

对于我的需求,只要可以在B中找到A或在A中找到B,我就可以简单地使用正则表达式搜索,我可能会认为它们之间的距离为0。

非常感谢!

编辑:

在以下情况下:

> vv <- c("FLOOD", "COLD/WIND CHILL")
> sapply(vv, adist, y = "COLD")
          FLOOD COLD/WIND CHILL 
              3              11 

我希望从“ COLD”到“ COLD / WIND CHILL”的距离小于“ COLD”到“ FLOOD”的距离。

在找到匹配的子字符串之后,指标似乎不得不忽略要删除的其余部分。

编辑1:

我原来的问题已经解决。这是在R中使用amatchof的相关问题的跟进stringdist

在我看来adist,即使使用,即使stringdist在同一包中,我也无法再现与相同的结果amatch

下图是插图:

vv <- c("FLOOD", "COLD/WIND CHILL")
sapply(vv, adist, y = "COLD",costs=list(deletions=0))
          FLOOD COLD/WIND CHILL 
              2               0 

    stringdist("COLD", c("FLOOD", " COLD/WIND CHILL"), method = 'lv', weight=c(0.001, 0.99, 0.99, 0.99))
[1] 1.981 1.002

amatch("COLD", c("FLOOD", " COLD/WIND CHILL"), method = 'lv', weight=c(0.0001, 0.999, 0.999, 0.999), maxDist = 100)
[1] 1

在上述情况下,通过使用的计算stringdistamatch应返回2,而不是1

根据stringdist文件,

“权重:
对于method ='osa'或'dl',按该顺序删除,插入,替换和换位的罚款。当method ='lv'时,对换位的罚款将被忽略。”

我已经相应地选择了权重,以消除删除带来的损失,同时将其他操作的损失最大化。令人鼓舞的是stringdist,使用权重设置显示了预期的行为。

我以为amatch可以stringdist用来进行计算,但是amatchstringdist的行为矛盾的行为似乎很奇怪

我希望开始amatch工作,这样我就不必使用adist重新实现它stringdist

再次感谢您的帮助。

研究

您可以使用adist模糊距离。该距离是广义的Levenshtein距离。

vv <- c("COLD","FLOOD")
sapply(vv,adist,y="COLD/WIND CHILL")
## COLD FLOOD   
##  11    13    ## the distance to COLD < distance to FLOOD

OP更新后进行编辑:

您可以使用costs参数来设置您要如何通过以下方式来计算距离:删除,替换,插入。例如:

sapply(vv, adist, y = "COLD",costs=list(deletions=0))
  FLOOD COLD/WIND       CHILL 
          2               0 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

支持子字符串的字符串距离度量标准,并且与单词顺序无关?

来自分类Dev

检查字符串是否包含特定顺序的单词

来自分类Dev

检查字符串是否包含特定顺序的单词

来自分类Dev

检查子字符串字符是否与主字符串顺序一致

来自分类Dev

字符串/单词中的Grep子字符串

来自分类Dev

检查字符串是否包含单词(不是子字符串!)

来自分类Dev

检查字符串是否包含具有特定顺序的子字符串

来自分类Dev

测试字符串是否包含子字符串

来自分类Dev

查看字符串是否包含子字符串

来自分类Dev

C ++标准是否保证字符串文字存储在程序二进制文件中,且不受干扰?

来自分类Dev

Kotlin是否支持可变字符串?

来自分类Dev

字符串比较与无关(忽略)字符

来自分类Dev

如何检查数组中的每个单词是否包含子字符串并拒绝Ruby on Rails中的子字符串?

来自分类Dev

如果字符串包含元音并且按字母顺序输出,则输出字符串

来自分类Dev

解析字符串以使其浮动的python标准是什么?

来自分类Dev

检查字符串是否为字母,并且不包含某些特定单词

来自分类Dev

文字是否包含子字符串

来自分类Dev

计算单词中的字符和子字符串

来自分类Dev

拆分字符串>单词和字符子列表的列表

来自分类Dev

以字母顺序生成给定字符串的所有子字符串(按字典顺序)

来自分类Dev

在C / C ++中用子字符串的任意顺序查找字符串中的子字符串

来自分类Dev

位置无关的字符串匹配

来自分类Dev

与Shell无关的脚本转义字符串

来自分类Dev

使用流分割字符串并返回具有相同单词顺序的字符串

来自分类Dev

字符串的单词还原

来自分类Dev

单词匹配字符串

来自分类Dev

更改文件中的字符串单词顺序

来自分类Dev

如何颠倒字符串中单词的顺序

来自分类Dev

更改文件中的字符串单词顺序

Related 相关文章

  1. 1

    支持子字符串的字符串距离度量标准,并且与单词顺序无关?

  2. 2

    检查字符串是否包含特定顺序的单词

  3. 3

    检查字符串是否包含特定顺序的单词

  4. 4

    检查子字符串字符是否与主字符串顺序一致

  5. 5

    字符串/单词中的Grep子字符串

  6. 6

    检查字符串是否包含单词(不是子字符串!)

  7. 7

    检查字符串是否包含具有特定顺序的子字符串

  8. 8

    测试字符串是否包含子字符串

  9. 9

    查看字符串是否包含子字符串

  10. 10

    C ++标准是否保证字符串文字存储在程序二进制文件中,且不受干扰?

  11. 11

    Kotlin是否支持可变字符串?

  12. 12

    字符串比较与无关(忽略)字符

  13. 13

    如何检查数组中的每个单词是否包含子字符串并拒绝Ruby on Rails中的子字符串?

  14. 14

    如果字符串包含元音并且按字母顺序输出,则输出字符串

  15. 15

    解析字符串以使其浮动的python标准是什么?

  16. 16

    检查字符串是否为字母,并且不包含某些特定单词

  17. 17

    文字是否包含子字符串

  18. 18

    计算单词中的字符和子字符串

  19. 19

    拆分字符串>单词和字符子列表的列表

  20. 20

    以字母顺序生成给定字符串的所有子字符串(按字典顺序)

  21. 21

    在C / C ++中用子字符串的任意顺序查找字符串中的子字符串

  22. 22

    位置无关的字符串匹配

  23. 23

    与Shell无关的脚本转义字符串

  24. 24

    使用流分割字符串并返回具有相同单词顺序的字符串

  25. 25

    字符串的单词还原

  26. 26

    单词匹配字符串

  27. 27

    更改文件中的字符串单词顺序

  28. 28

    如何颠倒字符串中单词的顺序

  29. 29

    更改文件中的字符串单词顺序

热门标签

归档