NGram erstellen - Scheitere schon an der Planung

magicx

Neues Mitglied
Guten Tag,

ich soll für eine ziemlich umfangreiche Aufgabe (für mich ist sie zumindest sehr umfangreich) eine NGram Klasse erstellen. Diese soll alle Informationen beinhalten um das n-gram zu speichern.

Dazu habe ich folgende Teilaufgaben:

a) Konstruktor
Das String[ ] soll das komplette tokenisierte NGram beinhalten. Das letzte String-Feld
hat den 'Token' zum Inhalt.
public NGram(String[ ] contents)

b) toString/fromString
Zur spateren Serialisierung sollen die Instanzen ihre vollstandige Information mithilfe
der toString-Methode in einen String zu wandeln.
public String toString()
In einer weiteren Klassen-Methode soll aus einem String eine NGram-Objekt geparst
werden.
public static NGram fromString(String input)

Diese beiden Methoden sollen 'Hand in Hand' gehen konnen. Folgender Code sollte also
problemlos funktionieren:
St r ing [ ] con = new St r ing [ ] f " this " , "is" , " just " , "an" , " example " g ;
NGram n = new NGram( con ) ;
NGram m = NGram. f romSt r ing ( n . t oSt r ing ( ) ) ;
m. equa l s (n ) ; // true
c) equals/hashCode
Um die NGramme spater in Kombination mit Collections benutzen zu konnen mussen
die Methoden hashCode und equals sinnvoll uberschrieben werden. Beachten Sie hierbei,
dass die equals-Methode ein Object ubergeben bekommen muss.
public boolean equals(Object other)
Die equals-Methode sollte prufen, ob es sich um die selbe Klasse handelt und ob die
Inhalte der NGram-Instanzen die selben sind.
public int hashCode()

Die HashCode-Methode sollte fur zwei Instanzen, die sich nach equals gleichen den selben
hashCode-Wert zuruckgeben. Fur zwei Instanzen, die sich unterscheiden sollte ein
anderer HashCode-Wert zuruckgegeben werden. Beachten Sie hierfur am einfachsten die
Konventionen (als Pseudocode) aus dem Foliensatz aus Sitzung 3, Folie 14.
d) NGram-Kontext prufen
Schreiben Sie eine Methode, die den Kontext des NGrams mit einem gegebenen Kontext
vergleicht. Dies wird spater relevant, wenn wir von allen n-Grammen diejenigen
auswahlen wollen, die in der Lage sind gute Tokens vorherzusagen. Die Methode soll
folgender Spezikation genugen:
public boolean checkContext(String[ ] context)
Die Methode soll true zuruckliefern, falls der Kontext des NGrams mit dem ubergebenen
Kontext ubereinstimmt. Die Methode konnte beispielsweise so getestet werden:
St r ing [ ] con = new St r ing [ ] f " this " , "is" , " just " , "an" , " example " g ;
NGram n = new NGram( con ) ;
St r ing [ ] l o c a l c o n t e x t = new St r ing [ ] f " this " , "is" , " just " , "an" g ;
n . checkContext ( l o c a l c o n t e x t ) ; // true
St r ing [ ] l o c a l c o n t e x t = new St r ing [ ] f " this " , "is" , " just " , " poo " g ;
n . checkContext ( l o c a l c o n t e x t ) ; // false

Da ich lediglich Einführungsveranstaltung zu Python und C++ hatte, stellt mich das nun vor eine ziemlich harte Aufgabe.
Erste Java kentnisse sind vorhanden + ein Umgang, welcher es mir erlaubt Pseudocode bzw einen strukturierten Plan umsetzen zu können.
Jedoch verstehe ich bei dem ganzen Text erstmal garnichts.

Hoffe hier einige Tips bekommen zu können, welche mir den Einstieg in diese Aufgabe erleichtern bzw einen kleinen Leitfaden zur vorgehensweise bieten können.

Vielen Dank schonmal.
 

Neue Themen


Oben