代码之家  ›  专栏  ›  技术社区  ›  ghempton

基于模糊数据的交叉引用数据库

  •  1
  • ghempton  · 技术社区  · 15 年前

    我目前正在做一个项目,在这个项目中,我必须用一个规范格式的相同名称的单独列表来匹配大量用户生成的名称。问题在于,用户生成的名称包含许多拼写错误、缩写以及简单无效的数据,这使得很难与规范数据进行交叉引用。有什么建议吗?

    这不需要实时完成,在这种情况下,准确度比速度更重要。

    目前的想法是:

    1. 使用现有的搜索实现(如Lucene或Sphinx)在规范数据库中对用户输入的名称进行模糊搜索,我假定使用类似于Levenshtein距离的方法进行搜索。
    2. 对soundex散列的交叉引用(假定是根据名称的发音而不是拼写来计算)而不是使用实际名称。
    3. 上面的一些组合

    有人对这些或他们自己的想法有任何反馈吗?

    我担心的是,上述方法都不能很好地处理缩写词。有人能给我指出一些机器学习方法来实际搜索扩展的缩写词吗(或者告诉我我疯了)?事先谢谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   joel.neely    15 年前

    首先,我将在您的列表中添加在 Peter Norvig's post on spelling correction .

    其次,我会问你在说什么样的“用户生成的名字”。在处理了这两个问题之后,我认为您将用于街道名称的启发式方法与用于人名的启发式方法有所不同。(作为一个简单的例子,“dr”是扩展到“drive”还是“doctor”?

    第三,我将研究使用测试来建立一组系数的组合,用于组合各种技术的结果。