private double calculateP2(Word w, Word p, Tag wt, NumMap np, Long val,
			int state, int next) {
		double p2 = 0.0;
		if (val != null) {
			p2 = val * 1.0 / wt.trans.getVal(next);
		} else {
			if (p == null) {
				return p2;
			} else {
				Long temp = null;
				Long N = wt.trans.getVal(next);
				if (N == null) {
					// state->next的跳转不存在
					return p2;
				} else {
					// 利用贝叶斯估计
					for (Entry<Integer, NumMap> entry : p.tags.entrySet()) {
						temp = wt.about.get(NumUtils.ID(entry.getKey(), next));
						if (temp == null)
							continue;
						p2 += (entry.getValue().sum() * 1.0 * temp / tagMap
								.get(entry.getKey()).freq());
					}
					p2 = p2 / p.freq();
					p2 = p2 / wt.trans.getVal(next);
					p2 *= (ww_num / wt_num);
				}
			}
		}
		return p2;
	}