小编rgm*_*hes的帖子

VBA中的加权Damerau-Levenshtein

我正在为Microsoft Office套件构建一个私有的拼写检查程序.我正在对拼写错误进行字符串比较,以及确定我想要包含哪些更正的潜在修复方法.

对于加权 Damerau-Levenshtein公式进行字符串比较,我看起来很高和很低,因为我希望交换,插入,删除和替换都具有不同的权重,而不仅仅是"1"的权重,所以我可以优先考虑一些更正超过其他人.例如,错字"agmes"理论上可以纠正为"游戏" "年龄",因为两者都只需要一个编辑就可以移动到正确拼写的单词,但我想让"交换"编辑的权重更低,所以"游戏"将显示为首选更正.

我正在使用Excel进行分析,因此我使用的任何代码都需要在Visual Basic for Applications(VBA)中.我能找到的最好的是这个例子,看起来很棒,但它是用Java编写的.我尽力转换,但我远非专家,可以使用一点帮助!

任何人都可以看看附加的代码,并帮我弄清楚什么是错的?

谢谢!

编辑:我让它自己工作.这是VBA中加权的Damerau-Levenshtein公式.它使用Excel的内置数学函数进行一些评估.当将拼写错误与两种可能的校正进行比较时,具有最高成本的校正是首选字.这是因为两次掉期的成本必须大于删除和插入的成本,如果您分配成本最低的掉期(我认为这是理想的),这是不可能的.如果您需要更多信息,请查看Kevin的博客.

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
    replaceCost = 1.1
    swapCost = 1.2

    Dim i As Integer
    Dim j As Integer
    Dim k As Integer

    If Len(source) = 0 Then
        WeightedDL = Len(target) * insertCost
        Exit Function …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba levenshtein-distance

10
推荐指数
1
解决办法
7782
查看次数

如何通过邮件流规则确定原始邮件与回复邮件?

通过 Office365 使用 Exchange。我的组织希望根据电子邮件是或不是回复来编写邮件流规则。所有原始//发起电子邮件将获得一条规则,所有回复//响应将获得另一条规则。似乎没有一种方法可以在本地执行此操作(至少我找不到它)——但是有人找到了具有相同效果的解决方法吗?

exchange-server office365

4
推荐指数
1
解决办法
2365
查看次数