Package cc.mallet.cluster

Source Code of cc.mallet.cluster.Record

package cc.mallet.cluster;

import gnu.trove.TIntObjectHashMap;

import java.io.Serializable;

import cc.mallet.types.Alphabet;
import cc.mallet.types.AugmentableFeatureVector;
import cc.mallet.types.FeatureVector;

public class Record implements Serializable {

  private static final long serialVersionUID = 1L;

  Alphabet fieldAlph;

  Alphabet valueAlph;

  TIntObjectHashMap<FeatureVector> field2values;

  public Record (Alphabet fieldAlph, Alphabet valueAlph) {
    this.fieldAlph = fieldAlph;
    this.valueAlph = valueAlph;
    field2values = new TIntObjectHashMap<FeatureVector>();
  }

  public Record (Alphabet fieldAlph, Alphabet valueAlph, String[][] vals) {
    this(fieldAlph, valueAlph);
    for (int i = 0; i < vals.length; i++) {
      AugmentableFeatureVector afv = new AugmentableFeatureVector(valueAlph, false);
      for (int j = 1; j < vals[i].length; j++)
        afv.add(valueAlph.lookupIndex(vals[i][j]), 1.0);
      field2values.put(fieldAlph.lookupIndex(vals[i][0]), afv.toFeatureVector());
    }
  }
 
  public FeatureVector values (String field) {
    return values(fieldAlph.lookupIndex(field));
  }

  public FeatureVector values (int field) {
    return (FeatureVector) field2values.get(field);
  }
 
  public int value (String field) {
    return value(fieldAlph.lookupIndex(field));
  }
 
  public int value (int field) {
    FeatureVector fv = values(field);
    return (fv == null) ? -1 : fv.indexAtLocation(0);
  }
 
  public int[] fields () { return field2values.keys(); }
 
  public Alphabet fieldAlphabet () { return this.fieldAlph; }
 
  public Alphabet valueAlphabet () { return this.valueAlph; }

  public String toString () { return toString(true); }
 
  public String toString (boolean oneLine) {
    StringBuffer b = new StringBuffer();
    int[] keys = field2values.keys();
    for (int i = 0; i < keys.length; i++) {
      b.append(fieldAlph.lookupObject(keys[i]) + "=");
      FeatureVector v = (FeatureVector) field2values.get(keys[i]);
      for (int j = 0; j < v.numLocations(); j++)
        b.append(valueAlph.lookupObject(v.indexAtLocation(j)) + ",");
      if (!oneLine) b.append("\n");
    }
    return b.toString();
  }

  public static void main (String[] args) {
    Record r =
        new Record(new Alphabet(), new Alphabet(),
                    new String[][] { { "field1", "f1v1", "f1v2" },
                                    { "field2", "f2v1" },
                                    { "field3", "f3v1", "f3v2", "f3v3" } });
    System.out.println(r);
  }
}
TOP

Related Classes of cc.mallet.cluster.Record

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.