All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.berkeley.nlp.util.VariableSizeHistogram Maven / Gradle / Ivy

Go to download

The Berkeley parser analyzes the grammatical structure of natural language using probabilistic context-free grammars (PCFGs).

The newest version!
package edu.berkeley.nlp.util;

import java.text.NumberFormat;
import java.util.SortedSet;
import java.util.Map.Entry;

public class VariableSizeHistogram
{

	private SortedSet startPoints;

	private Counter data;

	private boolean intKeys;

	public VariableSizeHistogram(SortedSet startPoints)
	{
		this(startPoints, true);
	}

	public VariableSizeHistogram(SortedSet startPoints, boolean intKeys)
	{
	
		this.startPoints = startPoints;
		this.intKeys = intKeys;
		

		data = new Counter();
	}

	public void add(double key, double value)
	{
		SortedSet tailSet = startPoints.tailSet(key);
		Double startPoint = tailSet.isEmpty() ? startPoints.last() : tailSet.first();
		data.incrementCount(startPoint, value);
	}

	public void addAll(Counter counter)
	{
		for (Entry entry : counter.entrySet())
		{
			add(entry.getKey().doubleValue(), entry.getValue());
		}
	}

	@Override
	public String toString()
	{

		StringBuilder sb = new StringBuilder("[");

		NumberFormat f = NumberFormat.getInstance();
		f.setMaximumFractionDigits(5);
		Number previous = null;
		for (Number element : startPoints)
		{
			if (previous != null)
			{
				Number rangeEnd = null;
				if (intKeys)
				{
					int num = element.intValue() - 1;
					int prev = previous.intValue();
					if (num != prev)
						rangeEnd = num;
				}
				else
					rangeEnd = element;

				sb.append(f.format(previous) + (rangeEnd == null ? "" : "-" + f.format(rangeEnd)));
				sb.append(" : ");
				sb.append(f.format(data.getCount(element)));
				sb.append(", ");

			}
			previous = element;
		}

		sb.append(f.format(previous) + "-");
		sb.append(" : ");
		sb.append(f.format(data.getCount(previous)));

		sb.append("]");
		return sb.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy