correction for NormalizedQGram
parent
99853255b8
commit
18fd1ab91c
|
@ -19,8 +19,8 @@ function evaluate{T <: Union{Hamming, Levenshtein, DamerauLevenshtein}}(
|
||||||
return distance / len2
|
return distance / len2
|
||||||
end
|
end
|
||||||
|
|
||||||
function evaluate(normalized::Normalized{QGram}, s1::AbstractString, s2::AbstractString,
|
function evaluate{T <: QGram}(normalized::Normalized{T}, s1::AbstractString, s2::AbstractString,
|
||||||
len1::Integer, len2::Integer)
|
len1::Integer, len2::Integer)
|
||||||
distance = evaluate(normalized.dist, s1, s2, len1, len2)
|
distance = evaluate(normalized.dist, s1, s2, len1, len2)
|
||||||
return distance / (len1 + len2 - 2 * normalized.dist.q - 2)
|
return distance / (max(0, len1 - normalized.dist.q + 1) + max(0, len2 - normalized.dist.q + 1))
|
||||||
end
|
end
|
|
@ -51,10 +51,16 @@ using StringDistances, Base.Test
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@test evaluate(QGram(1), "", "abc") == 3
|
@test evaluate(QGram(1), "", "abc") == 3
|
||||||
@test evaluate(QGram(1), "abc", "cba") == 0
|
@test evaluate(QGram(1), "abc", "cba") == 0
|
||||||
@test evaluate(QGram(1), "abc", "ccc") == 4
|
@test evaluate(QGram(1), "abc", "ccc") == 4
|
||||||
|
|
||||||
|
@test_approx_eq_eps evaluate(Normalized(QGram(1)), "", "abc") 1.0 1e-4
|
||||||
|
@test_approx_eq_eps evaluate(Normalized(QGram(1)), "abc", "cba") 0.0 1e-4
|
||||||
|
@test_approx_eq_eps evaluate(Normalized(QGram(1)), "abc", "ccc") 2/3 1e-4
|
||||||
|
|
||||||
|
|
||||||
@test_approx_eq_eps evaluate(Jaccard(1), "", "abc") 1.0 1e-4
|
@test_approx_eq_eps evaluate(Jaccard(1), "", "abc") 1.0 1e-4
|
||||||
@test_approx_eq_eps evaluate(Jaccard(1), "abc", "ccc") .666666 1e-4
|
@test_approx_eq_eps evaluate(Jaccard(1), "abc", "ccc") .666666 1e-4
|
||||||
|
|
Loading…
Reference in New Issue