【问题标题】:Algorithm for measuring distance between disordered sequences测量无序序列之间距离的算法
【发布时间】:2011-02-20 20:23:35
【问题描述】:

Levenshtein 距离为我们提供了一种根据无序单个字符计算两个相似字符串之间距离的方法:

快速棕色狐狸 quikc 棕色传真

Levenshtein 距离 = 3。

具有相似子序列的两个字符串之间的距离的相似算法是什么? 例如,在

快棕色狐狸 棕色狐狸

Levenshtein 距离是 10,但这并没有考虑到字符串有两个相似的子序列,这使得它们比完全无序的单词 like 更“相似”

快棕色狐狸 qburiocwknfox

然而这个完全无序的版本的 Levenshtein 距离为 8。

存在哪些距离度量会考虑子序列的长度,而不假设子序列可以很容易地分解成不同的单词?

【问题讨论】:

标签: algorithm


【解决方案1】:

一个简单的度量是在每个字符串中获取所有 n*(n-1)/2 个子字符串,并查看有多少重叠。这种方法有一些简单的变体,您只能查看特定长度的子字符串。

这类似于通常用于评估机器翻译的BLEU 分数。在 BLEU 的情况下,他们正在比较两个句子:他们从每个句子中提取所有单词的一元、二元、三元和 4-gram。他们计算每个版本的准确率和召回率,并基本上使用这些分数的平均值。

【讨论】:

  • 链接失效了,但答案就在眼前。
【解决方案2】:

您所指的问题属于上下文相关语法。 您基本上定义了一个语法,在这种情况下是英语语法,然后找到语法和不匹配之间的距离。您需要先解析您的输入。

【讨论】:

  • 这不是英语语法。这些不是英文单词。
【解决方案3】:

我的印象是这是一个 NP 完全问题。

至少,我看不出我们怎样才能避免详尽的搜索。此外,我什至看不到我们如何在多项式时间内验证给定的解决方案。

【讨论】:

    【解决方案4】:

    我认为您可以尝试shingles 或它们与 Levenshtein 距离的一些组合。

    【讨论】:

      【解决方案5】:

      初始刺伤:使用diff 算法,并计算差异数作为您的距离

      【讨论】:

        猜你喜欢
        • 2012-07-04
        • 2017-08-01
        • 2013-10-03
        • 2018-07-07
        • 2018-09-13
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 2019-03-20
        相关资源
        最近更新 更多