如何在 R 中创建类似发音的名称组?

Kat*_*h05 1 grouping r fuzzy-comparison stringdist

我想根据名称选择的相似程度创建一个组变量。我已经开始使用 stringdist 包来生成距离的度量。但我不确定如何使用该输出信息来生成一组变量。我看过 hclust 但似乎使用聚类函数你需要知道你最终需要多少组,我不知道。我开始的代码如下:

name_list <- c("Mary", "Mery", "Mary", "Joe", "Jo", "Joey", "Bob", "Beb", "Paul")

name_dist <- stringdistmatrix(name_list)
name_dist
name_dist2 <- stringdistmatrix(name_list, method="soundex")
name_dist2
Run Code Online (Sandbox Code Playgroud)

我想看到一个包含两列的数据框,看起来像

name = c("Mary", "Mery", "Mary", "Joe", "Jo", "Joey", "Bob", "Beb", "Paul")

name_group = c(1, 1, 1, 2, 2, 2, 3, 3, 4)
Run Code Online (Sandbox Code Playgroud)

显然,根据我使用的距离测量方式,这些组可能略有不同(我在上面建议了两个),但我可能会选择一个或另一个来跑步。

基本上,如何在不知道我想要的集群数量的情况下从距离矩阵到组变量?

jlh*_*ard 5

您还可以adist(...)在基数 R 中使用来计算 Levenshtein 距离,并基于此进行聚类。

n<- c("Mary", "Mery", "Mari", "Joe", "Jo", "Joey", "Bob", "Beb", "Paul")
d <- adist(n)
rownames(d)  <- n
cl <- hclust(as.dist(d))
plot(cl)
Run Code Online (Sandbox Code Playgroud)