pull/7/head
matthieugomez 2018-05-17 11:33:55 -04:00
parent 68c82cd40b
commit 690231189f
1 changed files with 10 additions and 15 deletions

View File

@ -1,6 +1,7 @@
##############################################################################
##
## compare
## compare always return a value between 0 and 1.
##
##############################################################################
@ -10,23 +11,17 @@ end
function compare(dist::Union{Hamming, Levenshtein, DamerauLevenshtein},
s1::AbstractString, s2::AbstractString)
distance = evaluate(dist, s1, s2)
len = max(length(s1), length(s2))
len == 0 ? 1.0 : 1.0 - distance / len
end
# compare always return a value between 0 and 1.
# When string length < q for qgram distance, returns s1 == s2
function compare(dist::QGram, s1::AbstractString, s2::AbstractString)
len1 = length(s1)
len2 = length(s2)
min(len1, len2) <= (dist.q - 1) && return convert(Float64, s1 == s2)
distance = evaluate(dist, s1, s2)
1 - distance / (len1 + len2 - 2 * dist.q + 2)
len == 0 ? 1.0 : 1.0 - evaluate(dist, s1, s2) / len
end
function compare(dist::AbstractQGram, s1::AbstractString, s2::AbstractString)
len = min(length(s1), length(s2))
len <= (dist.q - 1) && return convert(Float64, s1 == s2)
1 - evaluate(dist, s1, s2)
# When string length < q for qgram distance, returns s1 == s2
len1 = length(s1) ; len2 = length(s2)
min(len1, len2) <= (dist.q - 1) && return convert(Float64, s1 == s2)
if typeof(dist) <: QGram
1 - evaluate(dist, s1, s2) / (len1 + len2 - 2 * dist.q + 2)
else
1 - evaluate(dist, s1, s2)
end
end