Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση:

Σχετικά έγγραφα
Posting File. D i. tf key1 [position1 position2 ] D j tf key2... D l.. tf keyl

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

Μάθημα 2 [10/11/2015]

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #16

10.1 Γενικά για τα streams

Φροντιστήριο 4. Άσκηση 1. Λύση. Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών HY463 - Συστήµατα Ανάκτησης Πληροφοριών Εαρινό Εξάµηνο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

0 The quick brown fox leaped over the lazy lazy dog 1 Quick brown foxes leaped over lazy dogs for fun

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Week 9: Input / Output

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Εισαγωγή στον Προγραμματισμό

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

ΑΣΚΗΣΗ Α. Δεικτοδότηση Συλλογής Κειμένων σε Ανεστραμμένο Ευρετήριο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Προτεινόμενες Λύσεις 1 ης Σειράς Ασκήσεων (Αξιολόγηση της Αποτελεσματικότητας της Ανάκτησης & Μοντέλα Ανάκτησης)

Λύση (από: Τσιαλιαμάνης Αναγνωστόπουλος Πέτρος) (α) Το trie του λεξιλογίου είναι

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών HY463 - Συστήματα Ανάκτησης Πληροφοριών Εαρινό Εξάμηνο. Φροντιστήριο 3.

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Αρχεία και Ρεύματα. Αρχεία

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Generics και ArrayLists

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

Το εσωτερικό ενός Σ Β

Αντικειμενοστραφής Προγραμματισμός

ΛΥΣΕΙΣ 2 ης ΣΕΙΡΑΣ ΑΣΚΗΣΕΩΝ

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Επεξεργασία Ερωτήσεων

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Επεξεργασία Ερωτήσεων

Κλάσεις και Αντικείµενα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

Εργαστήριο 7 - Άσκηση - Ανάλυση

Τµήµα Πληροφορικής. Υλοποίηση LRU Cache ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ - ΕΡΓΑΣΙΑ 4. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Γενικά περί Caching

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης. Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Δομές ελέγχου ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Τρίτη 1 / 12 / 2015 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Θέμα : Retrieval Models. Ημερομηνία : 9 Μαρτίου 2006

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

