Praktischer Teil des Seminars

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Ebru Iscan, Andrea Kováčová Experimente Seminar "Experimentielle Evaluierung im IR"
der Universität Oldenburg
Seminar Experimentielle Evaluierung im Information Retrieval Aufgabenstellung, Ablauf, Probleme, Lösungen und Ergebnisse des Experiments Martin Jansson.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
Zusammenfassung des Kapitels 8
Praxisteil Seminar experimentelle Evaluierung in IR WS05/06 Gruppe A.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Abstrakte Klassen.
IF-ELSE-IF-Ketten Weiter mit PP..
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Imperative Programmierung Funktionen und Parameter
Automatisches Testen und Bewerten von Java-Klassen
Klausur „Diskrete Mathematik II“
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
DVG Gaußscher Algorithmus1 Gaußscher Algorithmus.
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
Gaußscher Algorithmus
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Eigene Metoden (Turtle-Paket (C) Taulien 2003)
Bestimmung des ggT zweier Zahlen
Struktogramme IF-ELSE FOR – Schleife
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Kollektionen in Java Aufzählungstypen, Generische Typen
Programme dokumentieren mit JavaDoc
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Technische Informatik Reihungen – Felder - Arrays.
1.3 Klassen und Beziehungen
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Unterprogramme in JAVA
Optimale Ursprungsgerade
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java Programme nur ein bisschen objektorientiert.
Vererbung.
November 18 Informatik Kurse
Von Cem, Maurice und lars
Grundkurs Informatik mit Java
Kleines 1x1 ABCD Aufgaben Kleines 1x1 A · 8 = Lösung.
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
Übersicht und Benutzung von Sphinx
 Präsentation transkript:

Praktischer Teil des Seminars Gruppe C Sebastian Raßmann Christian Michele

Aufgabenstellung 6 Aufgaben: DTF vs. DTF max. 5 DL vs. CORI 5 DTF: BM 25 vs. TF.IDF CORI: nur BM25 nur DTF: c=1 vs. c=0.5 nur DTF: P0=1

Lösung der 6 Aufgaben Starten der Versuchsreihe über ein Shell Skript Verschiedene Parameter erzeugen die gewünschten Testläufe: public ComputeForTopic(double c, double P0, String usedStemen, int flagDTF) Dadurch ist war es möglich die gesamte Aufgabenreihe zu automatisieren

Lösung der 6 Aufgaben /* Args[0] = c Parameter * Args[1] = p0 Parameter * Args[2] = stemen * Args[3] = maxNumDTF(5),maxNumDTF(10), maxNumDTF() */ new ComputeForTopic( Double.parseDouble(args[0]), Double.parseDouble(args[1]), args[2], Integer.parseInt(args[3])); }

Aufgabenstellung Vorbereitung einmalig: Für 100 Topics: Indexierung der 24 Kollektionen Ressource Descriptions erstellen Für 100 Topics: Kosten berechnen Ressource Selection Retrieval

Allgemeines zu Anfang Java: Aufgabenstellung Über 100 Klassen im Package Sehr unübersichtlich (Navigation im fremden Code) Benötigte Klassen und Methoden nicht ausreichend dokumentiert Aufgabenstellung Es wurde nicht ausreichend klar, was getan werden musste

Allgemeines zu Anfang Testlauf über 24 Collections mit jeweils 100 Topics Lösung in Java: Collections: ap88_1a – ap88_8c mit jeweils Topic: 051 – 150 for(int i=1; i<9; i++){ for(int j=0; j<3; j++){ String abc = ""; if(j==0){abc="a";} if(j==1){abc="b";} if(j==2){abc="c";} String coll= „ap88_“+i+abc for (int h = 51; h<151; h++){ String collNr=h; if (h<100){ collNr = „0“+h;}

Indexierung Aufgabenstellung: Lösung: Veränderung der Klasse IndexCollection.java Aufteilung der Dokumente in Doc ID Attribute Name (hier: „Text“) Attribut Wert (hier: Textinhalt) Lösung: für jede Collection über einen Tokenizer Aufteilung in die geforderten Parameter CODE: StringTokenizer st = new StringTokenizer(content, "<>" ); String[] tokens = new String[3]; int i = 0; tokens[0] = ""; tokens[2] = ""; while (st.hasMoreTokens()){ tokens[i] = st.nextToken(); i++; } ir.addToIndex(tokens[0]); ir.addToIndex(tokens[0],"text",tokens[2]);

Indexierung aufgetretene Fehler: nach Ablauf der Experimente und unklaren Ergebnissen durch Nachfrage ergeben, dass bei der Indexierung ein Fehler aufgetreten ist: fehlende Gewichtung bei der Indexierung

TF IDF Aufgabenstellung: Lösung: TF IDF implementieren in der Klasse TextExpDT.java: If Bedingung mit STEMEN_TFIDF erweitert um eine neue Bedingung: rule = Parser.parseRule("maxtf(D,M) :- max(M,TF,{ tf(D,~,TF) })."); Hier musste das TF im Code durch eine Variable ersetzt werden, die dann das Präfix enthält auch das MAXTF musste durch eine entsprechende Variable ersetzt werden. Der restliche Code konnte von STEMEN_BM25 kopiert werden.

TF IDF aufgetretene Fehler zuerst haben wir die TFIDF und MAXTF nicht als Variable eingefügt und folgenden Fehler erhalten: java.sql.SQLException: General error message from server: "Table 'exp_c.tf' doesn't exist" at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1997) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278) at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1224) at com.mysql.jdbc.Connection.execSQL(Connection.java:2248) at com.mysql.jdbc.Connection.execSQL(Connection.java:2196) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1259) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1205)

