dataanalysis.classifiers
Class Classifier

java.lang.Object
  |
  +--dataanalysis.databases.DatabaseElement
        |
        +--dataanalysis.classifiers.Classifier
Direct Known Subclasses:
BayesClassifier, DummyClassifier, KeywordClassifier, KNNClassifier, LinkPageClassifier, NetEntityTypeClassifier, RocchioClassifier, SVMClassifier, URLClassifier

public abstract class Classifier
extends DatabaseElement

koordiniert den Ablauf, bei der Klassifizierung von Dokumenten. Hierbei hat der Classifier die M?glichkeit auf den Vectorizer oder das Dictionary zur?ckzugreifen. Der Classifier selbst kann trainiert werden (dabei finden sowohl negative wie auch positive Beispiele ihre Anwendung). Anhand der erzeugten Trainingsergebnisse besteht die M?glichkeit sp?tere Klassifikationen pr?ziser durchf?hren zu k?nnen.

Vorgehensweise fuer neue Klassifizierer

Wird ein neuer Klassifizierer von dieser Klasse abgeleitet, so sollten die folgenden Punkte beachtet werden:

Folgende Methoden sollten angepasst werden :

Version:
1.8 (28.10.1999)
Author:
Andre Masloch
See Also:
Serialized Form

Field Summary
protected  java.util.TreeMap documents
          Der Vektor soll aus Dokumentenvektoren bestehen.
protected  Dictionary[] moreDictionaries
          Sollte der Klassifikator noch weitere Woerterbuecher benoetigen, so koennen diese hier abgespeichert werden.
protected  java.lang.String[] moreDictionariesNames
          Die Namen der evtl.
protected  ClassifierDatabase myDatabase
          Ueber diese Datenbank greift der Klassifikator gegebenenfalls auf die Datenbank zu.
 Vectorizer theVectorizer
          Das ist der Vektorisierer, der aus den Dokumenten den Dokumentvektor erzeugt.
 java.lang.String theVectorizerName
          Der Name des Vektorisierers.
protected  double THRESHOLD
          legt den Wert fest, ab dem ein Dokument als zugehoerig gilt.
Dieser Wert ist nicht verbindlich fuer alle abgeleiteten Objekte, d.h.

protected  java.util.TreeMap untrainedExamples
          Hier werden die Beispiele gespeichert, die der Klassifizierer noch zum Training benutzt.
 Dictionary wordDictionary
          Hier wird das Feature-Woerterbuch fuer den Klassifikator abgespeichert.
 java.lang.String wordDictionaryName
          Der Name des Feature-Woerterbuches.
 
Fields inherited from class dataanalysis.databases.DatabaseElement
elementname
 
Constructor Summary
Classifier()
          initialisiert den Klassifizierer
Classifier(ClassifierDatabase the_database)
          initialisiert den Klassifizierer.
 
Method Summary
 int addExample(NetEntity example, double evaluation)
          erlaubt es eine Menge von Beispielen example als Trainingsmenge dem Klassifizierer zur Verf?gung zu stellen.
Das Beispiel wird (als String) in die untrainedExamples eingefuegt.

 int addExample(java.lang.String example, double evaluation)
          Diese Methode fuegt ein Dokument (String) zum Klassifizierer hinzu und sollte nur zu Testzwecken benutzt werden.
Das Beispiel wird (als String) in die untrainedExamples eingefuegt.

 java.lang.String checkVariables()
          Ueberprueft die transienten Variablen und setzt sie gegebenfalls.
abstract  NetEntity classify(NetEntity document)
          dient der Klassifizierung von Texten.
protected  Documentvector convert(Documentvector v)
          konvertiert einen Dokumentvektor so, wie der Klassifizierer ihn benoetigt.
 double getThreshold()
          Gibt den Wert der Variablen THRESHOLD zurueck.
 void setDatabase(ClassifierDatabase theDB)
          setzt die Datenbank, ueber die der Klassifizierer auf Dictionaries und Vectorizer zugreift.
 void setThreshold(double theThreshold)
          Diese Methode legt den Schwellwert des Klassifizierers fuer die uebergebenen Trainingsbeispiele fest.
 java.lang.String toString()
           
abstract  int train()
          startet das Training des Klassifikators auf den vorhandenen Daten und den neu durch addExample(NetEntity,double) hinzugef?gten Beispielen.


 
Methods inherited from class dataanalysis.databases.DatabaseElement
getElementname, logMessage, setElementname
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

THRESHOLD

protected double THRESHOLD
legt den Wert fest, ab dem ein Dokument als zugehoerig gilt.
Dieser Wert ist nicht verbindlich fuer alle abgeleiteten Objekte, d.h. es steht dem einzelnen Klassifizierer frei, diesen Wert zu benutzen.
Als Standardwert wird 0.5 vorgegeben. Setzen ist ueber die Methode setThreshold(double) moeglich.


documents

protected java.util.TreeMap documents
Der Vektor soll aus Dokumentenvektoren bestehen.

untrainedExamples

protected java.util.TreeMap untrainedExamples
Hier werden die Beispiele gespeichert, die der Klassifizierer noch zum Training benutzt. (Warteschlange fuer addExample).
Als Schluessel werden die DokumentStrings benutzt, als Werte die Klassifikationsergebnisse.
Since:
1.2


myDatabase

protected ClassifierDatabase myDatabase
Ueber diese Datenbank greift der Klassifikator gegebenenfalls auf die Datenbank zu. Ist der Klassifikator abgespeichert worden, gehen alle Dictionaries und der Vektorisierer "verloren", da nur die Namen abgespeichert werden. Deshalb muessen diese evtl. ueber die Datenbank geholt werden.

theVectorizer

public transient Vectorizer theVectorizer
Das ist der Vektorisierer, der aus den Dokumenten den Dokumentvektor erzeugt.

