【发布时间】:2015-02-12 15:23:14
【问题描述】:
我在一个数据框中有一个列表,其中包含一个长列表中的数千个名称。许多名称之间存在细微差异,这使它们略有不同。我想找到一种方法来匹配这些名称。例如:
names <- c('jon smith','jon, smith','Jon Smith','jon smith et al','bob seger','bob, seger','bobby seger','bob seger jr.')
我查看了stringdist 函数中的amatch 以及agrep,但这些都需要master list of names 用于匹配另一个名称列表。就我而言,我没有这样的主列表,所以我想通过识别具有高度相似模式的名称来从数据中创建一个,这样我就可以查看它们并确定它们是否是同一个人(在许多他们是)。我想要一个新列中的输出,它可以帮助我知道这些是可能的匹配项,并且可能是基于 Levenshtein 距离或其他东西的某种相似性得分。也许是这样的:
names match SimilarityScore
1 jon smith a 9
2 jon, smith a 8
3 Jon Smith a 9
4 jon smith et al a 5
5 bob seger b 9
6 bob, seger b 8
7 bobby seger b 7
8 bob seger jr. b 5
这样的事情可能吗?
【问题讨论】:
-
虽然我没有一个狭隘的答案(抱歉),但我可能会开始在 natural language processing task view on CRAN 中搜索。
-
看起来hierarchical text clustering 会做我想要的。
-
感谢分层文本聚类链接。语言处理看起来很有趣。
标签: r string-matching agrep