LBJ2.classify
Class RealPrimitiveFeature

java.lang.Object
  extended by LBJ2.classify.Feature
      extended by LBJ2.classify.RealFeature
          extended by LBJ2.classify.RealPrimitiveFeature
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable
Direct Known Subclasses:
RealArrayFeature

public class RealPrimitiveFeature
extends RealFeature

A real feature takes on any value representable by a double.

See Also:
Serialized Form

Field Summary
protected  ByteString identifier
          The identifier string distinguishes this Feature from other Features.
protected  double value
          The real value is represented as a double.
 
Fields inherited from class LBJ2.classify.Feature
containingPackage, generatingClassifier
 
Constructor Summary
protected RealPrimitiveFeature()
          For internal use only.
  RealPrimitiveFeature(java.lang.String p, java.lang.String c, ByteString i, double v)
          Sets both the identifier and the value.
 
Method Summary
 boolean classEquivalent(Feature f)
          Some features are functionally equivalent, differing only in the encoding of their values; this method will return true iff the class of this feature and f are different, but they differ only because they encode their values differently.
 int compareTo(java.lang.Object o)
          Used to sort features into an order that is convenient both to page through and for the lexicon to read off disk.
 Feature encode(java.lang.String e)
          Returns a feature object in which any strings that are being used to represent an identifier or value have been encoded in byte strings.
 boolean equals(java.lang.Object o)
          Two RealPrimitiveFeatures are equivalent when their containing packages and identifiers are equivalent and their values are equal.
 ByteString getByteStringIdentifier()
          Retrieves this feature's identifier as a byte string.
 Feature getFeatureKey(Lexicon lexicon, boolean training, int label)
          Return the feature that should be used to index this feature into a lexicon.
 double getStrength()
          Simply returns the value of value.
 java.lang.String getStringIdentifier()
          Retrieves this feature's identifier as a string.
 boolean hasByteStringIdentifier()
          Determines if this feature contains a byte string identifier field.
 int hashCode()
          The hash code of a RealPrimitiveFeature is the sum of the hash codes of the containing package, the identifier, and the value.
 boolean isPrimitive()
          Determines if this feature is primitive.
 void lexRead(ExceptionlessInputStream in, Lexicon lex, java.lang.String p, java.lang.String g, java.lang.String si, ByteString bi)
          Reads the representation of a feature with this object's run-time type as stored by a lexicon, overwriting the data in this object.
 java.lang.String lexWrite(ExceptionlessOutputStream out, Lexicon lex, java.lang.String c, java.lang.String p, java.lang.String g, java.lang.String si, ByteString bi)
          Writes a binary representation of the feature intended for use by a lexicon, omitting redundant information when possible.
 RealFeature multiply(double m)
          Returns a new feature object, the same as this one in all respects except the value field has been multiplied by the specified number.
 void read(ExceptionlessInputStream in)
          Reads the representation of a feaeture with this object's run-time type from the given stream, overwriting the data in this object.
 Feature withStrength(double s)
          Returns a new feature object that's identical to this feature except its strength is given by s.
 void write(ExceptionlessOutputStream out)
          Writes a complete binary representation of the feature.
 void write(java.lang.StringBuffer buffer)
          Writes a string representation of this Feature to the specified buffer.
 void writeNameString(java.lang.StringBuffer buffer)
          Writes a string representation of this Feature's package, generating classifier, and identifier information to the specified buffer.
 
Methods inherited from class LBJ2.classify.RealFeature
conjunction, getByteStringValue, getStringValue, isDiscrete, makeReal, valueEquals
 
Methods inherited from class LBJ2.classify.Feature
childLexiconLookup, clone, compareNameStrings, conjunctWith, conjunctWith, depth, fromArray, getFeatureKey, getGeneratingClassifier, getPackage, getValueIndex, hasStringIdentifier, isConjunctive, isReferrer, lexReadFeature, readFeature, removeFromChildLexicon, setArrayLength, toString, toStringNoPackage, totalValues, writeNoPackage
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

identifier

protected ByteString identifier
The identifier string distinguishes this Feature from other Features.


value

protected double value
The real value is represented as a double.

Constructor Detail

RealPrimitiveFeature

protected RealPrimitiveFeature()
For internal use only.

See Also:
Feature.readFeature(ExceptionlessInputStream)

RealPrimitiveFeature

public RealPrimitiveFeature(java.lang.String p,
                            java.lang.String c,
                            ByteString i,
                            double v)
Sets both the identifier and the value.

Parameters:
p - The new real feature's package.
c - The name of the classifier that produced this feature.
i - The new RealPrimitiveFeature's identifier.
v - The new RealPrimitiveFeature's value.
Method Detail

hasByteStringIdentifier

public boolean hasByteStringIdentifier()
Determines if this feature contains a byte string identifier field.

Overrides:
hasByteStringIdentifier in class Feature
Returns:
true iff this feature contains a byte string identifier field.

isPrimitive

public boolean isPrimitive()
Determines if this feature is primitive.

Overrides:
isPrimitive in class Feature
Returns:
true iff this is primitive.

getStringIdentifier

public java.lang.String getStringIdentifier()
Retrieves this feature's identifier as a string.

Specified by:
getStringIdentifier in class Feature
Returns:
This feature's identifier as a string.

getByteStringIdentifier

public ByteString getByteStringIdentifier()
Retrieves this feature's identifier as a byte string.

Specified by:
getByteStringIdentifier in class Feature
Returns:
This feature's identifier as a byte string.

