|
|
1
1
作为第一个切入点,我只需选择那些足够接近相同长度的字符串,它们可以在给定的概率内匹配。这不是很有选择性,但(除非你指定了非常宽松的公差)可能会消除相当大比例的不可能匹配 非常 迅速地(例如,对于像Levenstein这样将插入计数为1次操作的编辑度量,如果您从长度为5的字符串开始,并且需要在5次操作内匹配,那么您可以消除所有长度超过10的字符串,而无需进一步检查)。 这是否有足够的选择性,可以直接进行昂贵的比较,这是一个悬而未决的问题——显然,这将取决于你匹配的字符串长度的可变性。 |
|
|
2
1
我通过做以下事情终于成功地进行了预选: 1.使用客户记录的某些字段来构建2Grams 2.将具有6个Minhash函数家族的2Grams Minhash转换为192位签名 3.使用boost::geometry库的rtree实现在签名上创建6维空间索引 4.为我正在比较的记录选择最近的k条(在我的情况下为30条)记录,并对这些候选者进行原始的“昂贵”比较 5.这将复杂性从E(i,i=n,i=1)降低到大约30n+m,其中m是建立索引所需的时间(令人惊讶的是,几乎可以忽略不计)。 我现在可以在60秒内以高精度运行15000次比较,这是在单线程测试中完成的。多线程到4或8核,这将运行得更快。 |
|
|
namezero · 近似字符串匹配概率的预选 13 年前 |