Transcript:

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών 2009-2010 Φθινοπωρινό Εξάμηνο Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση: Σκοπός αυτής της άσκησης είναι να κατανοήσετε κάποιες βασικές έννοιες και τεχνικές, φτιάχνοντας εξ αρχής ένα δικό σας Σύστημα Ανάκτησης Πληροφοριών. Για να δοκιμάσετε το σύστημα σας, μπορείτε να χρησιμοποιήσετε μια συλλογή εγγράφων (κειμένου και ιστοσελίδων) που θα σας δοθεί. Μπορείτε να ακολουθήσετε τα εξής βήματα αφού διαβάσετε ολόκληρη την εκφώνηση της άσκησης: ΦΑΣΗ Α Ευρετηρίαση(Π1-Π5) Π1) (5) Γράψτε ένα πρόγραμμα σε Java το οποίο να μπορεί να διαβάζει αρχεία κειμένου και να τυπώνει το πλήθος των διαφορετικών λέξεων και την κάθε διαφορετική λέξη συνοδευόμενη από το πλήθος εμφανίσεών της 1. Το πρόγραμμα σας θα πρέπει να αγνοεί τις λέξεις αποκλεισμού (περιλαμβάνονται στο αρχείο stopwords.txt), τους αριθμούς και τα σημεία στίξης που πιθανόν να εμφανίζονται σε κάποια από τα έγγραφα της συλλογής. Π2) (2) Επεκτείνετε το σύστημα ώστε να μπορεί να διαβάσει όχι μόνο ένα, αλλά πολλά αρχεία (π.χ. όσα βρίσκονται σε ένα συγκεκριμένο φάκελο του λειτουργικού συστήματος). Να μπορεί να κάνει ότι περιγράφεται στο (Π1) (τόσο για κάθε αρχείο ξεχωριστά, όσο και συγκεντρωτικά) για όλα τα αρχεία του φακέλου (ήτοι να μπορεί να μεταχειριστεί το σύνολο των αρχείων σαν να ήταν ένα μεγάλο αρχείο). Π3) (4) Επεκτείνετε το σύστημα ώστε να δημιουργεί ένα φάκελο CollectionIndex στον οποίο να δημιουργεί ένα αρχείο με όνομα VocabularyFile.txt που θα καταγράφει όλες τις διαφορετικές λέξεις σε αύξουσα (λεξικογραφική) σειρά. Δίπλα σε κάθε λέξη να καταγράφεται το πλήθος των εγγράφων στα οποία εμφανίζεται (document frequency-df). Π4) (5) Επεκτείνετε το σύστημα ώστε να δημιουργεί ένα ακόμη αρχείο με όνομα DocumentsFile.txt στον φάκελο CollectionIndex που θα καταγράφει για κάθε αρχείο της συλλογής μία τριάδα αποτελούμενη από ένα μοναδικό αριθμητικό αναγνωριστικό, το πλήρες μονοπάτι του αρχείου, και τον τύπο του αρχείου (txt, htm, jpg, png). Οι εγγραφές αυτές να είναι καταγεγραμμένες σε αύξουσα σειρά ως προς το αναγνωριστικό του εγγράφου. Π5) (10) Επεκτείνετε το σύστημα ώστε να μπορείτε να κρατάτε πληροφορία σχετική με τα έγγραφα που εμφανίζεται η κάθε λέξη. Μπορείτε να ακολουθήσετε μία από τις δύο επιλογές που περιγράφονται παρακάτω. i) Μπορείτε να δημιουργείτε ένα αρχείο για κάθε λέξη (που εμφανίζεται στο VocabularyFile.txt) όπου για κάθε έγγραφο που εμφανίζεται η λέξη θα έχετε μία εγγραφή που θα περιέχει: a. το αναγνωριστικό του εγγράφου στο οποίο εμφανίζεται η λέξη αυτή. b. το tf της λέξης στο αντίστοιχο έγγραφο c. τις θέσεις εμφάνισης της λέξης στο έγγραφο αυτό 1 Μπορείτε να δείτε (ή να θυμηθείτε) τα παραδείγματα που υπάρχουν στο http://www.csd.uoc.gr/~hy252/lectures07/pdf/cs252collectionclassesinterfaces07.pdf 1

