Tag: levenshtein distance

是否有可能在Excel中执行Levenshtein距离而不必求助于macros?

让我解释。 我必须为公司做一些模糊匹配,所以ATM我使用levenshtein距离计算器,然后计算这两个词之间的相似百分比。 如果条件超过80%,Fuzzymatch返回“TRUE”。 我的问题是我正在实习,很快就要离开了。 那些将继续这样做的人不知道如何使用excel与macros,并要求我尽我所能去实现我所做的。 所以我的问题是:然而,这个函数可能是低效率的,有没有办法在Excel中做一个标准的函数来计算我之前做的,而不是使用macros? 谢谢。

在VBA中加权的Damerau-Levenshtein

我正在为Microsoft Office套件构build私人拼写检查器。 我正在做string比较的错别字和他们的潜在的修复,以确定我想包括哪些更正。 我已经看了一个加权的 Damerau-Levenshtein公式进行string比较的高低,因为我想交换,插入,删除和replace都有不同的权重,而不仅仅是“1”的权重,所以我可以优先考虑一些更正超过其他人。 例如,错字“agmes”在理论上可以修正为“游戏” 或 “年龄”,因为两者都只需要一个编辑就可以移动到拼写正确的单词,但是我想给“swap”编辑一个较低的权重“游戏”将显示为首选的修正。 我正在使用Excel进行分析,所以我使用的任何代码都需要在Visual Basic for Applications(VBA)中。 我能find的最好的就是这个例子 ,这看起来不错,但它是用Java编写的。 我尽我所能转换,但我远离专家,可以使用一点帮助! 任何人都可以看看附带的代码,并帮助我找出什么是错的? 谢谢! 编辑:我得到它自己的工作。 这里是VBA中加权的Damerau-Levenshtein公式。 它使用Excel的内置math函数进行一些评估。 当比较一个拼写错误和两个可能的更正时,成本最高的更正是首选的词。 这是因为两次交换的成本必须大于删除和插入的成本,如果以最低的成本(我认为是理想的)分配交换,这是不可能的。 查看凯文的博客,如果你需要更多的信息。 Public Function WeightedDL(source As String, target As String) As Double Dim deleteCost As Double Dim insertCost As Double Dim replaceCost As Double Dim swapCost As Double deleteCost = 1 insertCost = 1.1 […]