public void dump(PrintWriter out) { FullStatFig entropyFig = new FullStatFig(); FullStatFig numTranslationsFig = new FullStatFig(); FullStatFig sumFig = new FullStatFig(); for (Map.Entry<String, StringDoubleMap> e : entrySet()) { String s = e.getKey(); StringDoubleMap m = e.getValue(); FullStatFig fig = new FullStatFig(m.values()); entropyFig.add(fig.entropy()); numTranslationsFig.add(fig.size()); sumFig.add(fig.total()); out.printf( "%s\tentropy %s\tnTrans %d\tsum %f\n", s, Fmt.D(fig.entropy()), fig.size(), fig.total()); ArrayList<StringDoubleMap.Entry> entries2 = new ArrayList<StringDoubleMap.Entry>(m.entrySet()); Collections.sort(entries2, Collections.reverseOrder(m.entryValueComparator())); for (StringDoubleMap.Entry tv : entries2) { if (tv.getValue() < 1e-10) continue; // Skip zero entries String t = tv.getKey(); out.printf(" %s: %f\n", t, tv.getValue()); } } out.println("# entropy = " + entropyFig); out.println("# sum = " + sumFig); out.println("# numTranslations = " + numTranslationsFig); }
public void dump(PrintWriter out, WordPairStats wpStats, boolean reverse) { if (wpStats == null || !wpStats.hasStats()) { dump(out); return; } FullStatFig entropyFig = new FullStatFig(); FullStatFig numTranslationsFig = new FullStatFig(); FullStatFig sumFig = new FullStatFig(); // Sort English words by decreasing frequency ArrayList<Pair<Double, String>> entries1 = new ArrayList<Pair<Double, String>>(); for (String s : keySet()) { double count = wpStats.enCount(reverse, s); entries1.add(new Pair<Double, String>(count, s)); } Collections.sort( entries1, Collections.reverseOrder(new Pair.FirstComparator<Double, String>())); for (Pair<Double, String> vs : entries1) { String s = vs.getSecond(); StringDoubleMap m = getMap(s, false); FullStatFig fig = new FullStatFig(m.values()); entropyFig.add(fig.entropy()); numTranslationsFig.add(fig.size()); sumFig.add(fig.total()); out.printf( "%s\tentropy %s\tnTrans %d\tsum %f\tn %.0f\n", s, Fmt.D(fig.entropy()), fig.size(), fig.total(), vs.getFirst()); ArrayList<StringDoubleMap.Entry> entries2 = new ArrayList<StringDoubleMap.Entry>(m.entrySet()); Collections.sort(entries2, Collections.reverseOrder(m.entryValueComparator())); for (StringDoubleMap.Entry tv : entries2) { if (tv.getValue() < 1e-10) continue; // Skip zero entries String t = tv.getKey(); double count = wpStats.frCount(reverse, t); double dice = wpStats.dice(reverse, s, t); out.printf(" %s: %f\tn %.0f, dice=%f\n", t, tv.getValue(), count, dice); } } out.println("# entropy = " + entropyFig); out.println("# sum = " + sumFig); out.println("# numTranslations = " + numTranslationsFig); }