【问题标题】:How do I use kd-trees for determining string similarity?如何使用 kd-trees 来确定字符串相似度?
【发布时间】:2011-04-17 22:23:11
【问题描述】:

我正在尝试利用 k 最近邻来解决字符串相似性问题,即给定一个字符串和一个知识库,我想输出与给定字符串相似的 k 个字符串。是否有任何教程解释了如何利用 kd-trees 有效地对字符串进行 k-最近邻查找?字符串长度不会超过 20 个字符。

【问题讨论】:

  • 两个字符串之间的相似度指标是多少? scipy.spatial.cKDtree 快速可靠,适用于 20 天,但仅适用于 Lp 指标。

标签: python string algorithm kdtree


【解决方案1】:

可能是我大约一年前读过的最热门的博客文章之一:Levenstein Automata。看看那篇文章。它不仅提供了算法的描述,还提供了要遵循的代码。从技术上讲,它不是 kd-tree,但它与人们可能在现实世界中遇到/使用的字符串匹配和字典校正算法非常相关。

他还有另一篇关于BK-trees 的博客文章,它在字符串的模糊匹配和存在拼写错误的字符串查找方面做得更好。这是另一个包含BK-tree 源代码的资源(我无法验证其准确性或正确实现。)

【讨论】:

  • Levenshtein Automata 令人印象深刻,但是,在实现了它之后,我只能说,当距离增加时,预计算版本会迅速爆炸(以节点计)。在实践中,在 Trie 中搜索非常快,但自动机开始变得非常大,距离为 4 或以上。
  • @Matthieu M. 你会推荐什么?
  • 我没有(认真地)实现任何其他机制,所以我没有任何建议。如果你能忍受3的最大距离,那就用它,否则,恐怕你必须自己去探索:)
  • @MatthieuM。一些嵌套自动机怎么样,例如允许编辑距离高达 3+3。
猜你喜欢
  • 2012-05-13
  • 2014-01-03
  • 1970-01-01
  • 2011-12-10
  • 2013-02-24
  • 2011-04-04
  • 1970-01-01
  • 2012-06-11
  • 2010-10-04
相关资源
最近更新 更多