public void writeThis(DataOutput baseOut, DataOutput tagOut,
			DataOutput wordOut) throws IOException {
		baseOut.writeVInt(K_LIMT);
		for (int i = 0; i < K_LIMT; i++) {
			baseOut.writeDouble(D[i]);
		}
		baseOut.writeVLong(wt_diff);
		baseOut.writeVLong(wt_num);
		baseOut.writeVLong(ww_diff);
		baseOut.writeVLong(ww_num);
		tagOut.writeInt(tagMap.size());
		for (Entry<Integer, Tag> et : tagMap.entrySet()) {
			tagOut.writeVInt(et.getKey());
			writeTag(et.getValue(), tagOut);
		}
		wordOut.writeInt(wordMap.size());
		Iterator<Entry<String, Word>> it = wordMap.entryiterator();
		Entry<String, Word> et;
		while (it.hasNext()) {
			et = it.next();
			wordOut.writeString(et.getKey());
			writeWord(et.getValue(), wordOut);
		}
	}