Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 模糊字符串匹配_String_Algorithm_Search_Fuzzy Search - Fatal编程技术网

String 模糊字符串匹配

String 模糊字符串匹配,string,algorithm,search,fuzzy-search,String,Algorithm,Search,Fuzzy Search,在我的应用程序中,我有一个要求,就是将用户输入的字符串值与数据存储进行模糊匹配 我基本上是试图在向系统添加数据的过程中找到可能的重复项 我研究了变音、双变音和SoundEx,得出的结论是,在处理单个单词输入字符串时,它们都很好;然而,我试图匹配一些未定义的单词(它们实际上是地名) 我确实考虑了把每个单词从字符串中分离出来(删除任何我定义为噪声单词),然后实现一些逻辑,以确定在我的数据存储中哪些地名最好匹配(基于我选择的算法的密钥);我认为这样做的好处是,我可以有选择地收紧或放松匹配标准以适应应用

在我的应用程序中,我有一个要求,就是将用户输入的字符串值与数据存储进行模糊匹配

我基本上是试图在向系统添加数据的过程中找到可能的重复项

我研究了变音、双变音和SoundEx,得出的结论是,在处理单个单词输入字符串时,它们都很好;然而,我试图匹配一些未定义的单词(它们实际上是地名)

我确实考虑了把每个单词从字符串中分离出来(删除任何我定义为噪声单词),然后实现一些逻辑,以确定在我的数据存储中哪些地名最好匹配(基于我选择的算法的密钥);我认为这样做的好处是,我可以有选择地收紧或放松匹配标准以适应应用程序:然而,这对我来说确实有点脏

因此,我的问题是:

1:我处理这个问题的方式是否正确,是的,我知道这会非常昂贵;但是(不深入讨论实现),这些信息将来自memcache数据库


2:有没有专门针对语音匹配多个单词的算法?如果是这样的话,请您向我提供一些关于它们的信息,如果可能的话,请提供它们的优点和局限性。

您可能需要研究一个类似于。我曾使用Nilsimsa在各个城市“散列”craigslists的帖子,以搜索重复的帖子(注意:我不是CL员工,只是我在做的一个个人项目)


这些方法中的大多数都没有您想要的那么可调(基本上,您可以获得一些松散定义的“编辑距离”度量),而且它们不是语音的,完全基于字符。

您实际上想做什么还不是很清楚。输入是什么?预期的输出是什么?如果您不想采用将名称标记为单词的方法,那么字符bigram和trigram值得研究。您可以尝试使用levenstein distance,它为两个字符串之间的差异返回一个数字。它是否有助于找到“拼音”的正确拼写(你能举个例子吗?)。大多数示例是针对单个单词的,但它也可以用于较长的字符串。