我在数据库中有一个相当小的结构化记录语料库。给定一条记录中包含的一小部分信息,通过 Web 表单提交(结构与表模式相同),(让我们称之为测试记录)我需要快速起草一份清单最有可能与测试记录匹配的记录,并提供搜索词与记录匹配程度的置信度估计。此搜索的主要目的是发现是否有人正在尝试输入与语料库中的记录重复的记录。测试记录有合理的可能性是欺骗性的,测试记录也有合理的可能性不是欺骗性的。
记录的宽度约为 12000 字节,记录的总数约为 150,000。表架构中有 110 列,95% 的搜索将位于最常搜索的前 5% 列。
数据是诸如姓名、地址、电话号码和其他行业特定号码之类的东西。在语料库和测试记录中,它都是手动输入的,并且在单个字段中是半结构化的。乍一看,您可能会说“手动加权列并匹配其中的单词标记”,但这并不容易。我也是这么想的:如果我得到一个电话号码,我认为这将表明一个完美的匹配。问题是表单中没有一个字段的令牌频率不会按数量级变化。一个电话号码可能在语料库中出现 100 次或在语料库中出现 1 次。任何其他领域也是如此。这使得现场级别的加权变得不切实际。我需要一种更细粒度的方法来获得体面的匹配。
我最初的计划是创建一个哈希值,顶层是字段名。然后,我将从语料库中为给定字段选择所有信息,尝试清理其中包含的数据,并对清理过的数据进行标记,在第二级对标记进行散列,将标记作为键,频率作为值。
我会将频率计数用作权重:参考语料库中标记的频率越高,如果在测试记录中找到该标记,我对该标记的权重就越小。
我的第一个问题是针对房间里的统计学家:我将如何使用频率作为权重?在 n、记录数 f(t)、标记 t 在语料库中出现的频率、记录是原始记录而不是重复记录的概率 o 以及记录的概率 p 之间是否存在精确的数学关系?测试记录真的是记录 x 给定测试和 x 在同一字段中包含相同的 t?跨多个字段的多个令牌匹配的关系如何?
既然我真诚地怀疑是否存在,有什么能让我接近但比一个完全任意的充满魔法因素的黑客更好的东西吗?
除此之外,有没有人有办法做到这一点?
我特别热衷于不涉及在数据库中维护另一个表的其他建议,例如令牌频率查找表。