相关疑难解决方法(0)

字符串相似度得分/哈希

有没有一种方法来计算字符串的一般"相似性得分"?在某种程度上,我不是将两个字符串比较在一起,而是为每个字符串得到一些数字(哈希),以后可以告诉我两个字符串是否相似.两个相似的字符串应该具有相似(近似)的哈希值.

让我们将这些字符串和分数视为一个例子:

Hello world                1000
Hello world!               1010
Hello earth                1125
Foo bar                    3250
FooBarbar                  3750
Foo Bar!                   3300
Foo world!                 2350
Run Code Online (Sandbox Code Playgroud)

你可以看到Hello world!Hello世界是相似的,他们的分数彼此接近.

这样,通过从其他分数中减去给定的字符串分数然后对其绝对值进行排序,可以找到与给定字符串最相似的字符串.

algorithm hash similarity

46
推荐指数
4
解决办法
2万
查看次数

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

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

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

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

delphi algorithm edit-distance levenshtein-distance

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

如何计算两个字符串之间的差异?

我想在Delphi中创建一个函数来计算两个字符串的不同级别.如果两个字符串相等(忽略大小写),则它应返回0,但如果它们不相等,则应返回不同字符的数量.此功能对于检查拼写非常有用.

function GetDiffStringLevel(S1,S2:string):Integer;
begin
  if SameText(S1,S2) then Exit(0);
  // i want get different chars count
end
Run Code Online (Sandbox Code Playgroud)

样品代码:

Diff:=GetDiffStringLevel('Hello','Hello');// Diff:=0;
Diff:=GetDiffStringLevel('Hello','2Hello');// Diff:=1;
Diff:=GetDiffStringLevel('Hello','H2ello');// Diff:=1;
Diff:=GetDiffStringLevel('Hello','Hello W');// Diff:=2;
Diff:=GetDiffStringLevel('Hello','World');// Diff:=6; or 5
Run Code Online (Sandbox Code Playgroud)

delphi string pascal

11
推荐指数
2
解决办法
2999
查看次数