Files
Data_ScienceUse_Cases/VBA/LevenshteinSimilarity.bas
2023-11-01 13:03:28 +07:00

26 lines
803 B
QBasic

Attribute VB_Name = "Module1"
Function SimilarityLevenshtein(target As String, reference As String) As Double
Dim maxLen As Long
Dim minLen As Long
Dim distance As Double
Dim similarity As Double
' Remove spaces and convert to lowercase
target = Replace(LCase(target), " ", "")
reference = Replace(LCase(reference), " ", "")
maxLen = IIf(Len(target) > Len(reference), Len(target), Len(reference))
minLen = IIf(Len(target) < Len(reference), Len(target), Len(reference))
distance = maxLen - minLen
For i = 1 To minLen
If Mid(target, i, 1) <> Mid(reference, i, 1) Then
distance = distance + 1
End If
Next i
similarity = (1 - distance / maxLen)
SimilarityLevenshtein = similarity
End Function