与 R 一起工作,我正在寻找在string_dist_left_join()
这是一个可重现的示例:
library(tidyverse)
library(fuzzyjoin)
tibble1 <- tibble(words = c("Bedford", "Maidenhead", "New Forest", "Tier 3", "Citizenship", "Crown"))
tibble2 <- tibble(words = c("bedfords", "bedsford", "BEDFord", "Maidenshead", "Maidenhed", "News forest", "Tier 3", "Citisenships", "crowned", "crows"))
osa <- stringdist_left_join(tibble1, tibble2, distance_col = "distance", max_dist = 5, method = "osa", weight = c(d = 0.1, i = 0.1, s = 1, t = 1))
上面是在几个 tibbles 上重现fuzzyjoin 驱动的stringsidt_left_join 的代码。输出如下所示:
# A tibble: 55 x 3
words.x words.y distance
<chr> <chr> <dbl>
1 Bedford bedfords 0.3
2 Bedford bedsford 0.3
3 Bedford BEDFord 0.6
4 Bedford Maidenshead 1.4
5 Bedford Maidenhed 1.2
6 Bedford News forest 1.00
7 Bedford Tier 3 0.900
8 Bedford Citisenships 1.7
9 Bedford crowned 1.00
10 Bedford crows 1.00
# … with 45 more rows
我想要的是某种方式来衡量大小写,例如,将贝德福德与 B ED福特进行比较:我希望这比贝德福德与贝德福德的匹配更差,但比贝德福德与贝德福特的匹配更好。该选项ignore_case = TRUE
将 BEDford 视为与 Bedford 的完美匹配。
我喜欢fuzzyjoin 包,而且我刚刚发现了可以为每个删除、插入、替换和易位传递给stringdist 的自定义权重。这太棒了;玩的玩具,调整的参数。
我还想做的是调整大小写(大写?)匹配。我可以选择ignore_case = TRUE
在 stringdist_left_join 中,(实际上,权重大小写为 0 或 1),但作为我讨厌的 cur,我想在 0 和 1 之间使用权重。
有谁知道我想念的地方是否有选择?
或者答案是:艰难地去做?我想可能有很长的路要走,涉及比较跑步前后的距离或计算与 比较的tolower()
加权距离,但有谁知道我可以使用更优雅的方法或包来做到这一点?ignore_case = TRUE
ignore_case = FALSE
谢谢