我需要一种方法来将多个字符串与测试字符串进行比较,并返回与其非常相似的字符串:
TEST STRING: THE BROWN FOX JUMPED OVER THE RED COW
CHOICE A : THE RED COW JUMPED OVER THE GREEN CHICKEN
CHOICE B : THE RED COW JUMPED OVER THE RED COW
CHOICE C : THE RED FOX JUMPED OVER THE BROWN COW
Run Code Online (Sandbox Code Playgroud)
(如果我这样做的话)最接近"TEST STRING"的字符串应该是"CHOICE C".最简单的方法是什么?
我计划将其实现为多种语言,包括VB.net,Lua和JavaScript.此时,伪代码是可以接受的.如果您可以提供特定语言的示例,这也是值得赞赏的!
language-agnostic algorithm string-comparison levenshtein-distance
在工作中,我们经常需要从与其他输入字符串最匹配的字符串列表中查找字符串.目前,我们正在使用Needleman-Wunsch算法.该算法通常会返回大量误报(如果我们将最小分数设置得太低),有时候它应该找不到匹配(当最小分数太高时),并且大多数时候,我们需要手工检查结果.我们认为我们应该尝试其他替代品.
您对算法有任何经验吗?你知道算法如何相互比较吗?
我真的很感激一些建议.
PS:我们用C#编码,但你不应该关心它 - 我一般都在询问算法.
哦,对不起,我忘记提及了.
不,我们不是用它来匹配重复数据.我们有一个我们正在寻找的字符串列表 - 我们称之为搜索列表.然后我们需要处理来自各种来源的文本(如RSS提要,网站,论坛等) - 我们提取这些文本的一部分(有完整的规则集,但这是无关紧要的)我们需要匹配那些反对搜索列表的人.如果字符串匹配search-list中的一个字符串 - 我们需要对事物进行一些进一步的处理(这也是无关紧要的).
我们无法执行正常的比较,因为从外部源提取的字符串,大多数时候,包括一些额外的单词等.
无论如何,它不是重复检测.
你知道任何匹配两个字符串的好算法,然后返回这两个字符串匹配的百分比百分比吗?
是否有一些,也与数据库一起工作?
我有一些带有一些文件名(LIST1)的泛型和另一个带有完整名称列表的大型通用(LIST2).我需要将LIST1中的名称与LIST2中的类似名称相匹配.例如
LIST1
- **MAIZE_SLIP_QUANTITY_3_9.1.aif**
LIST 2
1- TUTORIAL_FAILURE_CLINCH_4.1.aif
2- **MAIZE_SLIP_QUANTITY_3_5.1.aif**
3- **MAIZE_SLIP_QUANTITY_3_9.2.aif**
4- TUTORIAL_FAILURE_CLINCH_5.1.aif
5- TUTORIAL_FAILURE_CLINCH_6.1.aif
6- TUTORIAL_FAILURE_CLINCH_7.1.aif
7- TUTORIAL_FAILURE_CLINCH_8.1.aif
8- TUTORIAL_FAILURE_CLINCH_9.1.aif
9- TUTORIAL_FAILURE_PUSH_4.1.aif
Run Code Online (Sandbox Code Playgroud)
我已经阅读了Levenshtein距离并在框架(SignumFramework Utilities)中使用了它的实现. 它在第2行和第3行返回距离= 1.但在我的情况下,第3行比第2行更好.
还有另一种方法可以比较相似的字符串吗?更灵活的东西?