d. ένα δείκτη προς τις αντίστοιχες πληροφορίες του συγκεκριμένου εγγράφου στο DocumentsFile.txt. Τα αρχεία αυτά θα δημιουργούνται στο φάκελο CollectionIndex/InvertedLists. ii) Στην περίπτωση όπου επιθυμείτε να μην κρατάτε ένα αρχείο για κάθε λέξη, έχετε την δυνατότητα να χρησιμοποιήσετε ένα μόνο αρχείο (ας το πούμε PostingFile.txt) που θα περιέχει την παραπάνω πληροφορία για όλες τις λέξεις. Στην περίπτωση αυτή, θα χρειαστεί να καταγράφετε για κάθε λέξη t i στο αρχείο VocabularyFile.txt άλλο έναν αριθμό ο οποίος θα περιγράφει τη θέση στο αρχείο PostingFile.txt από την οποία αρχίζουν τα στοιχεία που αφορούν τη λέξη t i (πεδίο pos στο Vocabulary File στην Εικόνα 1). Για ευκολία, θεωρούμε ότι τα postings όλων των όρων μπορούν να κρατηθούν στην μνήμη πριν αυτά γραφούν στο Posting File στο τέλος της ευρετηρίασης (άρα δεν χρειάζεται δηλαδή να εφαρμόσετε partial indexing and merging όπως έχετε διδαχθεί στο μάθημα). Εικόνα 1. Το ανεστραμμένο ευρετήριο Αποτίμηση επερωτήσεων(π6-π10) Π6) (5) Επεκτείνετε το σύστημα σας ώστε να μπορείτε να πραγματοποιήσετε αποτίμηση επερωτήσεων βάσει του ανεστραμμένου ευρετηρίου που έχετε κατασκευάσει. Με αυτόν τον τρόπο θα επιβεβαιώσετε ότι έχετε κατασκευάσει το ευρετήριο σας σωστά. Προς το παρόν δεν ενδιαφερόμαστε για την κατάταξη των εγγράφων (με βάσει κάποιο συγκεκριμένο μοντέλο ανάκτησης), απλώς θέλουμε να ανακτούμε τα έγγραφα που εμφανίζεται μία λέξη που δίνει ο χρήστης ως επερώτηση. Πριν αρχίσετε την αποτίμηση επερωτήσεων, βεβαιωθείτε ότι έχετε δημιουργήσει τα απαραίτητα αρχεία στον φάκελο CollectionIndex. Στην συνέχεια, φορτώστε το λεξιλόγιο (Vocabulary File) στη μνήμη. Τα postings όμως κάθε όρου (τα αρχεία στον φάκελο Collection/InvertedIndex ή εάν έχετε μόνο ένα αρχείο το Posting File) καθώς και πληροφορίες σχετικά με τα έγγραφα της συλλογής (Documents File) θεωρούμε ότι έχουν μεγάλο μέγεθος και δεν πρέπει να κρατηθούν στην μνήμη, γι αυτό και παραμένουν στα αντίστοιχα αρχεία στον δίσκο. Επεκτείνετε το σύστημα που φτιάξατε έτσι ώστε: Π7) (5) Nα διαβάζει μία ή περισσότερες λέξεις (λογική έκφραση) από την κονσόλα και να τυπώνει την απάντηση ως προς το λογικό μοντέλο (boolean retrieval model). Π8) (10) Nα διαβάζει μία ή περισσότερες λέξεις από την κονσόλα (δηλαδή μια επερώτηση σε φυσική γλώσσα) και να τυπώνει την απάντηση ως προς το διανυσματικό μοντέλο (vector space model). Π9) (5) Να κάνει ό,τι το (Π9) αλλά η απάντηση να υπολογίζεται βάσει του Okapi BM25 2. Π10) (9) Συντάξτε γραπτή αναφορά με μετρήσεις από πειράματα που αφορούν την επίδοση του συστήματος (χωρικές απαιτήσεις χρονικές αποκρίσεις). H αναφορά σας πρέπει να περιέχει τις εξής γραφικές παραστάσεις: α) μία που να απεικονίζει το χώρο που καταλαμβάνει το ευρετήριο στο δίσκο 2 http://en.wikipedia.org/wiki/probabilistic_relevance_model_(bm25) 2

