classify also if nothing have ever been learned

master
Carlo Strub 7 years ago
parent 301e9f53ec
commit 3c665ed446

@ -78,11 +78,14 @@ func classificationStatistics(db *bolt.DB) (gTotal, jTotal float64, err error) {
jTotal = float64(jHLL.Count())
}
if gTotal == 0 && jTotal == 0 {
return errors.New("no mails have yet been learned")
}
if gTotal == 0 {
return errors.New("no good mails have yet been classified")
return errors.New("no good mails have yet been learned")
}
if jTotal == 0 {
return errors.New("no junk mails have yet been classified")
return errors.New("no junk mails have yet been learned")
}
return nil
@ -173,19 +176,20 @@ func Junk(db *bolt.DB, wordlist []string) (junk bool, prob float64, err error) {
var probabilities []float64
for _, val := range wordlist {
p, err := classificationWord(db, val)
var p float64
p, err = classificationWord(db, val)
if err != nil {
return false, prob, err
return false, 0.0, err
}
probabilities = append(probabilities, p)
}
if len(probabilities) > 0 {
prob = stat.HarmonicMean(probabilities, nil)
if prob < 0.5 {
return true, (1 - prob), nil
}
}
if prob < 0.5 {
return true, (1 - prob), err
}
return false, (1 - prob), nil
return false, (1 - prob), err
}

@ -125,7 +125,7 @@ var _ = Describe("Classify Mails", func() {
answer, prob, err := Junk(dbs["test/Maildir2"], []string{"Carlo"})
Ω(err).Should(Equal(errors.New("no good mails have yet been classified")))
Ω(err).Should(Equal(errors.New("no mails have yet been learned")))
Ω(prob).Should(Equal(0.0))
Ω(answer).Should(BeFalse())

Loading…
Cancel
Save