首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用agrep()对多个模式进行模糊名称匹配的速度更快...?

使用agrep()对多个模式进行模糊名称匹配的速度更快...?
EN

Stack Overflow用户
提问于 2014-07-30 07:18:16
回答 1查看 1.9K关注 0票数 4

我是一个R新手,并且一直在尝试使用R中的agrep函数。我有一个庞大的客户数据库(150万行),其中肯定有许多重复的数据库。但是,使用table()来获取重复的确切名称的频率时,许多重复的名称并没有显示出来。只是浏览了一些行,我注意到许多重复的名字是“唯一的”,因为在名字的拼写中有一个小的错键。

到目前为止,为了找到我的数据集中的所有重复项,我一直使用agrep()来完成模糊名称匹配。我一直在尝试使用agrep()中的max.distance参数来返回不同的近似匹配。我想我已经在返回假阳性和错过真正的匹配之间找到了一个令人满意的中间结果。由于agrep()一次只能匹配一个模式,因此我能够在堆栈溢出上找到一个条目,以帮助我编写一个sapply代码,使我能够将数据集与多个模式进行匹配。这是我用来循环遍历大量模式的代码,因为它在我的数据集中梳理“重复项”。

代码语言:javascript
复制
dups4<-data.frame(unlist(sapply(unique$name,agrep,value=T,max.distance=.154,vf$name)))

unique$name=这是我开发的唯一索引,它包含了我希望在我的数据集中寻找的所有“模式”。

代码语言:javascript
复制
vf$name= is the column in my data frame that contains all of my customer names.

这种编码在大约600个客户样本的小范围内工作得很好,agrep工作得也很好。我的问题是,当我试图使用250K+名称的唯一索引并对我的150万客户执行agrep操作时。当我输入这个问题时,代码仍然在R中运行,并且还没有停止(我们在这一点上运行了20分钟)。

有没有人有任何建议来加速或改进我使用的代码?我还没有尝试过plyr包之外的任何东西。也许这样会更快。不过,我对ddplyllply函数的使用有一点不熟悉。

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-03-25 01:56:50

很抱歉,我错过了最后一个发布解决方案的请求。这就是我如何解决我的多模式问题,然后使用并行处理来加快速度。

我基本上要做的是提取字符串的整个向量,然后将它们与自身进行模糊匹配,以找出向量中是否有模糊匹配的重复记录。

在这里,我创建了集群(20个),希望在parSapply创建的并行进程中使用这些集群

代码语言:javascript
复制
cl<-makeCluster(20)

因此,让我们从代码parSapply的最内层嵌套开始。这就是我可以在并行进程中运行agrep()的原因。第一个参数是"cl",这是我在上面指定的要并行处理的集群的数量。

第二个参数是我希望匹配的模式的特定向量。第三个参数是我希望用来进行匹配的实际函数(在本例中为agrep)。接下来的参数都是与我正在使用的agrep()相关的参数。我已经指定我希望使用value=T返回实际的字符串(而不是字符串的位置)。我还指定了我愿意在模糊匹配中接受的max.distance ...在本例中,成本为2。最后一个参数是我希望与第一个模式列表(参数2)进行匹配的模式的完整列表。碰巧,我正在寻找重复项,因此我将向量与自身进行匹配。最后的输出是一个列表,所以我使用unlist(),然后对它进行数据帧,基本上得到一个匹配表。从那里,我可以很容易地运行我刚刚创建的表的频率表,找出哪些模糊匹配字符串的频率大于1,最终告诉我这样的模式与自身和向量中的另一个模式相匹配。

代码语言:javascript
复制
truedupevf<-data.frame(unlist(parSapply(cl,
                                     s4dupe$fuzzydob,agrep,value=T,
                                     max.distance=2,s4dupe$fuzzydob)))

我希望这能帮到你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25026460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档