![JAR search and dependency download from the Maven repository](/logo.png)
edu.berkeley.nlp.util.VariableSizeHistogram Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of berkeleyparser Show documentation
Show all versions of berkeleyparser Show documentation
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 extends Number> counter)
{
for (Entry extends Number, Double> 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