Starten der Indexierung - Probleme Starten der Indexierung über Putty.   Starten der Indexierung auf dem Unix Rechnerpool. Probleme: Eine Netzwerkverbindung muss über die gesamte Zeit der Indexierung vorhanden sein da Putty die Session schließt und alle Jobs beendet. (Kein Test vom Laptop möglich -> Zeitaufwand!) Der Unix Rechnerpool ist schwer zu durchschauen Es ist möglich sich mit royanne auch auf z.B charlotte Server einzulogen. Es ist schwer zu erkennen, dass auf den Workstations ein Starten nicht möglich ist: Fehlermeldung: Tabellen werden leer erzeugt. Falsch einloggen: Fehler: die TMP Dateien werden nicht erzeugt.

Retrieval Aufgabenstellung: Lösung Kosten berechnen Ressource Selection Retrieval Lösung Umschreiben der Klasse ComputeForTopic.java

Kosten berechnen Implementieren von ComputeCosts ursprünglicher Code von Testcollection auf die 24 Collections angepasst PIRE Object für aktuelle Collection erzeugen in HashMap die Zuordnung von PIRE auf DL speichern dann Parameter p0 und c speichern für jede der 150 Topics nun die Kosten berechnen

PIRE pire = ExpUtils.createPIRE1(coll); DTFPDatalogConfig config = new DTFPDatalogDefaultConfig("exp_", pire.getSchema(), ExpUtils.getDB()); DTFPDatalogRDStorage storage = new DTFPDatalogRDStorage(config); DTFCostEstimator costEstimator = new DTFRPCostEstimator(storage); // DL Objekt von aktueller Kollektion betrachten DL dl = new GenericDL(coll); dls.add(dl); dlAufPire.put(dl,pire); // Parameter setzen storage.deleteParameters(dl,"parameter('c1','_')."); storage.deleteParameters(dl,"parameter('P0','_')."); storage.storeParameters(dl,"parameter('c1'," + c + ")."); storage.storeParameters(dl,"parameter('P0'," + P0 + ")."); for(int k=51; k<=150; k++){ String topicName = k+""; if(k<100){topicName="0"+topicName;} String queryID = topicName; WSumQuery query = Queries.getWSumQuery(queryID, "text", usedStemen); // Kosten berechnen Map costs = costEstimator.estimateCosts(dls, query);

Ressource Selection Implementieren von ComputeRS Ursprünglicher Code von Testcollection auf die 24 Collections angepasst FlagDTF: Flag für die variable Gestaltung der MaxNumDLDTFRS(*) auch hier für jede der 150 Topics // Resource selection RS rs = null; switch(flagDTF){ case 1: rs = new MaxNumDLDTFRS(5);break; case 2: rs = new MaxNumDLDTFRS(10);break; default: rs = new DTFRS();break; } PropertyMap cp = new HashPropertyMap(); cp.setDouble("rs.costs.relevance", 1); ResourceSelection sel = rs.computeSelection(dls, costs, 300, cp);

Retrieval Implementieren von PerformRetrieval angepasst an die 24 Collections und für jede der 150 Topics wird der folgende Code ausgeführt die Schleife durchläuft die in der Ressource Selection gefundenen DL Objekte und ermittelt anhand der Hash Map die entsprechenden PIRE Objekte es wird das Ergebnis des Queries in einer Datei gespeichert for (Iterator iter = sel.keys(); iter.hasNext();) { dl = (DL) iter.next(); int numDocs = sel.getNumDocs(dl); query.setNumDocs(numDocs); PIRE ir = (PIRE)dlAufPire.get(dl); List result = ir.getResult(query); // TODO: ausgabedatei individuell gemacht TRECResult.writeResult( new File("result_c_"+c+"_p0_"+P0+"_"+topicName+"_"+usedStemen), queryID, result, true); }

Probleme Beim Erzeugen der ComputeForTopic.java sind folgende Probleme aufgetreten: Das erzeugte PIRE Objekt wird zwar in einer Hash Map gespeichert, aber beim Kosten berechnen wird nur jeweils ein PIRE Objekt verwendet; für eine Liste von DL Objekten  Sinn?? Sinnvolles Speichern der Datei ? (viele Schleifendurchläufe notwendig)

Weitere Probleme Weitere Probleme hatten wir leider mit der Linux Umgebung Befehle der Shell sind/waren uns unbekannt Zusammenhang Java – SQL Datenbank Prozess / Java Prog. (nicht) erfolgreich? Hilfe von Kollegen mit Shell Skript, dadurch aber neu Probleme (Rechte, Fehlermeldungen) Speicherort Datenmenge (140 MB und das nur für einen Aufgabenteil)