theVectorizerName

public java.lang.String theVectorizerName
Der Name des Vektorisierers.
Since:
1.2

wordDictionary

public transient Dictionary wordDictionary
Hier wird das Feature-Woerterbuch fuer den Klassifikator abgespeichert.

wordDictionaryName

public java.lang.String wordDictionaryName
Der Name des Feature-Woerterbuches.
Since:
1.2

moreDictionaries

protected transient Dictionary[] moreDictionaries
Sollte der Klassifikator noch weitere Woerterbuecher benoetigen, so koennen diese hier abgespeichert werden.

moreDictionariesNames

protected java.lang.String[] moreDictionariesNames
Die Namen der evtl. zusaetzlich benoetigten Woerterbuecher
Since:
1.2
Constructor Detail

Classifier

public Classifier()
initialisiert den Klassifizierer

Classifier

public Classifier(ClassifierDatabase the_database)
initialisiert den Klassifizierer. nach der Grundinitialisierung wird versucht, die Vektorisierer und Dictionaries aufgrund der abgespeicherten Namen aus der Datenbank zu holen.
Parameters:
theDatabase - ist die Datenbank, in der der Klassifizierer abgespeichert wird. (N?tig, um Zugriff auf die anderen Datenbanken zu haben.)
Method Detail

train

public abstract int train()
startet das Training des Klassifikators auf den vorhandenen Daten und den neu durch addExample(NetEntity,double) hinzugef?gten Beispielen.
Returns:
die Anzahl der Dokumente, mit denen der Klassifizierer trainiert wurde.


classify

public abstract NetEntity classify(NetEntity document)
dient der Klassifizierung von Texten. Das ?bergebene Dokument document wird unter zu Hilfenahme des Vektorisieres, des Lexikons und der Trainingsmenge klassifiziert und eingestuft.
Die Klassifizierung wird in das Dokument mittels der Methode NetEntity.addClassification(String,double) des NetEntity-Objektes eingetragen. Als Name wird der Name des Klassifikators uebergeben (DatabaseElement.elementname).
Parameters:
document - steht f?r den Text, den der Klassifizierer klassifizieren soll.
Returns:
Ausgabe des klassifizierten Dokuments NetEntity. Sollte das Ergebnis der Klassifikation nicht verfuegbar sein, weil z.B. die Exception NetResultReloadFailedException auftritt, so traegt sich der Klassifizierer nicht im NetEntity ein!
See Also:
Vectorizer, Dictionary


addExample

public int addExample(NetEntity example,
                      double evaluation)
               throws NetResultReloadFailedException
erlaubt es eine Menge von Beispielen example als Trainingsmenge dem Klassifizierer zur Verf?gung zu stellen.
Das Beispiel wird (als String) in die untrainedExamples eingefuegt.
Parameters:
example - steht f?r ein Beispiel, dass dem Klassifizierer als Trainingsmenge zur Verf?gung gestellt wird.
evaluation - steht f?r die Bewertung des Beispiels.
Returns:
Kodierung f?r eine Meldung (optional).
Throws:
NetResultReloadFailedException - ist weitergeleitet von NetEntity.getText()


addExample

public int addExample(java.lang.String example,
                      double evaluation)
Diese Methode fuegt ein Dokument (String) zum Klassifizierer hinzu und sollte nur zu Testzwecken benutzt werden.
Das Beispiel wird (als String) in die untrainedExamples eingefuegt.
Parameters:
example - beinhaltet das Dokument, da? hinzugef?gt werden soll.
evaluation - ist die Bewertung f?r das Beispiel.


setDatabase

public void setDatabase(ClassifierDatabase theDB)
setzt die Datenbank, ueber die der Klassifizierer auf Dictionaries und Vectorizer zugreift.
Since:
1.1

setThreshold

public void setThreshold(double theThreshold)
Diese Methode legt den Schwellwert des Klassifizierers fuer die uebergebenen Trainingsbeispiele fest. Hat ein Dokument eine hoehere Bewertung als dieser Schwellwert, so wird es als zugehoerig angesehen, ansonsten nicht.
Parameters:
theThreshold - uebergibt den gewuenschten Schwellwert des Klassifizierers.
Dabei muss gelten : 0.0 <= theThreshold="theThreshold" <="1.0</code">. Ansonsten wird der neue Wert nicht uebernommen!
Since:
1.2


getThreshold

public double getThreshold()
Gibt den Wert der Variablen THRESHOLD zurueck.
Returns:
den aktuellen THRESHOLD-Wert des Klassifizierers zurueck.
Since:
1.6 (04.10.1999)

convert

protected Documentvector convert(Documentvector v)
konvertiert einen Dokumentvektor so, wie der Klassifizierer ihn benoetigt. Da die Dokumentvektoren vom Vektorisierer mit TF-Werten zurueckgeliefert werden, werden die Werte in dieser Methode fuer den Klassifizierer aufbereitet. Denkbar ist z.B. eine Konvertierung zu TF-IDF-Werten, die der Vektorisierer aufgrung fehlenden Wissens nicht berechnen kann.
Standardmeassig wird lediglich der uebergebene Documentvector dupliziert.

Diese Methode sollte vom Shellbenutzer fuer neue Klassifikatoren an die eigenen Beduerfnisse angepasst werden.
Returns:
eine neue Documentvector-Instanz mit den alten Werten.
Since:
1.4




toString

public java.lang.String toString()
Overrides:
toString in class DatabaseElement

checkVariables

public java.lang.String checkVariables()
Ueberprueft die transienten Variablen und setzt sie gegebenfalls.
Returns:
null, wenn erfolgreich, ansonsten den Namen der ueberprueften Variable.
Since:
1.5 (22.9.1999)