compare
parent
68c82cd40b
commit
690231189f
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue