我目前正在使用similar_text将字符串与~50,000的列表进行比较,虽然由于比较的数量非常慢,但它仍然有效。比较约500个独特的字符串大约需要11分钟。在运行它之前,我确实检查了数据库,看它是否在过去被处理过,所以每次在初始运行后它都接近即时。我确定使用levenshtein会稍微快一些,并且有人在手册中发布的LevenshteinDistance函数看起来很有趣。我是否遗漏了一些可以显着加快速度的东西? 最佳答案 最后,levenshtein和similar_text都太慢了,因为它必须经过的字符串数量太多,即使有很多检
我正在尝试使用Levenshtein距离算法在PHP中对齐字符串。问题是我的回溯代码不能在所有情况下正常工作。例如,当第二个数组在开头插入行时。那么回溯只会走到i=0的时候。如何正确实现Levenshtein距离的回溯?Levenshtein距离,$s和$t是字符串数组(行)functionmatch_rows($s,$t){$m=count($s);$n=count($t);for($i=0;$i0&&$j>0){$min=min($d[$i-1][$j],$d[$i][$j-1],$d[$i-1][$j-1]);switch($min){//equalorsubstitutionc
我正在尝试为MySQL创建一个UDF函数(一个由MySQL执行的C函数),但我遇到了一些左右问题。我只是直接给你代码。我有一个文件levenshtein.c,其中包含以下声明和相应的实现:my_boolsql_levenshtein_init(UDF_INIT*initid,UDF_ARGS*args,char*message);voidsql_levenshtein_deinit(UDF_INIT*initid);longlongsql_levenshtein(UDF_INIT*initid,UDF_ARGS*args,char*is_null,char*error);我编译文件(针
在我的MySQL表中,我有字段名称,它是唯一的。然而,字段的内容聚集在不同的地方。所以有可能我有2条记录具有非常相似的名称,而不是第二条记录由于拼写错误而被丢弃。现在我想找到那些与另一个非常相似的条目。为此,我遍历所有记录,并通过再次遍历所有记录将名称与其他条目进行比较。问题是有超过15k条记录需要太多时间。有没有办法更快地做到这一点?这是我的代码:for($x=0;$x{$B[$y]['naam']}={$sim}");}}} 最佳答案 序言:这样的任务总是很耗时,而且总会有一些对漏掉。尽管如此,还是有一些想法:1。实际上,该算法
获得两个字符串之间相似度百分比的最佳算法是什么。到目前为止,我一直在使用Levenshtein,但这还不够。Levenshtein给了我差异的数量,然后我必须尝试通过执行以下操作将其计算为相似性:100-(no.differences/no.characters_in_scnd_string*100)例如,如果我测试"ab"与"abc"的相似度,我得到大约66%的相似度,这是有道理的,因为"ab"与"abc"有2/3相似。我遇到的问题是,当我将"abcabc"测试为"abc"时,我得到了100%的相似度,因为"abc"完全存在于"abcabc"中。但是,我希望答案是50%,因为"abc
这是计算Levenshtein距离的一般算法的教科书示例(我从MagnusHetland'swebite中提取):deflevenshtein(a,b):"CalculatestheLevenshteindistancebetweenaandb."n,m=len(a),len(b)ifn>m:#Makesuren不过,我想知道是否有使用difflib的SequenceManager的更高效(并且可能更优雅)的纯Python实现。在玩弄它之后,这就是我想出的:fromdifflibimportSequenceMatcherassmdeflev_using_difflib(s1,s2):a
首先我想说我是python新手。我试图计算许多单词列表的Levenshtein距离。到目前为止,我成功地为一对单词编写了代码,但是我在为列表编写代码时遇到了一些问题。我只是有两个列表,一个在另一个下面,如下所示:卡洛斯坚持彼得我想将Levenshtein距离用于相似性方法。有人能告诉我如何加载列表,然后使用函数计算距离吗?我会很感激!这是我的两个字符串的代码:#!/usr/bin/envpython#-*-coding=utf-8-*-deflev_dist(source,target):ifsource==target:return0#words=open(test_file.txt
搜索了几天之后,我准备放弃为PythonLevenshteinlibrary的Python2.7(Windows64位)查找预编译二进制文件。,所以我不是在尝试自己编译它。我已经安装了最新版本的MinGW32(版本0.5-beta-20120426-1)并将其设置为distutils中的默认编译器。开始吧:C:\Users\tomas>pipinstallpython-levenshteinDownloading/unpackingpython-levenshteinRunningsetup.pyegg_infoforpackagepython-levenshteinwarning:n
搜索了几天之后,我准备放弃为PythonLevenshteinlibrary的Python2.7(Windows64位)查找预编译二进制文件。,所以我不是在尝试自己编译它。我已经安装了最新版本的MinGW32(版本0.5-beta-20120426-1)并将其设置为distutils中的默认编译器。开始吧:C:\Users\tomas>pipinstallpython-levenshteinDownloading/unpackingpython-levenshteinRunningsetup.pyegg_infoforpackagepython-levenshteinwarning:n
我正在尝试实现“您的意思是?”某种搜索功能。我正在尝试执行一个使用levenshtein函数的查询,该函数是用ruby编写的。我想知道如何在sqlite3查询中使用此函数。我在想它可能是这样的:@results=the_db.where('levenshtein(name,?)但我不确定如何让它工作。有人可以帮帮我吗? 最佳答案 试试editdist3函数:Theeditdist3algorithmisafunctionthatcomputestheminimumeditdistance(a.k.a.theLevenshtein