String 模糊字符串匹配
在我的应用程序中,我有一个要求,就是将用户输入的字符串值与数据存储进行模糊匹配 我基本上是试图在向系统添加数据的过程中找到可能的重复项 我研究了变音、双变音和SoundEx,得出的结论是,在处理单个单词输入字符串时,它们都很好;然而,我试图匹配一些未定义的单词(它们实际上是地名)String 模糊字符串匹配,string,algorithm,search,fuzzy-search,String,Algorithm,Search,Fuzzy Search,在我的应用程序中,我有一个要求,就是将用户输入的字符串值与数据存储进行模糊匹配 我基本上是试图在向系统添加数据的过程中找到可能的重复项 我研究了变音、双变音和SoundEx,得出的结论是,在处理单个单词输入字符串时,它们都很好;然而,我试图匹配一些未定义的单词(它们实际上是地名) 我确实考虑了把每个单词从字符串中分离出来(删除任何我定义为噪声单词),然后实现一些逻辑,以确定在我的数据存储中哪些地名最好匹配(基于我选择的算法的密钥);我认为这样做的好处是,我可以有选择地收紧或放松匹配标准以适应应用
我确实考虑了把每个单词从字符串中分离出来(删除任何我定义为噪声单词),然后实现一些逻辑,以确定在我的数据存储中哪些地名最好匹配(基于我选择的算法的密钥);我认为这样做的好处是,我可以有选择地收紧或放松匹配标准以适应应用程序:然而,这对我来说确实有点脏
因此,我的问题是: 1:我处理这个问题的方式是否正确,是的,我知道这会非常昂贵;但是(不深入讨论实现),这些信息将来自memcache数据库2:有没有专门针对语音匹配多个单词的算法?如果是这样的话,请您向我提供一些关于它们的信息,如果可能的话,请提供它们的优点和局限性。您可能需要研究一个类似于。我曾使用Nilsimsa在各个城市“散列”craigslists的帖子,以搜索重复的帖子(注意:我不是CL员工,只是我在做的一个个人项目)
这些方法中的大多数都没有您想要的那么可调(基本上,您可以获得一些松散定义的“编辑距离”度量),而且它们不是语音的,完全基于字符。您实际上想做什么还不是很清楚。输入是什么?预期的输出是什么?如果您不想采用将名称标记为单词的方法,那么字符bigram和trigram值得研究。您可以尝试使用levenstein distance,它为两个字符串之间的差异返回一个数字。它是否有助于找到“拼音”的正确拼写(你能举个例子吗?)。大多数示例是针对单个单词的,但它也可以用于较长的字符串。