func getNERSlots()

in src/cmd/nel/main.go [173:206]


func getNERSlots(termStr string, nerThreshold float64, validLabels set.Set) Slots {
	var data map[string]interface{}
	if err := json.Unmarshal([]byte(termStr), &data); err != nil {
		glog.Fatal(termStr, err)
	}
	slots := NewSlots()
	for label, values := range data {
		if validLabels.Contains(label) {
			for _, fields := range values.([]interface{}) {
				var term string
				var score float64
				for _, f := range fields.([]interface{}) {
					switch f.(type) {
					case string:
						term = f.(string)
					case float64:
						score = f.(float64)
					default:
						glog.Fatalf("unknown type: %v", f)
					}
				}
				norm := reParentheses.ReplaceAllString(term, " ")
				norm = strings.TrimSpace(norm)
				if len(norm) > 0 {
					term = norm
				}
				if score > nerThreshold && len(term) > 0 {
					slots.Add(label, term, score)
				}
			}
		}
	}
	return slots
}