我有一个相当小的一套结构化的记录坐在一个数据库。给出一小部分包含的信息在一个单一的记录,提交通过网络形式(所的结构相同的方式表模式),(让我们把它叫做试验的记录),我需要迅速制订一个名单的记录,这是最有可能的匹配的试验记录,以及提供一个信任的估计如何密切合搜索条款相匹配的记录。主要目的,这种搜索,以发现是否有人试图输入一个记录是重复向一个在语料库。有一个合理的机会,测试记录将是一个欺骗,以及合理的机会的试验的记录将不会是一个欺骗.

记录大约有12000字节的宽的记录总数约为150 000个.有110个列表中的架构和95%的搜索将在前5%最常搜索栏。

数据的东西,如姓名、地址、电话号码和其他行业的具体数字。在这两种语料库,并测试记录是进入手工和半结构化的内的各个领域。你可能乍说的"重量列手工匹配字标记在他们的",但它不是那么容易。我也这么认为:如果我得到一个电话号码我认为这会表明一个完美的比赛。问题是,没有一个单一的领域中形成其标记频率不会由不同数量级。一个电话号码可能出现的100倍集或1时间的资料库。这同样适用于任何其他领域。这使得加权在外地一级不切实际的。我需要一个更加细致的方法来获得体面的匹配。

我最初的计划是创造一个哈哈希顶级的fieldname.然后我会选择的所有信息集为一个特定领域,试图清除其中包含的数据和标记的经过处理的数据,散列的令牌在第二级,与标记和钥匙和频率如价值。

我会使用的频率计数作为一个重:高频率的一个令牌在参照料库,低重量我附上该标记,如果它找到在试验的记录。

我的第一个问题是,为统计人员在房间:我怎么会使用的频率作为一个重量?是否有一个精确数学之间的关系n,记录的数量、f(t)、频率令牌叔出现在体,概率o这一记录的是一个原始的和不重复的概率p测试记录是一个真正的记录x给出测试和x包含同样的t在同一领域?怎么样的关系对于多令牌比赛在多个领域?

因为我真诚地怀疑,有,有什么可以让我接近,但是更好的比完全是任意的黑客充满魔力的因素?

除非那有人有一种方法来这样做吗?

我特别热衷于其他的建议不涉及维持另一个表中的数据库,例如一个令牌频率查找表。

有帮助吗?

解决方案

你也许可以得到的一些想法从此不同但类似这样的问题:计算上下文敏感的文-相关.

更具体的问题,这里有一些想法和思路:

首先,承认非常偏斜的使用(只有6至10个属性,复盖95%的使用),可以/应当适用不对称的努力属性的,即投资更多,这两个术语的节目时段和长期的运行时间CPU拨款,用于处理这几个属于100-奇怪的其他属性。

相对较小数量的数据作为输入提供匹配的可能重复的数据库,相对较小的一组特性通常使用,并显然是共同的语义的这些(电话号码、地址名字...)建议一手造解决方案,而不是一个 完全 根据机学习。

注:很多建议,此后不需要施加的所有属性(因为不到一打的这些几乎复盖所有使用情况,是没有意义,至少在第一个投资与其他属性。

  • 正常的数据
    如果它是不允许的为你改变原来的场价值可能重复相应的列"norm_xxx"coluumn其中xxx是原来的名称。
    什么,如何恢复正常可以随着每一属性;对"免费的文字"如数据,确保没有导致,也没有追踪空间,只有一个空间之间的话,没有标签和不可打印的字符。使用全部大写或所有小写(餐厅的原始为显示的案文可以包括混合、处理将更快的通过能够承担统一套).更具体地址和/或公司名字,你可以转换为常用术语,以标准格式(ST街的ST和ST,等等。) (一定要保持这个列表,它将应用到该用户的搜索标准)。部分正规化可能也会下降完全一些噪音的词语(如说有限公司,GMBH在结束的公司名称)
  • 创建一些计算列
    例如那些与文字,在相反的,对于属性,可以搜索与一个后通配符
  • 考虑使用Soundex-像转换为某些属性。
  • FullText指标,单独的,所有文本似柱
  • 创建平(SQL)索引的所有6至10多的使用列

所有上述情况,仅仅是断线时间的筹备工作实际执行匹配。现在..用户输入他/她的查询...这里有一些想法如何处理它

  • 正常化的搜索标准,这些标准保证它
  • 运行几个搜索...
    这是一个棘手;有几个部分相互冲突的目标为执行这些搜索。我们想要减少,大大数量的"可能的匹配":它实际上是不切实际做一个完整的一对一比较的所有150 000个记录与用户提供的标准;例如一些符合逻辑可能意味着计算的编辑之间距离的一个领域给定记录的数据库和搜索标准。我们还想确保我们不排除的记录的"潜在的匹配"列表,因为一个错误说,该公司的名字...最后,我们想要提供的列表的潜在比赛中排名时尚。
    的方式来执行这些搜索下一些预先定义的启发式(我发现战略的设计图案的工作以及为,允许灵活的方式搜索运行,取决于用户提供的输入)。简而言之,我们搜索最有选择性的话,在最选择性的/相关属性,基于数量的"点击"发现我们不是"或者"(联盟)或"和"其他搜索结果,直到我们有几百记录。
  • 计算一个相似值之间的每一属性的"可能的匹配"的记录和相应的搜索标准。可能适用的一个系数,以此值(允许把更多的重说一个公司的名字[部分]匹配到一个城市比赛)
  • 相符的总体相似度值,用于一个完整的记录(与完全搜索标准)
  • 显示记录的超过特定门槛值的相似性的终端用户审查

    最后,有一部分自动化的过程中,你可以改变的一些参数基于一些反馈提供由最终用户。(这是非常棘手做的,我会继续这种对于其他一些员额;-))

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top