相关疑难解决方法(0)

你如何在德尔福实现Levenshtein距离?

我是在回答你自己的问题的精神发表这篇文章的.

我的问题是:如何在Delphi中实现Levenshtein算法来计算两个字符串之间的编辑距离,如此处所述

只是关于性能的说明:这件事非常快.在我的桌面上(2.33 Ghz双核,2GB内存,WinXP),我可以在不到一秒的时间内完成100K字符串的数组运行.

delphi algorithm edit-distance levenshtein-distance

20
推荐指数
1
解决办法
4067
查看次数

需要一个例程来检测相似但不相同的字符串

我有一个字符串列表,其中一些字符串自我之前的版本以来已被修改过.一些变化是微不足道的(间隔,一个字等).我想检测只有"轻微"差异的字符串,这样我就可以尝试使用旧的翻译.

"微小差异"是什么意思?在我开始使用数据库之前,我不会知道.

你知道任何可调节的例程,它们将指示两个字符串何时相似但不相同?任何会返回一个数字的例程,表示两个字符串的不同之处?

delphi string

11
推荐指数
1
解决办法
949
查看次数

Levenshtein算法 - 如果编辑距离大于给定阈值,则失败快速

对于Levenshtein算法,我发现了Delphi的这个实现.

我需要一个版本,一旦达到最大距离就停止,并返回到目前为止找到的距离.

我的第一个想法是在每次迭代后检查当前结果:

for i := 1 to n do
    for j := 1 to m do
    begin
      d[i, j] := Min(Min(d[i-1, j]+1, d[i,j-1]+1), d[i-1,j-1]+Integer(s[i] <> t[j]));

      // check   
      Result := d[n, m];
      if Result > max then
      begin
        Exit;
      end; 

    end;
Run Code Online (Sandbox Code Playgroud)

delphi algorithm levenshtein-distance

4
推荐指数
1
解决办法
681
查看次数