σε συνάρτηση με το πλήθος των εγγράφων καθώς και μία β) για τον ίδιο άξονα y σε συνάρτηση με το μέγεθος σε bytes των εγγράφων. Στη συνέχεια δώστε τα εξής γραφήματα: γ) Ένα που να απεικονίζει το συνολικό χρόνο ευρετηρίασης σε συνάρτηση με το πλήθος των εγγράφων, δ) ένα που να απεικονίζει το μέσο χρόνο απόκρισης σε συνάρτηση με το πλήθος των λέξεων της επερώτησης και ε) ένα που να απεικονίζει το μέσο πλήθος των αποτελεσμάτων σε συνάρτηση με το πλήθος των λέξεων της επερώτησης. Για τον υπολογισμό του συνολικού μέσου χρόνου απόκρισης και μέσου πλήθους αποτελεσμάτων (δ,ε) να τεθούν τουλάχιστον 100 τυχαίες επερωτήσεις για κάθε πληθικότητα των όρων (100 επερωτήσεις με ενα όρο, 100 επερωτήσεις με δύο όρους κοκ). Η επιλογή και ο συνδυασμός των όρων των επερωτήσεων να γίνεται από το VocabularyFile.txt με τυχαίο τρόπο. index disk space indexing mean time 10 100 1000 #docs #docs (α,β) (γ) mean time result set cardinality Παρατηρήσεις: 1 2 3 #terms 1 2 3 #terms (δ) (ε) Αν είχατε υλοποιήσει στελέχωση και αποκλεισμό λέξεων, τότε εφαρμόστε αυτές τις λειτουργίες και στις επερωτήσεις (λέξεις εισόδου) του χρήστη. Καθώς ξεκινά το πρόγραμμα και αφού φορτωθεί το λεξιλόγιο στην μνήμη, ο χρήστης θα πρέπει να επιλέγει το μοντέλο ανάκτησης που επιθυμεί (ένα από τα 3 παραπάνω) και στην συνέχεια θα θέτει την επερώτηση του στο σύστημα. Το σύστημα σας θα επεξεργάζεται την επερώτηση και θα παρουσιάζει τα συναφή έγγραφα στον χρήστη. Τα συναφή έγγραφα θα πρέπει να τυπώνονται με φθίνουσα σειρά ως προς το σκορ τους (δηλ. το πιο συναφές έγγραφο τυπώνεται πρώτο, κ.ο.κ). Για κάθε έγγραφο θα τυπώνεται: το αναγνωριστικό του (docid), το όνομα του, καθώς και το σκορ που έλαβε βάσει του επιλεγμένου μοντέλου ανάκτησης. Προαιρετικά Στελέχωση κειμένου (stemming), διευθυνσιοδότηση «τμημάτων» (block addressing). Χρονοδιάγραμμα Φάση Α: Π1-Π10 ( 27 Οκτώβρη- 17 Νοέμβρη) 3

o Παραδοτέα: Παραδώστε άνα αρχείο <<ΑΜ>>.zip το οποίο να περιέχει /doc/report.{doc pdf: Γραπτή αναφορά /src: Με τον κώδικας σας /dist: Με ένα αρχείο <<ΑΜ>>.jar το οποίο πρέπει να επαρκεί για την εκτέλεση του συστήματος σας Κάθε φάση θα εξεταστεί και θα βαθμολογηθεί ξεχωριστά. Σχετικά με την παράδοση, είναι αποδεκτό η κάθε φάση να παραδοθεί μέχρι και 5 μέρες μετά από την ημερομηνία παράδοσης αλλά με 10% απώλειας του βαθμού ανά ημέρα. Καλή εργασία Παράρτημα Μπορείτε να χρησιμοποιήστε την κλάση java.util. StringTokenizer, για να κατακερματίσετε κάθε γραμμή του αρχείου σε λέξεις. Για ανάγνωση από αρχείο, μπορείτε να χρησιμοποιήστε τις κλάσεις java.io.bufferedreader και java.io.filereader. Χρησιμοποιήστε το μηχανισμό των Exceptions για να γνωρίζετε πότε πρέπει να τυπώνονται κατάλληλα μηνύματα λάθους Για να γράψετε σε ένα αρχείο, μπορείτε να χρησιμοποιήστε τις κλάσεις PrintWriter και FileWriter. Όταν ολοκληρώσετε την εγγραφή σας, μην ξεχνάτε να καλέσετε τις μεθόδους flush και close (δείτε το API της Java για περισσότερες λεπτομέρειες). Το παρακάτω πρόγραμμα δέχεται ως όρισμα ένα όνομα αρχείου και εκτυπώνει όλες τις λέξεις του αρχείου αυτού. import java.io.*; import java.util.*; public class MyTokenizer { public static void main(string[] args){ BufferedReader reader = null; StringTokenizer tokenizer = null; String delimiter = "\t\n\r\f"; String line = null, currenttoken = null; if(args.length == 0){ System.err.println("You must give a filename as an argument"); try { reader = new BufferedReader(new FileReader(args[0])); while ((line = reader.readline())!= null){ tokenizer = new StringTokenizer(line, delimiter); while(tokenizer.hasmoretokens() ) { currenttoken = tokenizer.nexttoken(); System.out.println(currentToken); catch (FileNotFoundException e) { System.err.println("File "+args[0]+" not found."); catch (IOException e) { System.err.println("Error in reading file: " +args[0]); 4

5