LBJ2.classify
Class RealPrimitiveStringFeature

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

public class RealPrimitiveStringFeature
extends RealFeature

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

See Also:
Serialized Form

Field Summary
protected  java.lang.String 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 RealPrimitiveStringFeature()
          For internal use only.
  RealPrimitiveStringFeature(java.lang.String p, java.lang.String c, java.lang.String 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 RealPrimitiveStringFeatures 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.
 int hashCode()
          The hash code of a RealPrimitiveStringFeature is the sum of the hash codes of the containing package, the identifier, and the value.
 boolean hasStringIdentifier()
          Determines if this feature contains a string identifier field.
 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, hasByteStringIdentifier, 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 java.lang.String identifier
The identifier string distinguishes this Feature from other Features.


value

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

Constructor Detail

RealPrimitiveStringFeature

protected RealPrimitiveStringFeature()
For internal use only.

See Also:
Feature.readFeature(ExceptionlessInputStream)

RealPrimitiveStringFeature

public RealPrimitiveStringFeature(java.lang.String p,
                                  java.lang.String c,
                                  java.lang.String 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 RealPrimitiveStringFeature's identifier.
v - The new RealPrimitiveStringFeature's value.
Method Detail

hasStringIdentifier

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

Overrides:
hasStringIdentifier in class Feature
Returns:
true iff this feature contains a 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 RealPrimitiveStringFeature 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 RealPrimitiveStringFeatures 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.