getStrength

public double getStrength()
Simply returns the value of value.

Specified by:
getStrength in class Feature

getFeatureKey

public Feature getFeatureKey(Lexicon lexicon,
                             boolean training,
                             int label)
Return the feature that should be used to index this feature into a lexicon. Specifically, we return this feature with a value of 0 so that the same features with different real values will map to the same object.

Specified by:
getFeatureKey in class Feature
Parameters:
lexicon - The lexicon into which this feature will be indexed.
training - Whether or not the learner is currently training.
label - The label of the example containing this feature, or -1 if we aren't doing per class feature counting.
Returns:
A feature object appropriate for use as the key of a map.

multiply

public RealFeature multiply(double m)
Returns a new feature object, the same as this one in all respects except the value field has been multiplied by the specified number.

Specified by:
multiply in class RealFeature
Parameters:
m - The multiplier.
Returns:
A new real feature whose value is the product of this feature's value and the specified multiplier.

withStrength

public Feature withStrength(double s)
Returns a new feature object that's identical to this feature except its strength is given by s.

Specified by:
withStrength in class Feature
Parameters:
s - The strength of the new feature.
Returns:
A new feature object as above, or null if this feature cannot take the specified strength.

encode

public Feature encode(java.lang.String e)
Returns a feature object in which any strings that are being used to represent an identifier or value have been encoded in byte strings.

Specified by:
encode in class Feature
Parameters:
e - The encoding to use.
Returns:
A feature object as above; possible this object.

hashCode

public int hashCode()
The hash code of a RealPrimitiveFeature is the sum of the hash codes of the containing package, the identifier, and the value.

Overrides:
hashCode in class Feature
Returns:
The hash code for this feature.

equals

public boolean equals(java.lang.Object o)
Two RealPrimitiveFeatures are equivalent when their containing packages and identifiers are equivalent and their values are equal.

Overrides:
equals in class Feature
Parameters:
o - The object with which to compare this feature.
Returns:
true iff the parameter is an equivalent feature.

classEquivalent

public boolean classEquivalent(Feature f)
Some features are functionally equivalent, differing only in the encoding of their values; this method will return true iff the class of this feature and f are different, but they differ only because they encode their values differently. This method does not compare the values themselves, however.

Overrides:
classEquivalent in class Feature
Parameters:
f - Another feature.
Returns:
See above.

compareTo

public int compareTo(java.lang.Object o)
Used to sort features into an order that is convenient both to page through and for the lexicon to read off disk.

Specified by:
compareTo in interface java.lang.Comparable
Specified by:
compareTo in class Feature
Parameters:
o - An object to compare with.
Returns:
Integers appropriate for sorting features first by package, then by identifier, then by value.

write

public void write(java.lang.StringBuffer buffer)
Writes a string representation of this Feature to the specified buffer.

Specified by:
write in class Feature
Parameters:
buffer - The buffer to write to.

writeNameString

public void writeNameString(java.lang.StringBuffer buffer)
Writes a string representation of this Feature's package, generating classifier, and identifier information to the specified buffer.

Overrides:
writeNameString in class Feature
Parameters:
buffer - The buffer to write to.

write

public void write(ExceptionlessOutputStream out)
Writes a complete binary representation of the feature.

Overrides:
write in class Feature
Parameters:
out - The output stream.

read

public void read(ExceptionlessInputStream in)
Reads the representation of a feaeture with this object's run-time type from the given stream, overwriting the data in this object.

Overrides:
read in class Feature
Parameters:
in - The input stream.

lexWrite

public java.lang.String lexWrite(ExceptionlessOutputStream out,
                                 Lexicon lex,
                                 java.lang.String c,
                                 java.lang.String p,
                                 java.lang.String g,
                                 java.lang.String si,
                                 ByteString bi)
Writes a binary representation of the feature intended for use by a lexicon, omitting redundant information when possible.

Overrides:
lexWrite in class Feature
Parameters:
out - The output stream.
lex - The lexicon out of which this feature is being written.
c - The fully qualified name of the assumed class. The runtime class of this feature won't be written if it's equivalent to c.
p - The assumed package string. This feature's package string won't be written if it's equivalent to p.
g - The assumed classifier name string. This feature's classifier name string won't be written if it's equivalent to g.
si - The assumed identifier as a string. If this feature has a string identifier, it won't be written if it's equivalent to si.
bi - The assumed identifier as a byte string. If this feature has a byte string identifier, it won't be written if it's equivalent to bi.
Returns:
The name of the runtime type of this feature.

lexRead

public void lexRead(ExceptionlessInputStream in,
                    Lexicon lex,
                    java.lang.String p,
                    java.lang.String g,
                    java.lang.String si,
                    ByteString bi)
Reads the representation of a feature with this object's run-time type as stored by a lexicon, overwriting the data in this object.

This method is appropriate for reading features as written by lexWrite(ExceptionlessOutputStream,Lexicon,String,String,String,String,ByteString).

Overrides:
lexRead in class Feature
Parameters:
in - The input stream.
lex - The lexicon we are reading in to.
p - The assumed package string. If no package name is given in the input stream, the instantiated feature is given this package.
g - The assumed classifier name string. If no classifier name is given in the input stream, the instantiated feature is given this classifier name.
si - The assumed identifier as a string. If the feature being read has a string identifier field and no identifier is given in the input stream, the feature is given this identifier.
bi - The assumed identifier as a byte string. If the feature being read has a byte string identifier field and no identifier is given in the input stream, the feature is given this identifier.