compare
parent
68c82cd40b
commit
690231189f
|
@ -1,6 +1,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
##
|
||||||
## compare
|
## compare
|
||||||
|
## compare always return a value between 0 and 1.
|
||||||
##
|
##
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
@ -10,23 +11,17 @@ end
|
||||||
|
|
||||||
function compare(dist::Union{Hamming, Levenshtein, DamerauLevenshtein},
|
function compare(dist::Union{Hamming, Levenshtein, DamerauLevenshtein},
|
||||||
s1::AbstractString, s2::AbstractString)
|
s1::AbstractString, s2::AbstractString)
|
||||||
distance = evaluate(dist, s1, s2)
|
|
||||||
len = max(length(s1), length(s2))
|
len = max(length(s1), length(s2))
|
||||||
len == 0 ? 1.0 : 1.0 - distance / len
|
len == 0 ? 1.0 : 1.0 - evaluate(dist, s1, s2) / 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)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function compare(dist::AbstractQGram, s1::AbstractString, s2::AbstractString)
|
function compare(dist::AbstractQGram, s1::AbstractString, s2::AbstractString)
|
||||||
len = min(length(s1), length(s2))
|
# When string length < q for qgram distance, returns s1 == s2
|
||||||
len <= (dist.q - 1) && return convert(Float64, s1 == s2)
|
len1 = length(s1) ; len2 = length(s2)
|
||||||
1 - evaluate(dist, s1, 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
|
end
|
||||||
|
|
Loading…
Reference in New Issue