基于Access / Excel中先前匹配的模糊匹配

时间:2018-05-02 15:09:09

标签: excel match access fuzzy-search fuzzy

我有一份我用于工作的20-30万公司送货地点的excel列表。有两个字段,一个包含发货地点名称和一个我创建的字段,用于将它们组合在一起,因为没有唯一标识符。例如:

JACKS SPORT#345 杰克斯体育763 RAYS BOATS ORLANDO FL RAY BOAT FLORIDA JACK SPORT WAREHOUSE

在我的领域,我创建了一个通用名称,例如上面的Jacks Sporting Goods和Rays Boats。

每个月都会添加几百个新的送货地点,需要与列表的其余部分匹配,并找到之前匹配的错误。

根据之前已经完成的所有匹配和变化寻找模糊匹配的方法。因此,它不是试图匹配我的光线船,而是在第一列中查看光线船的所有变化,并根据之前出现的数百种不同方式找到新的匹配。

我正在构建一个使用此文件的Access数据库,并希望将其集成到Access中,但如果我需要先通过excel运行它,我会。

有什么建议吗?我尝试过Microsoft的免费模糊匹配工具,但没有办法使用VBA来自动化这个过程......

2 个答案:

答案 0 :(得分:1)

所有人都可以使用通配符查询(即*符号)

在数据源不完善的项目中,我已经完成了这么多次。在了解文字与野外应该有多少方面需要一些商业知识。字面太多,你错过了比赛。文字太少,你会得到很多误报。

有时必须逐步完成 - 并为人工设置一个复选框,然后在过程中检查有效/无效。

答案 1 :(得分:0)

如果您要让用户在MS Access表单中输入名称,并想实时查询名称,最有效的方法是使用通配符查询:

.lib

如果响应能力不是优先事项(例如,您只需要在事实之后进行匹配),您还可以结合使用regular expressions和替换功能来创建{{3} }。

您甚至可以创建简化的stemming function方法来比较每个位置和每个新输入的位置。为此,您可以将所有名称中的所有单词分开,同时跟踪哪个名称包含哪些单词。通过计算给定单词在某个位置出现的次数除以该位置有多少个单词,计算出词频(TF)。通过将位置数除以包含单词的位置数来计算反文档频率(IDF)。然后,您使用计算出的TF-IDF分数来确定最接近的匹配项。这绝对是最复杂,最慢的。