Browse Source

Dedicated thread to refresh bayesian

Loweel 4 years ago
parent
commit
bbf617da59
1 changed files with 28 additions and 17 deletions
  1. 28 17
      matrix.go

+ 28 - 17
matrix.go

@@ -116,27 +116,38 @@ func (c *ByClassifier) Janitor(size int) {
 
 	sortMap(&c.MEH, size)
 
-	c.bayez = nil // mark it for garbage collection.
+	log.Println("Janitor Finished.")
 
-	c.bayez = multibayes.NewClassifier()
-	c.bayez.MinClassSize = 0
+}
 
-	c.BAD.Range(func(key interface{}, value interface{}) bool {
-		c.bayez.Add(key.(string), []string{"BAD"})
-		return true
-	})
+//RefreshBayes refresh the bayesian using values we stored
+func (c *ByClassifier) RefreshBayes() {
 
-	c.GOOD.Range(func(key interface{}, value interface{}) bool {
-		c.bayez.Add(key.(string), []string{"GOOD"})
-		return true
-	})
+	log.Println("RefreshBayes Thread started")
 
-	c.MEH.Range(func(key interface{}, value interface{}) bool {
-		c.bayez.Add(key.(string), []string{"GOOD", "BAD"})
-		return true
-	})
+	ticker := time.NewTicker(1 * time.Minute)
 
-	log.Println("Janitor Finished.")
+	for _ = range ticker.C {
+
+		c.bayez = multibayes.NewClassifier()
+		c.bayez.MinClassSize = 0
+
+		c.BAD.Range(func(key interface{}, value interface{}) bool {
+			c.bayez.Add(key.(string), []string{"BAD"})
+			return true
+		})
+
+		c.GOOD.Range(func(key interface{}, value interface{}) bool {
+			c.bayez.Add(key.(string), []string{"GOOD"})
+			return true
+		})
+
+		c.MEH.Range(func(key interface{}, value interface{}) bool {
+			c.bayez.Add(key.(string), []string{"GOOD", "BAD"})
+			return true
+		})
+
+	}
 
 }
 
@@ -177,7 +188,7 @@ func (c *ByClassifier) enroll() {
 
 	log.Println("Classifier populated...")
 	go c.CleanThread()
-
+	go c.RefreshBayes()
 	log.Println("Janitor Started")
 
 }