package com.yc.nlp.prob; import java.io.Serializable; import java.util.List; import java.util.Map; import com.yc.nlp.util.GoodTuring; public class GoodTuringProb extends BaseProb implements Serializable { private static final long serialVersionUID = 1L; public Boolean handled; public GoodTuringProb() { super(); handled = false; } @Override public void add(String key, Integer value) { if (!exist(key)) { data.put(key, 0d); } data.put(key, data.get(key) + value); } @SuppressWarnings("unchecked") public double get(String key) { if (!handled) { handled = true; List<Object> result = GoodTuring.main(data); none = Double.valueOf(result.get(0).toString()); data = (Map<String, Double>) result.get(1); total = 0.0; for (double value : data.values()) { total += value; } } if (!exist(key)) { return none; } return data.get(key); } }