1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

compiler: improve typo detection

This commit is contained in:
joe-conigliaro
2019-09-16 03:07:12 +10:00
committed by Alexander Medvednikov
parent 52fc16bc8a
commit 075a8e5ccb
3 changed files with 32 additions and 22 deletions

View File

@@ -40,22 +40,21 @@ pub fn dice_coefficient(s1, s2 string) f32 {
if s1.len == 0 || s2.len == 0 { return 0.0 }
if s1 == s2 { return 1.0 }
if s1.len < 2 || s2.len < 2 { return 0.0 }
a := if s1.len > s2.len { s1 } else { s2 }
b := if a == s1 { s2 } else { s1 }
mut first_bigrams := map[string]int
for i := 0; i < s1.len-1; i++ {
a := s1[i]
b := s1[i+1]
bigram := (a+b).str()
for i := 0; i < a.len-1; i++ {
bigram := a.substr(i, i+2)
first_bigrams[bigram] = if bigram in first_bigrams { first_bigrams[bigram]+1 } else { 1 }
}
mut intersection_size := 0
for i := 0; i < s2.len-1; i++ {
a := s2[i]
b := s2[i+1]
bigram := (a+b).str()
count := if bigram in first_bigrams { first_bigrams[bigram] } else { 0 }
for i := 0; i < b.len-1; i++ {
bigram := b.substr(i, i+2)
count := if bigram in first_bigrams { first_bigrams[bigram] } else { 0 }
if count > 0 {
first_bigrams[bigram] = count - 1
intersection_size++
}
}
return (2.0 * intersection_size) / (f32(s1.len) + f32(s2.len) - 2)
return (2.0 * intersection_size) / (f32(a.len) + f32(b.len) - 2)
}