Προσαρμογή της Βάσης Δεδομένων του WordNet στο σχεσιακό μοντέλο. WordNet. a lexical database for the English language

Σχετικά έγγραφα
Ερευνητικό Πρόγραµµα BalkaNet

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εγχειρίδιο χρήσης για τον φοιτητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Συγχώνευση αλληλογραφίας και συγχώνευση μιας πηγής δεδομένων με ένα κύριο έγγραφο όπως ένα γράμμα ή ένα έγγραφο ετικετών

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Εισαγωγή στην επιστήμη των υπολογιστών

Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη. χρήση συναρτήσεων ομαδοποίησης κατά την εκτέλεση ενός ερωτήματος προβολής

Εισαγωγή στην Αριθμητική Ανάλυση

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. WordNet

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

ΝΕΕΣ ΔΥΝΑΤΟΤΗΤΕΣ-ΒΕΛΤΙΩΣΕΙΣ ΑΝΑΒΑΘΜΙΣΗΣ 2.60

Αξιολόγηση μεταφράσεων ιταλικής ελληνικής γλώσσας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Διαχείριση Πολιτισμικών Δεδομένων

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Στο grid διαχείρισης φακέλων εμφανίζονται οι εξής πληροφορίες:

Εξαγωγή Οικονοµικών Αναφορών (Ισολογισµός, Αποτελέσµατα Χρήσης, Λογαριασµοί Γενικής Εκµετάλλευσης) στην Εφαρµογή Ms Excel

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Επιμέλεια Καραβλίδης Αλέξανδρος. Πίνακας περιεχομένων

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

1. ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

SilverPlatter WebSPIRS 4.1.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

Βάσεις Δεδομένων. Ενότητα 3: Σχεδιασμός και Διαχείριση Βάσεων Δεδομένων. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Vodafone Business Connect

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ ΔΙΕΥΘΥΝΣΗ ΕΠΟΠΤΕΙΑΣ ΠΙΣΤΩΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

Εισαγωγή στους Υπολογιστές

Στις παρακάτω οδηγίες αναλύεται η διαδικασία εισαγωγής δεδομένων μέσω του εργαλείου FastImport.

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Αρχιτεκτονική Υπολογιστών

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Αικατερίνη Καμπάση, PhD. Τμήμα Προστασίας και Συντήρησης Πολιτισμικής Κληρονομιάς Α.Τ.Ε.Ι. Ιονίων Νήσων

Εισαγωγή στη Σχεδίαση Λογισμικού

Σχεδίαση Βάσεων Δεδομένων

ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ ΔΙΕΥΘΥΝΣΗ ΕΠΟΠΤΕΙΑΣ ΠΙΣΤΩΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ

Διαχείριση Πολιτισμικών Δεδομένων

Visual Flowchart Γενικά

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ. Πρόγραμμα Διαχείρισης Α.Π.Δ.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Παρακάτω προτείνεται μια αλληλουχία ενεργειών την οποία ο χρήστης πρέπει να ακολουθήσει για να αξιοποιήσει τις δυνατότητες της εφαρμογής.

Μεθοδολογία Έρευνας Διάλεξη 10 η ( ) Παρουσίαση Πτυχιακής Εργασίας

Βασικά ζητήματα μιας βάσης δεδομένων

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σχολιάστε αν τα εκπαιδευτικά αντικείμενα (όπως: φύλλα διδασκαλίας, εργασίας. και αξιολόγησης μαθητών και υποστηρικτικό υλικό) καλύπτουν τους

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

4. ΔΗΜΙΟΥΡΓΙΑ ΜΟΝΤΕΛΟΥ ΠΟΛΥΔΙΑΣΤΑΤΗΣ ΑΝΑΛΥΣΗΣ

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Ενότητα 1η. Εισαγωγή στην Πληροφορική

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

Σχεδίαση και ανάπτυξη ιστοχώρου του εργαστηρίου Μηχανικής Λογισμικού. Παληόπουλος Αποστόλης-Παπαναγιώτου Παναγιώτης

ΑΕΠΠ Ερωτήσεις θεωρίας

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

AVS. Workshop. Εγχειρίδιο Χρήσης. Standard/Premium Edition AUTOMOTIVE

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Μαλούτα Θεανώ Σελίδα 1

Αρχιτεκτονική Υπολογιστών

1. ΔΗΜΙΟΥΡΓΙΑ ΝΕΑΣ ΧΡΗΣΗΣ 2. ΚΑΤΑΡΤΙΣΗ ΠΡΟΫΠΟΛΟΓΙΣΜΟΥ

Transcript:

Προσαρμογή της Βάσης Δεδομένων του WordNet στο σχεσιακό μοντέλο WordNet a lexical database for the English language Τ.Ε.Ι Καβάλας Τμήμα Βιομηχανικής Πληροφορικής Πτυχιακή Εργασία Ονομ/μο: Καρουσάτος Κωνσταντίνος ΑΕΜ: 1108 Επιβλέπων καθηγητής: Θεόδωρος Αλεβίζος Ακαδημαϊκό έτος: 2008-2009 1

Πτυχιακή Εργασία με θέμα: «Προσαρμογή της βάσης δεδομένων του WordNet στο σχεσιακό μοντέλο». Μία πτυχιακή εργασία του Καρουσάτου Κωνσταντίνου με αριθμό μητρώου 1108, φοιτητή του τμήματος Βιομηχανικής Πληροφορικής του Α.Τ.Ε.Ι Καβάλας. Εκπονήθηκε κατά το ακαδημαϊκό έτος 2008-2009 με επιβλέποντα καθηγητή τον Θεόδωρο Αλεβίζο. 2

Περίληψη Η συγκεκριμένη πτυχιακή σαν κύριο στόχο της έχει να μετατρέψει την βάση του WordNet σε βάση του σχεσιακού μοντέλου. Τι είναι όμως το WordNet;Το WordNet είναι ένα ηλεκτρονικό λεξικό βασισμένο στις έννοιες των λέξεων και στις σημασιολογικές σχέσεις που ισχύουν μεταξύ τους. Με τη βοήθεια των σημασιολογικών σχέσεων, οι έννοιες των λέξεων σε μια γλώσσα μπορούν να διασυνδεθούν, αποτελώντας ένα δίκτυο εννοιών, δηλ. το WordNet Η βάση όμως του WordNet αποτελείται στην ουσία από απλά text αρχεία. Τα αρχεία αυτά έχουν μία συγκεκριμένη δομή ώστε να αποδίδουν τις σχέσεις και τα νοήματα που πρέπει. Σε συνδυασμό με το γεγονός ότι το WordNet έχει ένα μεγάλο όγκο πληροφοριών και πολλών συσχετίσεων κάνουν τα αρχεία αυτά ιδιαίτερα δυσνόητα και πολύ δύσκολα στην εκμετάλλευση τους. Ένα επιπλέον πρόβλημα είναι το γεγονός ότι η βάση του WordNet είναι ξεπερασμένη τεχνολογικά. Δεν συμβαδίζει με τα σημερινά δεδομένα της πληροφορικής και κάνει πολύ δύσκολη την συνύπαρξη της με τεχνολογικές λύσεις του σήμερα. Δημιουργήθηκε λοιπόν ένα πρόγραμμα που μετατρέπει την βάση του WordNet σε μία πιο εύχρηστη και λειτουργική μορφή. Διαβάζει τα αρχεία της βάσης του WordNet και τα μετατρέπει σε μία βάση του σχεσιακού μοντέλου. Δίνεται λοιπόν η δυνατότητα σε όποιον το επιθυμεί χωρίς πολύπλοκους αλγόριθμους και συναρτήσεις να εκμεταλλευτεί τις δυνατότητες του WordNet καθώς επίσης είναι πολύ σημαντικό ότι πλέον γίνεται πολύ πιο εύκολο να ενσωματωθούν οι δυνατότητες αυτές σε άλλες εφαρμογές της πληροφορικής. Όλα τα παραπάνω επιτυγχάνονται χωρίς να απαιτούνται από την πλευρά του χρήστη ιδιαίτερες τεχνικές γνώσεις. Πέραν όμως της μετατροπής των δεδομένων του WordNet στο σχεσιακό μοντέλο που ήταν και το βασικό αντικείμενο της εργασίας αυτής έγινε ένα ακόμα βήμα. Δημιουργήθηκε ένα περιβάλλον εκμετάλλευσης κάποιων δυνατοτήτων της βάσης που δημιουργήθηκε. Ο χρήστης της εφαρμογής μπορεί να αναζητήσει για οποιαδήποτε λέξη επιθυμεί άλλες συσχετιζόμενες με αυτή. Αυτό μπορεί να γίνει για τέσσερις βασικές σχέσεις. 3

Για να επιτευχθούν τα παραπάνω έπρεπε πρώτα να γίνει κατανοητή η δομή των αρχείων της βάσης του WordNet. Πάνω σε αυτό είναι δύσκολο να βρει κάποιος σχετικές αναφορές. Η παρούσα εργασία αναλύει και εκμεταλλεύεται τα αρχεία αυτά. Έτσι, η εργασία αυτή μπορεί να αποτελέσει πολύτιμο βοηθό για όποιον θέλει να αναπτύξει κάποια δική του λύση εκμεταλλευόμενος την βάση του WordNet. 4

Πρόλογος Ο στόχος της εργασίας αυτής είναι η μορφή στην οποία θα μετατραπεί η βάση του WordNet εκτός από εύχρηστη και λειτουργική να μην έχει ιδιαίτερες απαιτήσεις από το σύστημα. Επίσης να μην απαιτείται κάποια ιδιαίτερη οικονομική θυσία για να μπορέσει κάποιος να έχει στην κατοχή του το λογισμικό που υποστηρίζει την νέα μορφή της βάσης. Ένας εξίσου σημαντικός στόχος είναι η μορφή στην οποία θα μετατραπεί η βάση του WordNet να είναι συμβατή με όσο το δυνατόν περισσότερα συστήματα. Πολύ καλά λοιπόν συνδυάζει τα παραπάνω στοιχεία η σχεσιακή βάση MySQL. Χιλιάδες εφαρμογές στο internet αλλά και σε υπολογιστές βασίζονται στην MySQL, γεγονός που πιστοποιεί τόσο την αξιοπιστία της όσο και την λειτουργικότητα της. Μπορεί ο οποιοσδήποτε χρήστης να την εγκαταστήσει στο υπολογιστή του, αφού διατίθεται δωρεάν. Στο σημείο αυτό πρέπει να τονιστεί το γεγονός ότι χρειάζεται εκτός από την MySQL να εγκατασταθούν και τα ανάλογα ODBC drivers. Αυτά παρέχουν στο εν λόγω σύστημα τη δυνατότητα επικοινωνίας μιας εφαρμογής με την βάση της MySQL. Αν υπάρχουν αυτά εγκατεστημένα στο σύστημα μαζί με την εφαρμογή που αναπτύχθηκε, αρκούν για να γίνει η μετατροπή. Έπρεπε όμως να επιλεγεί και ένα εργαλείο για την ανάπτυξη της εφαρμογής αναγνωρισμένο και αξιόπιστο που αποδεδειγμένα έχει όλες τις δυνατότητες που χρειάζονται. Πολύ καλές και αναγνωρισμένες λύσεις έχει αναπτύξει η Borland και αφού υπήρχε και ένα σχετικό υπόβαθρο στην C++ επιλέχτηκε η Borland C++ Builder 6. Αυτά τα εργαλεία αρκούσαν για την ανάπτυξη της εφαρμογής. Ωστόσο, για περαιτέρω διευκόλυνση χρησιμοποιήθηκαν κάποια ακόμη εργαλεία. 5

Το Navicat Version 8 lite το οποίο επίσης διατίθεται δωρεάν βοήθησε στην ύπαρξη ενός εύχρηστου και λειτουργικού περιβάλλοντος διαχείρισης της MySQL. Σημαντική βοήθεια επίσης αποκομίστηκε και από την εφαρμογή SQL Monitor που υπάρχει ενσωματωμένη στις λειτουργίες της Borland C++ Builder 6. Πρόκειται για μία εφαρμογή που καταγράφει όλα τα SQL ερωτήματα κτλ που εκτελούνται από μία εφαρμογή προς μία βάση δεδομένων. 6

Περιεχόμενα Κεφ. 1: Σύντομη παρουσίαση των κεφαλαίων που ακολουθούν...σελ. 8 Κεφ. 2: Το αντικείμενο της πτυχιακής εργασίας...σελ. 11 Κεφ. 3: Το WordNet του Princeton.σελ. 14 Κεφ. 4: Σχεδιασμός της βάσης δεδομένων της εφαρμογής..σελ.15 Κεφ. 5: Γενικότερα στοιχεία της εφαρμογής 5.1 Έλεγχοι πριν την μεταφορά των δεδομένων...σελ 18 5.2 Κοινά στοιχεία στην δημιουργία των tables σελ 29 5.3 Άλλες λειτουργίες της εφαρμογής...σελ 20 Κεφ. 6: Δημιουργία των tables 6.1 Γενικά..σελ 22 6.2 Δημιουργία του table word..σελ 24 6.3 Δημιουργία του table sense.σελ 25 6.4 Δημιουργία του table synset σελ 28 6.5 Δημιουργία του table linkdef...σελ 30 6.6 Δημιουργία του table semlinkref.σελ 30 6.7 Δημιουργία του table lexlinkref..σελ 33 Κεφ. 7: Συμπεράσματα σελ. 36 Παράρτημα Α: User Manual...σελ. 37 Παράρτημα Β: Το ΜΟΣ της βάσης...σελ. 46 Παράρτημα Γ: Υποδείγματα SQL ερωτημάτων.σελ. 47 Παράρτημα Δ: Ο Κώδικας της δημιουργία του table lexlinkref σελ. 49 Βιβλιογραφία-Αναφορές σελ. 65 7

Κεφάλαιο 1 Σύντομη παρουσίαση των κεφαλαίων που ακολουθούν Για να γίνει περισσότερο κατανοητή η δομή της πτυχιακής εργασίας, στο σημείο αυτό θα παρουσιαστούν εν συντομία τα κεφάλαια στα οποία χωρίζεται, καθώς και τα παραρτήματα που παρατίθενται στο τέλος. Θα αναφερθούν όλα τα κεφάλαια και τα παραρτήματα που ακολουθούν και θα γίνει μία περιληπτική καταγραφή του περιεχομένου τους. Αυτό έχει ως στόχο τη δημιουργία μίας γενικής εικόνας στον αναγνώστη σχετικά με τη δομή και το περιεχόμενο της συγκεκριμένης πτυχιακής εργασίας. Στο κεφάλαιο 2 θα παρουσιαστεί η χρησιμότητα της εφαρμογής αυτής. Εφ εξής θα αποκαλείται WordNet Database Builder και πρόκειται για την έκδοση 1.0. Θα αναφερθούν παρόμοιες προσπάθειες που υπάρχουν διαθέσιμες και θα τονιστούν τα σημεία όπου διαφοροποιείται το WordNet Database Builder 1.0. Θα διαπιστωθεί το ζωηρό ενδιαφέρον που έδειξε και δείχνει η πανεπιστημιακή κοινότητα για την ανάπτυξη αντίστοιχων προϊόντων του WordNet για γλώσσες εκτός της Αγγλικής. Επίσης, θα παρατεθούν ορισμένα στοιχεία σχετικά με το EuroWordNet και BalkNet. Στο τελευταίο υπάρχει και συμμετοχή της Ελλάδας. Από την πλευρά της Ελλάδας συμμετέχει το Πανεπιστήμιο της Πάτρας και το Πανεπιστήμιο Αθηνών. Στο κεφάλαιο 3 υπάρχει μία σύντομη αναφορά στο WordNet του Princeton. Ακόμη γίνεται μια μικρή αναφορά σε κάποια από τα στοιχεία του προγράμματος και μία αναφορά σε όσους έχουν βοηθήσει στην ανάπτυξη του. Στο κεφάλαιο 4 περιγράφεται πώς αποφασίστηκε να δημιουργηθεί η συγκεκριμένη βάση που χρησιμοποιεί το WordNet Database Builder 1.0. Ακολουθεί το κεφάλαιο 5 όπου αναλύονται κάποιοι έλεγχοι που κάνει η εφαρμογή. Δίνεται έμφαση σε κάποια κοινά στοιχεία που υπάρχουν για την δημιουργία των tables και τέλος περιγράφονται και κάποιες γενικότερες λειτουργίες της εφαρμογής. Στο κεφάλαιο 6 θα αρχίσει η ανάλυση σχετικά με το πώς αναπτύχθηκε η εφαρμογή WordNet Database Builder 1.0. Πιο συγκεκριμένα, στο κεφάλαιο 6 αναλύεται το πώς δημιουργείται το table word, ποια είναι η χρησιμότητα του και ποια είναι τα πεδία από τα οποία αυτό αποτελείται. Αναλύεται επίσης το πώς είναι 8

δομημένο το αρχείο από το οποίο αντλούνται οι πληροφορίες για την δημιουργία του table word και περιγράφεται τι πρέπει να κάνει το πρόγραμμα για να καταφέρει να επιτύχει αυτή την μεταφορά των δεδομένων από το αρχείο στην βάση. Επίσης, περιγράφεται ο τρόπος με τον οποίο δημιουργείται το table sense αλλά και το αρχείο από το οποίο προέρχεται. Επεξηγείται το τι ακριβώς παίρνει η εφαρμογή από κάθε γραμμή του αρχείου αυτού. Ακόμα, αναφέρονται τα πεδία που αποτελούν το table αυτό. Στην συνέχεια αναλύεται η δημιουργία του table synset. Χρησιμοποιείται πάνω από ένα αρχείο για την δημιουργία αυτού του table. Ειδικότερα, το πρόγραμμα πρέπει να διαβάσει τέσσερα διαφορετικά αρχεία δομημένα όμως με τον ίδιο τρόπο. Αυτό παρατηρείται και σε άλλα tables. Επίσης, η πολυπλοκότητα του αρχείου μεγαλώνει αλλά και τα πεδία που πρέπει να ενημερωθούν είναι περισσότερα. Γίνεται επίσης αναφορά στα πεδία που αποτελούν το table αυτό αλλά και στα αρχεία που διαβάζονται και τι παίρνει το πρόγραμμα από αυτά. Συνεχίζεται η ανάλυση της δημιουργίας των tables που χρειάζονται. Πιο συγκεκριμένα αναλύεται και η δημιουργία του table linkdef. Αυτό το table θα μπορούσε και να μην υπάρχει. Στην περίπτωση όμως αυτή ο χρήστης της βάσης που θέλει να αναπτύξει διάφορα ερωτήματα θα δυσκολευόταν να βρει ποιος κωδικός αντιστοιχεί σε ποια σχέση. Δηλαδή αυτό το table έχει μία αντιστοιχία κωδικού και σχέσης. Έτσι όταν θα αναζητά κάποια σχέση ο χρήστης της βάσης στο table semlinkref, θα ανατρέχει σε αυτό το table και θα βλέπει ποιον κωδικό πρέπει να χρησιμοποιήσει για να την βρει. Γίνεται επίσης αναφορά στα πεδία που αποτελούν το table αυτό. Ακολουθεί η δημιουργεία του table semlinkref. Όπως προαναφέρθηκε στο table αυτό υπάρχουν σχέσεις μεταξύ λέξεων, εκτός όμως από τα αντίθετα (Antonyms). Τα αντίθετα τα βρίσκουμε στο table lexlinkref. Σε αυτό το table, όπως και στο synset, semlinkref, lexlinkref, χρησιμοποιούνται τέσσερα διαφορετικά αρχεία για να δημιουργηθεί. Σε αυτό το table θα βρούμε δεκαέξι διαφορετικές σχέσεις από τις συνολικά 17 που υποστηρίζει το WordNet Database Builder 1.0. Το WordNet υποστηρίζει περίπου τριάντα σχέσεις ανάλογα με την έκδοση. Γίνεται επίσης αναφορά στα πεδία που αποτελούν το table αυτό. Απεικονίζεται μέρος των αρχείων που διαβάζονται για την δημιουργία του table και επεξηγείται η δομή τους Τέλος, αναλύεται ο τρόπος που δημιουργείται το έκτο και τελευταίο table. Το table lexlinkref. Ίσως πρόκειται για την πιο πολύπλοκη διαδικασία από όλες. Για την 9

δημιουργία αυτού του table χρησιμοποιούνται εκτός από τα δεδομένα που διαβάζονται και δεδομένα που έχουμε ήδη περάσει σε άλλο table και πιο συγκεκριμένα στο table word. Χρειάζονται όμως πάρα πολλές συγκρίσεις, αφού σε κάθε γραμμή του αρχείου μπορεί να υπάρχει πάνω από μία λέξη. Έτσι, το πρόγραμμα πρέπει να λαμβάνει την σωστή απόφαση κάθε φορά για το ποια δεδομένα πρέπει να αντλήσει από το table word αλλά και σε ποια λέξη να τα αντιστοιχίσει. Γίνεται επίσης αναφορά στα πεδία που αποτελούν το table αυτό και αναλύεται μια χαρακτηριστική γραμμή από τα αρχεία που διαβάζονται για να δημιουργηθεί το table αυτό. Το κεφάλαιο 7 περιέχει κάποια συμπεράσματα και κάποιες προτάσεις για το τι θα μπορούσε να γίνει στο μέλλον σχετικά με το WordNet Database Builder 1.0. Στο παράρτημα Α υπάρχει το User Manual της εφαρμογής και όλα όσα πρέπει να γνωρίζει ο χρήστης της. Στο παράρτημα Β βρίσκεται το ΜΟΣ της βάσης του WordNet στο σχεσιακό μοντέλο. Στο παράρτημα Γ υπάρχουν κάποια υποδείγματα ερωτημάτων της SQL Στο παράρτημα Δ παρατίθεται ο κώδικας της εφαρμογής. 10

Κεφάλαιο 2 Το αντικείμενο της πτυχιακής εργασίας Η συγκεκριμένη πτυχιακή εργασία, τουλάχιστον στην μορφή που είναι σήμερα, θα απασχολήσει περισσότερο προγραμματιστές που θέλουν να ενσωματώσουν κάποιες από τις δυνατότητες του WordNet σε δικές τους εργασίες. Ωστόσο, κάποιες βασικές λειτουργίες μπορεί να τις εκμεταλλευτεί και ένας χρήστης που δεν έχει ιδιαίτερες γνώσεις πάνω στο αντικείμενο της πληροφορικής. Ανάλογες προσπάθειες υπάρχουν διαθέσιμες στο διαδίκτυο. Σημαντικότερη από αυτές η εργασία που έχει κάνει o Bernard Bou που υπάρχει διαθέσιμη και στην ηλεκτρονική διεύθυνση http://wordnet.princeton.edu/links#sql. Επίσης, στο δικτυακό τόπο http://wordnet.princeton.edu/links υπάρχουν διαθέσιμες πολλές εργασίες σχετικές με το WordNet. Εκεί μπορεί κανείς να βρει εργασίες σε παραπάνω από 22 διαφορετικούς τομείς σε σχέση με το WordNet. Μεταξύ αυτών υπάρχουν εργασίες για Web Interface του WordNet, καθώς επίσης εργασίες βασισμένες σε τεχνολογίες όπως C#, COM, Java, Perl, Php, Python, Sql, XML και άλλα. Το WordNet ξεκίνησε να αναπτύσσεται στο πανεπιστήμιο Princeton των Η.Π.Α για την αγγλική γλώσσα. Η επιτυχία που γνώρισε ήταν πολύ μεγάλη και κατά συνέπεια ανάλογες προσπάθειες ξεκίνησαν και για άλλες γλώσσες. Δημιουργήθηκαν συνασπισμοί πανεπιστημίων από διάφορα κράτη και ξεκίνησαν την ανάπτυξη WordNet για άλλες γλώσσες πέραν των αγγλικών. EuroWordNet, BalkaNet κ.α. είναι μερικές από τις προσπάθειες που βρίσκονται σε εξέλιξη. Η ελληνική γλώσσα είναι μέρος του BalkaNet. Ο συνολικός προϋπολογισμός του BalkaNet είναι 1.814.882 ευρώ και από την πλευρά της Ελλάδας στην ανάπτυξη του συμμετέχουν το Πανεπιστήμιο της Πάτρας και το Πανεπιστήμιο των Αθηνών. Το πρόγραμμα χρηματοδοτείται από την Ευρωπαϊκή Ένωση μέσω του προγράμματος IST-2000-29388. Το πανεπιστήμιο των Αθηνών αναφέρει σχετικά με το BalkaNet: «Ο κύριος στόχος του προγράμματος BalkaNet είναι η ανάπτυξη ενός πολύγλωσσου σημασιολογικού δικτύου για τις εξής γλώσσες: βουλγαρικά, τσεχικά, ελληνικά, ρουμανικά, σερβικά, τουρκικά. Αυτό το δίκτυο περιέχει έννοιες από όλες τις γλώσσες συνδεδεμένες μεταξύ τους μέσω ενός διαγλωσσικού ευρετηρίου (Inter-Lingual-Index - ILI) το οποίο περιέχει καθορισμένες 11

λεξικές και σημασιολογικές σχέσεις. Το ILI λειτουργεί ως ένα σύνολο από έννοιες στα Αγγλικά, μέσω του οποίου οι μονογλωσσικές βαλκανικές έννοιες συνδέονται μεταξύ τους, επιτρέποντας έτσι την πλοήγηση μεταξύ διαφορετικών μονόγλωσσων σημασιολογικών δικτύων. Το βασικό κίνητρο για την δημιουργία ενός τέτοιου προγράμματος είναι η επιτυχία ανάλογων προγραμμάτων όπως το Princeton WordNet και το EuroWordNet. Συνεπώς και το BalkaNet αναπτύσσεται με την ίδια λογική όπως και τα παραπάνω προγράμματα και η βασική του γλωσσική μονάδα είναι το σύνολο συνονύμων όρων (synset). Κάθε synset περιέχει τους όρους μιας γλώσσας που έχουν την ίδια σημασιολογική έννοια. Οι όροι μέσα στο ίδιο synset συνδέονται με τη βοήθεια γλωσσικών εσωτερικών λεξικολογικών σχέσεων (π.χ. συνωνυμία) ενώ τα synsets συνδέονται μεταξύ τους μέσω προκαθορισμένων σημασιολογικών σχέσεων (π.χ. υπονυμία, μερονυμία κ.λπ.). Κάθε μονόγλωσσο wordnet αναπτύσσεται με τη χρησιμοποίηση διάφορων λεξικολογικών πόρων, όπως τα επεξηγηματικά λεξικά, σώματα κειμένων, δίγλωσσα λεξικά, θησαυροί συνωνύμων, γλωσσάρια όρων κ.λπ. Οι όροι που εξάγονται από τους προαναφερθέντες πόρους υποβάλλονται σε επεξεργασία και εισάγονται μέσω του προγράμματος επεξεργασίας VisDic σε κάθε μονόγλωσσο Wordnet. Αφού το κύριο σύνολο όρων επιλεχθεί και εισαχθεί στο Wordnet, αυτοί οι όροι συνδέονται μεταξύ τους με τις σημασιολογικές σχέσεις». Διαπιστώθηκε λοιπόν ότι το WordNet είναι ένα πολύ σημαντικό εργαλείο για κάθε γλώσσα και έτσι χρηματοδοτείται η ακαδημαϊκή κοινότητα για να προχωρήσει στην ανάπτυξη WordNet για ακόμα περισσότερες γλώσσες. Είναι ένα εργαλείο που βοηθά τους χρήστες του να κατανοήσουν ακόμα περισσότερο μία γλώσσα και με εύκολο τρόπο να έχουν ένα μεγάλο πλήθος πληροφοριών πάνω σε αυτή. Γίνεται λοιπόν κατανοητό ότι λύσεις ανάλογες με το WordNet Database Builder 1.0 υπάρχουν. Σε τι διαφοροποιείται λοιπόν η παρούσα εργασία; Καταρχήν, υπάρχει διαθέσιμος ο κώδικας που κάνει την προσαρμογή της βάσης του WordNet στο σχεσιακό μοντέλο. Έτσι, υπάρχει πλέον η δυνατότητα περεταίρω εξειδίκευσης και προσαρμογής των δυνατοτήτων της εφαρμογής ανάλογα με τις ανάγκες όποιου το επιθυμεί. Αυτό σημαίνει ότι μπορεί κάποιος να προσθέσει αλλά και να αφαιρέσει εύκολα σχέσεις οι οποίες μεταφέρονται στην βάση του σχεσιακού μοντέλου. Επομένως, ένας χρήστης έχει τη δυνατότητα με ευκολία να αποκτήσει μία βάση μόνο με τα συνώνυμα ή τα αντίθετα κτλ. 12

Ακόμη, με πολύ μικρές αλλαγές και τροποποιήσεις στο πρόγραμμα αυτό ο χρήστης θα είναι σε θέση να μεταφέρει οποιεσδήποτε προσθήκες γίνουν στην βάση του WordNet. Επιπρόσθετα, το WordNet Database Builder 1.0 για να το χρησιμοποιήσει κάποιος δεν χρειάζονται κάποιες ιδιαίτερα εξειδικευμένες γνώσεις πληροφορικής. Είναι user friendly. Ταυτόχρονα δεν αρκείται στο να δημιουργεί απλά την βάση του WordNet. Μετά την μεταφορά των δεδομένων υπάρχει το σχετικό interface για να μπορεί ο χρήστης να αναζητήσει μέσα από την βάση δεδομένων του σχεσιακού μοντέλου κάποιες βασικές σχέσεις. Χωρίς να χρειάζεται να συντάξει ο χρήστης SQL ερωτήματα και να έχει γνώση της δομής της βάσης, του δίνεται η δυνατότητα να αναζητήσει για οποιαδήποτε λέξη σχέσεις όπως συνώνυμα, αντίθετα κτλ. Έτσι λοιπόν σε περιβάλλον Windows πλέον έχει την δυνατότητα ο χρήστης να εκμεταλλεύεται κάποιες από τις δυνατότητες του WordNet. Διότι η βάση που το WordNet Database Builder 1.0 προσαρμόζει είναι η έκδοση 3 για Unix/Linux/Solaris/etc. Η εφαρμογή αυτή προσπαθεί να επιτύχει δύο στόχους. Ο πρώτος είναι να μπορεί ένας χρήστης χωρίς εξειδικευμένες γνώσεις στους υπολογιστές να αποκτήσει ένα πλήρως λειτουργικό WordNet στον υπολογιστή του και μάλιστα σε περιβάλλον Windows. Είναι δυνατόν μέσω της εφαρμογής αυτής να δημιουργήσει μόνος του την απαιτούμενη βάση και στην συνέχεια να την διαχειρίζεται. Υπάρχουν οι προϋποθέσεις η διαχείριση αυτή να γίνεται με πολύ απλούστερες διαδικασίες και με περισσότερες λειτουργίες ακόμα και σε σχέση με το WordNet του Princeton Ο δεύτερος στόχος είναι η δημιουργία μίας βάσης που να μπορούν να την εκμεταλλευτούν επιστήμονες της πληροφορικής. Άρα η εφαρμογή στοχεύει σε δύο διαφορετικά πράγματα. Αυτός είναι και ο λόγος που η εφαρμογή ξεχωρίζει την κάθε διαδικασία. Υπάρχει ξεχωριστή φόρμα για την εκμετάλλευση της βάσης και ξεχωριστή για την δημιουργία της. Οι δύο αυτές λειτουργίες μπορούν να είναι τελείως ανεξάρτητες μεταξύ τους και να λειτουργούν εντελώς αυτόνομα. 13

Κεφάλαιο 3 Το WordNet του Princeton Το WordNet του Princeton ήταν κάτι πρωτοποριακό και αυτό αποδεικνύεται από την αναγνώριση που έχει γνωρίσει μέχρι σήμερα. Είναι μία μεγάλη βάση δεδομένων των αγγλικών λέξεων. Ουσιαστικά, ρήματα, επίθετα και επιρρήματα χωρίζονται σε ομάδες συνωνύμων (synsets). Το WordNet του Princeton δίνει σύντομους γενικούς ορισμούς και καταγράφει ποικίλες σημασιολογικές σχέσεις ανάμεσα στις ομάδες των συνωνύμων. Μέχρι σήμερα υποστηρίζει περίπου 150.000 μεταξύ των οποίων υπάρχουν πάνω από 200.000 διαφορετικές σχέσεις. Η βάση δεδομένων και τα εργαλεία λογισμικού έχουν εκδοθεί υπό την BSD προστασία δικαιωμάτων. Επίσης, υπάρχουν διαθέσιμα στο διαδίκτυο. Ο σκοπός του εγχειρήματος είναι διπλός. Από τη μία πλευρά παράγει ένα λεξικό ευρέως χρησιμοποιούμενο και από την άλλη πλευρά υποστηρίζει την αυτόματη ανάλυση κειμένου και τις εφαρμογές τεχνητής νοημοσύνης. Το WordNet του Princeton δημιουργήθηκε και διατηρείται στο Εργαστήριο Γνωσιακής Επιστήμης του Πανεπιστημίου του Princeton. Αναπτύχθηκε κάτω από την καθοδήγηση του καθηγητή George A. Miller. Υποστηρίζεται από μία διεπιστημονική ομάδα η οποία αποτελείται από γλωσσολόγους, επιστήμονες πληροφορικής και ψυχολόγους. Ορισμένοι από τους επιστήμονες που συμμετέχουν είναι οι George A. Miller, Christiane Fellbaum, Randee Tengi, Pamela Wakefield, Helen Langone, Benjamin R. Haskell. Την ανάπτυξη του WordNet υποστηρίζει και η Google αλλά και διάφορες επιστημονικές ενώσεις όπως η NSF, ARDA, DARPA, DTO, και REFLEX. Η ανάπτυξή του άρχισε το 1985. Έκτοτε χρηματοδοτήθηκε από κυβερνήσεις που ενδιαφέρονταν για τη μηχανική μετάφραση. 14

Κεφάλαιο 4 Σχεδιασμός της βάσης δεδομένων της εφαρμογής Για να σχεδιαστεί η βάση του WordNet Database Builder 1.0 έπρεπε πρώτα από όλα να αποφασιστεί τι δυνατότητες θα έπρεπε να έχει η εφαρμογή αυτή. Αυτό λοιπόν που ήταν το κυρίως αντικείμενο της εργασίας αυτής είναι να μπορεί η βάση που θα δημιουργηθεί να αποδίδει τουλάχιστον κάποιες βασικές σχέσεις μεταξύ των λέξεων και κυρίως σχέσεις όπως synonyms, hypernyms, hyponyms. Αυτές οι σχέσεις ενδιαφέρουν περισσότερο γιατί βασιζόμενος κάποιος πάνω σε αυτές μπορεί να προσθέσει δυνατότητες σε πλήθος εφαρμογών. Επίσης, οι απλοί χρήστες μιας εφαρμογής όπως το WordNet ενδιαφέρονται κυρίως για αυτές τις σχέσεις. Χωρίς να είναι ακόμα γνωστό πώς είναι δομημένα τα αρχεία του WordNet και ποια πεδία ακριβώς πρέπει να περιλαμβάνουν τα tables της βάσης στο σχεσιακό μοντέλο, μπορούν να γίνουν κάποιες υποθέσεις για την βάση που χρειάζεται να δημιουργηθεί. Καταρχήν, πρέπει να υπάρχει το σύνολο των λέξεων καταγεγραμμένο. Επομένως, είναι αναγκαίο να δημιουργηθεί ένα table με όλες τις λέξεις. Επίσης, χρειάζεται ένα ακόμα table το οποίο θα αναφέρει για κάθε λέξη με ποιες άλλες σχετίζεται και με ποιόν τρόπο. Συνεπώς, για την κάθε λέξη πρέπει να είναι γνωστό εάν σχετίζεται με οποιονδήποτε τρόπο με κάποια άλλη. Τα δύο αυτά tables φαίνονται επαρκή για να ικανοποιήσουν τις ανάγκες της εφαρμογής. Κατανοώντας όμως περισσότερο την βάση του WordNet αντιλαμβάνεται κάποιος ότι οι παραπάνω σκέψεις είναι ιδιαίτερα απλοϊκές. Η βάση του WordNet εμβαθύνει πολύ περισσότερο στην ανάλυση που έχει για κάθε λέξη και είναι σε θέση να αποδώσει πολύ περισσότερα από όσα μπορεί κάποιος να υποθέσει. Ένα χαρακτηριστικό παράδειγμα είναι τα συνώνυμα. Για κάθε συνώνυμο υπάρχει η πληροφορία για το πόσο σχετικό είναι με το νόημα της λέξης. Δηλαδή υπάρχει διάκριση μεταξύ των συνωνύμων και κατά πόσο αυτά αποδίδουν το νόημα της λέξης με την οποία σχετίζονται. Αυτό σημαίνει ότι πρέπει να υπάρχει κάπου καταγεγραμμένο και το νόημα της κάθε λέξης. Άρα, είναι απαραίτητο να δημιουργηθεί ένας ακόμα πίνακας που θα περιέχει την πληροφορία αυτή. 15

Γίνεται λοιπόν κατανοητό ότι δεν μπορούσε να σχεδιαστεί η βάση στο σχεσιακό μοντέλο χωρίς προηγουμένως να είναι γνωστό τι πληροφόρηση εμπεριέχεται στην βάση του WordNet. Προϋπόθεση για αυτό είναι να γίνει κατανοητό πρώτα το πώς είναι δομημένα τα αρχεία αυτά. Κάποια αρχικά συμπεράσματα μπορούν να βγουν μελετώντας και κατανοώντας την βάση του WordNet ακόμα και για τους τύπους των πεδίων αλλά και για το σχήμα της βάσης. Αποδείχτηκε όμως ιδιαίτερα δύσκολο να γίνει ο σχεδιασμός αυτής της βάσης. Έχοντας κάποια αρχικά συμπεράσματα για το τι πρέπει να γίνει και κάποιες πρώτες σκέψεις για τον σχεδιασμό της βάσης μελετήθηκαν κάποια από τα σχετικά projects με του WordNet που είναι διαθέσιμα στην ιστοσελίδα http://wordnet.princeton.edu/links. Επικεντρώθηκε η μελέτη στα projects με τίτλο SQL εκ των οποίων πιο κοντά σε αυτό που χρειαζόταν για την παρούσα εργασία ήταν οι λύσεις του Bernard Bou και Richard Bergmair. Αφού μελετήθηκαν οι λύσεις που παρείχαν, κρίθηκε σκόπιμο να υπάρξει επικοινωνία μαζί τους για κάποιες διευκρινίσεις λόγω ελλιπούς ανάλυσης και τεκμηρίωσης των λύσεων που υπήρχαν. Κατέστη δυνατό να υπάρξει επικοινωνία μόνο με τον Bernard Bou. Συνέστησε να εξεταστεί η εξής ιστοσελίδα: http://wnsqlbuilder.sourceforge.net/. Εκεί υπάρχει μία καλύτερη ανάλυση χωρίς όμως και αυτή να καλύπτει όσα χρειάζονταν για την παρούσα εργασία. Μελετώντας περεταίρω την λύση που προτείνει διαπιστώθηκε ότι η βάση που έχει σχεδιάσει υπερκαλύπτει τις ανάγκες για την συγκεκριμένη εργασία. Έπρεπε όμως να βρεθεί ο τρόπος με τον οποίο θα ενημερωθούν τα πεδία της βάσης, καθώς και το κομμάτι της βάσης που χρειάζεται. Προκρίθηκε δε η λύση που πρότεινε ο Bernard Bou από την λύση του Richard Bergmair επειδή υπήρχε μεγαλύτερη τεκμηρίωση και η πολυπλοκότητα της βάσης που πρότεινε ήταν μικρότερη καλύπτοντας ταυτόχρονα τις ανάγκες της εν λόγω εργασίας. Αποκτήθηκε λοιπόν μία βάση στο σχεσιακό μοντέλο που αποδίδει αυτά που χρειάζονται για την παρούσα εργασία και προσαρμόστηκε στις ανάγκες του WordNet Database Builder 1.0. Με την βοήθεια αυτής της σχεσιακής βάσης του Bernard Bou και σε συνδυασμό με την καλύτερη κατανόηση της δομής των αρχείων της βάσης του WordNet έγινε αντιληπτό ότι οι αρχικοί σχεδιασμοί και οι σκέψεις που είχαν γίνει δεν κάλυπταν κάποιες περιπτώσεις. Παραδείγματος χάρη, τα αντίθετα δεν μπορούσαν να μπουν σε έναν πίνακα με όλες τις άλλες σχέσεις των λέξεων. 16

Ταυτόχρονα, η προσαρμογή της βάσης του WordNet που είχε γίνει στο σχεσιακό μοντέλο εξυπηρετούσε τον σχεδιασμό της μεταφοράς των δεδομένων. Σε δοκιμές που έγιναν με άλλα μοντέλα βάσης διαπιστώθηκε ότι η πολυπλοκότητα που χρειαζόταν να έχει ο κώδικας ήταν πολύ μεγαλύτερη σε σχέση με τον κώδικα που απαιτούνταν για την μεταφορά των δεδομένων στην βάση του Bernard Brou. Η βάση του Bernard Brou ακολουθεί την φιλοσοφία της βάσης του WordNet, γεγονός το οποίο εξυπηρετούσε τις ανάγκες του WordNet Database Builder 1.0. Οι σχέσεις, τα πεδία και γενικότερα το σχήμα της βάσης παρουσιάζονται αναλυτικά στο παράρτημα Β. 17

Κεφάλαιο 5 Γενικότερα στοιχεία της εφαρμογής 5.1 Έλεγχοι πριν την μεταφορά των δεδομένων Προτού αναλυθεί το πώς γίνεται η μεταφορά των δεδομένων πρέπει να εξεταστεί ποιοι είναι οι απαιτούμενοι έλεγχοι που πρέπει να προηγηθούν. Για να γίνει εφικτή η μεταφορά προαπαιτούμενο είναι να υπάρχει σύνδεση με μία βάση καθώς και η εφαρμογή να μπορεί να έχει πρόσβαση στα αρχεία της βάσης του WordNet. Προαπαιτούμενο λοιπόν είναι να έχει επιλεγεί ένα όνομα ODBC σύνδεσης και ένας φάκελος που μέσα σε αυτόν υπάρχουν όλα τα απαιτούμενα αρχεία. Με τον τρόπο αυτόν, η εφαρμογή δίνει την δυνατότητα στον χρήστη να δοκιμάσει την σύνδεση με την βάση που έχει επιλέξει. Αν παρόλα αυτά επιμείνει και προχωρήσει ο χρήστης της εφαρμογής στην μεταφορά των δεδομένων θα εμφανιστεί ανάλογο μήνυμα που θα τον ενημερώνει ότι δεν υπάρχει σύνδεση με την βάση (βλ. παράρτημα Α). Ταυτόχρονα η εφαρμογή απαιτεί να έχει επιλεγεί κάποιος φάκελος. Δεν μένει όμως μόνο σε αυτόν τον έλεγχο η εφαρμογή. Ελέγχει και αν μέσα σε αυτόν τον φάκελο υπάρχουν όλα τα αρχεία που πρέπει. Δεν επιτρέπει να συνεχιστεί η διαδικασία αν όλα τα παραπάνω δεν έχουν εξασφαλιστεί. Από την στιγμή που υπάρχει σύνδεση με μία βάση και τα απαραίτητα αρχεία διαθέσιμα, η εφαρμογή προχωράει σε μία μικρή τροποποίηση των αρχείων. Αυτό γίνεται για να εξασφαλιστεί ότι είναι σωστά οριοθετημένο το τέλος των δεδομένων. Αυτό κρίθηκε απαραίτητο διότι σε κάποια από τα αρχεία της βάσης του WordNet μετά το τέλος των δεδομένων υπάρχουν κάποιοι χαρακτήρες κενού και κάποιες κενές γραμμές περιττές. Προτιμήθηκε να γίνει αυτή η αλλαγή διότι απλοποιούσε τον κώδικα που έπρεπε να γίνει στην συνέχεια για την μεταφορά των δεδομένων. Έτσι, μειώθηκαν οι έλεγχοι που έπρεπε η εφαρμογή να κάνει αφού το τέλος του αρχείου ισοδυναμούσε με το τέλος των δεδομένων. Στην ουσία, η εφαρμογή αντιγράφει κάθε αρχείο που ενδιαφέρει το χρήστη σε ένα νέο αρχείο τοποθετώντας τον χαρακτήρα τέλους αρχείου στο σωστό σημείο. Στην 18

συνέχεια, σβήνει τα πρωτότυπα αρχεία και μετονομάζει τα νέα αρχεία με το όνομα των πρωτότυπων. Παρόλο που γίνονται οι παραπάνω έλεγχοι πάντα υπάρχει το ενδεχόμενο να προκύψει κάποιο σφάλμα που δεν μπορούσε να προβλεφθεί. Στην εφαρμογή υπάρχει μέριμνα για την περίπτωση αυτή. Έτσι, σε κάθε σφάλμα η εφαρμογή δεν καταρρέει αλλά ενημερώνει τον χρήστη για το είδος του σφάλματος που παρουσιάστηκε και του δίνει το δικαίωμα να προσπαθήσει να επιλύσει το πρόβλημα και να ξαναδοκιμάσει να εκτελέσει την λειτουργία που επιθυμούσε. Επίσης, αν ο χρήστης εκτελέσει τη λειτουργία μεταφοράς των δεδομένων, η εφαρμογή ελέγχει κατά πόσο στην βάση υπάρχουν δημιουργημένα tables με το ίδιο όνομα. Στην περίπτωση που υπάρχουν τα διαγράφει και τα δημιουργεί με τα χαρακτηριστικά που χρειάζεται. Εάν δεν υπάρχουν, προχωρά απευθείας στην δημιουργία των tables. Στην συνέχεια, προχωράει στην δημιουργία του table word. 5.2 Κοινά στοιχεία στην δημιουργία των tables Πριν παρουσιαστεί η εκτενής ανάλυση αναφορικά με τον τρόπο που δημιουργείται το κάθε table, είναι χρήσιμο να γίνει μια αναφορά στα κοινά στοιχεία που υπάρχουν στο τρόπο δημιουργίας τους. Χωρίς, στην παρούσα φάση, να εξετάζονται λεπτομέρειες θα παρατεθούν κάποια κοινά χαρακτηριστικά. Καταρχήν, ανοίγει ένα ρεύμα εισόδου από το αρχείο που χρειάζεται να μεταφερθεί στην βάση προς το πρόγραμμα. Το ρεύμα αυτό οφείλει να αναζητήσει το αρχείο στην διαδρομή που έχει υποδείξει ο χρήστης. Με το που ανοίγει το αρχείο, το πρόγραμμα προετοιμάζει την μπάρα προόδου εργασιών και προχωράει στην ανάγνωση του πρώτου χαρακτήρα από το αρχείο. Είναι βασικό να γνωρίζει το πρόγραμμα, όποτε χρειάζεται, τι χαρακτήρα διαβάζει αφού έτσι μπορεί να συμπεράνει τι θα κάνει τα δεδομένα που διαβάζει. Κάθε χαρακτήρα που διαβάζει το πρόγραμμα τον προσθέτει σε ένα AnsiString. Τα δεδομένα που συσσωρεύονται σε αυτό το AnsiString τα μεταφέρει αν και όποτε πρέπει στην βάση. 19

Τα αρχεία είναι πάντα χωρισμένα σε γραμμές, οπότε το πρόγραμμα οφείλει να κάνει μία επαναληπτική διαδικασία εξετάζοντας γραμμή-γραμμή το αρχείο μέχρι το τέλος του αρχείου. Σε κάποιες περιπτώσεις αυτή η διαδικασία πρέπει να επαναληφθεί για πάνω από ένα αρχεία. Έτσι, με το τέλος του πρώτου αρχείου προχωράει το πρόγραμμα στο επόμενο. Όταν σχηματιστεί μία γραμμή της βάσης στην μνήμη, τότε ενημερώνεται η βάση. Επομένως, ανοίγει η επικοινωνία με αυτή και εκτελείται το κατάλληλο insert statement. Σε ένα από τα tables αυτό δεν είναι αρκετό. Τα δεδομένα που υπάρχουν μια δεδομένη στιγμή στην μνήμη αποτελούν κριτήριο για ερώτημα προς την βάση. Τα δεδομένα που επιστρέφει αυτό το ερώτημα μαζί με άλλα ενημερώνουν ένα νέο table. Κάθε πρόοδος της εργασίας απεικονίζεται στην χρήστη μέσω μιας Progress Bar και όταν αλλάζει το table που ενημερώνεται αλλάζει και ο σχετικός τίτλος. Στα αρχεία του WordNet το κενό μεταξύ των λέξεων αναπαριστάται με το σύμβολο _. Έτσι, όποτε ο χρήστης επιθυμεί να περάσει μία λέξη σε κάποιο table ή να αναζητήσει με κριτήριο μία λέξη πρέπει να εξεταστεί αν υπάρχει αυτό το σύμβολο και να αντικαθίσταται με τον κενό χαρακτήρα. 5.3 Άλλες λειτουργίες της εφαρμογής Εκτός από την μεταφορά των δεδομένων, η οποία συνιστά το κυρίως αντικείμενο της εργασίας αυτής, υπάρχουν και κάποιες άλλες βασικές λειτουργίες. Στο σύνολο της η εφαρμογή δείχνει τον δρόμο για μία επόμενη έκδοση όπου εκτός από την μεταφορά των δεδομένων που μπορεί να εμπλουτιστεί, έχει και τη δυνατότητα να αποκτήσει ένα πιο πλήρες interface με περισσότερες λειτουργίες. Μπορεί αυτό το νέο interface να αξιοποιήσει τις λειτουργίες που υπάρχουν μέχρι τώρα και να προσθέσει επιπλέον λειτουργίες. Καταρχήν, διαχωρίζεται η διαδικασία μεταφοράς των δεδομένων με αυτή της αξιοποίησης της βάσης. Ας υποτεθεί ότι η βάση έχει δημιουργηθεί. Ο χρήστης πρέπει να μπορεί να πληκτρολογήσει την λέξη που τον ενδιαφέρει και να επιλέξει τι θέλει να βρει για αυτή την λέξη. 20

Έτσι, σαν επιλογές μπορούν να υπάρχουν οι πιθανές σχέσεις μεταξύ των λέξεων αλλά και εύρεση ορισμού ή οτιδήποτε άλλο υποστηρίζει η βάση που έχει δημιουργηθεί. Ταυτόχρονα με όλα αυτά πρέπει ο χρήστης να μπορεί να επιλέξει με ποια βάση θέλει να συνδεθεί, να αποθηκεύει τις ρυθμίσεις που αφορούν την βάση αυτή και να μην χρειάζεται κάθε φορά που τρέχει την εφαρμογή να πληκτρολογεί και πάλι τα στοιχεία της σύνδεσης. Στο interface που υπάρχει (βλ. παράρτημα Α) ο χρήστης έχει τη δυνατότητα να επιλέξει την βάση που επιθυμεί, να συνδεθεί με αυτή, να αποθηκεύσει τις ρυθμίσεις για την βάση και να αναζητήσει για οποιαδήποτε λέξη τα υπερώνυμα της, τα υπώνυμα της, τα συνώνυμα της και τα αντίθετα της. 21

Κεφάλαιο 6 Δημιουργία των tables 6.1 Γενικά Η διαδικασία της μετατροπής των αρχείων σε βάση του σχεσιακού μοντέλου είναι λογικό να χρειάζεται αρκετό χρόνο. Αυτό έχει σαν συνέπεια τα Microsoft Windows να δείχνουν ότι η εφαρμογή δεν ανταποκρίνεται παρόλο που η εργασία συνεχίζει να εκτελείται. Ο χρήστης παύει να ενημερώνεται για την πρόοδο της εργασίας και δεν εμφανίζονται τα προβλεπόμενα μηνύματα. Επίσης το παράθυρο της εφαρμογής δεν υπακούει σε οποιαδήποτε εντολή του χρήστη. Για να ξεπεραστεί το πρόβλημα αυτό έπρεπε σε τακτά χρονικά διαστήματα η εφαρμογή να στέλνει μήνυμα στο λειτουργικό σύστημα ότι συνεχίζει να εκτελείται και είναι «ζωντανή». Ένα ακόμη ζήτημα είναι η ασυμβατότητα του τύπου των δεδομένων που το πρόγραμμα διαβάζει και που είναι αποδεκτά από την βάση. Για παράδειγμα δεν μπορεί σε ένα πεδίο int της βάσης να εισαχθεί string. Η πρώτη σκέψη που έγινε είναι να μετατρέπονται όποια δεδομένα πρέπει στον τύπο που πρέπει. Πάντα όμως ο στόχος στην εφαρμογή αυτή είναι η ταχύτητα και όσο το δυνατόν μικρότερη πολυπλοκότητα του κώδικα. Κρίθηκε λοιπόν απλούστερο να γίνουν κάποιες συγκρίσεις επιπλέον παρά να μετατρέπει η εφαρμογή τα δεδομένα από τον ένα τύπο στον άλλο. Π.χ. η βάση του WordNet χρησιμοποιεί όπου υπάρχει αρίθμηση το δεκαεξαδικό σύστημα. Κάπου λοιπόν μπορεί να υπάρχει ο αριθμός 0a που στο δεκαδικό σύστημα είναι το δέκα. Αν λοιπόν επιλεγόταν η διαδικασία μετατροπής από τον ένα τύπο στον άλλο θα έπρεπε να βρεθεί τρόπος να μετατραπεί ο αριθμός αυτός στο δεκαδικό σύστημα για να το χρησιμοποιήσει η εφαρμογή και πολλά ακόμα προβλήματα μπορεί να προέκυπταν. Αντί αυτού και χρησιμοποιώντας το παραπάνω παράδειγμα προτιμήθηκε να συγκρίνεται το AnsiString που υπάρχει στην μνήμη με το ένα AnsiString που είναι ίσο με 0a. Αν αυτά είναι ίσα συμπεραίνεται ότι το πρόγραμμα έχει διαβάσει τον αριθμό δέκα. Κατά ανάλογο τρόπο γίνονται όσες μετατροπές απαιτούνται. 22

Βέβαια σε κάποιες περιπτώσεις δεν μπορεί να αποφευχθεί η μετατροπή από τον έναν τύπο στον άλλον. Αυτός όμως έχει περιοριστεί στις απόλυτα απαραίτητες μετατροπές. Λόγου χάρη, για να γίνει η επικοινωνία με την βάση ο χρήστης πληκτρολογεί κάποια στοιχεία. Αυτά μετατρέπονται σε string και τα χρησιμοποιεί η εφαρμογή για να μπορέσει να επιτύχει τη σύνδεση. Πολύ συχνά το πρόγραμμα έχει σαν κριτήριο για το αν έχει διαβάσει έναν ολόκληρο κωδικό ή μία ολόκληρη λέξη κτλ τον χαρακτήρα κενό. Αυτός ο χαρακτήρας μπορεί να έχει προστεθεί ήδη στο AnsiString που σχηματίζει η εφαρμογή. Έτσι για παράδειγμα αντί να έχουμε την λέξη test στην μνήμη έχουμε την λέξη test με ένα κενό χαρακτήρα στο τέλος της. Αντί να γίνεται προσπάθεια να μην προστίθεται στο AnsiString αυτός ο χαρακτήρας πράγμα που σε κάποιες περιπτώσεις αποδεικνύεται ιδιαίτερα πολύπλοκο, αυτός απαλείφεται. Χρησιμοποιείται μία συνάρτηση που απαλείφει τον όποιο κενό χαρακτήρα υπάρχει στην αρχή και στο τέλος του AsniString. Η εφαρμογή επίσης πρέπει να μπορεί να αφαιρεί ή να τροποποιεί και άλλους χαρακτήρες ή σειρά χαρακτήρων από τα AnsiString που έχει στην μνήμη. Ανεξάρτητα από την θέση που έχουν αυτοί. Δηλαδή ακόμα και αν δεν είναι στο τέλος ή στην αρχή του AnsiString Σημαντικό είναι να ενημερώνεται και ο χρήστης της εφαρμογής για την πρόοδο των εργασιών. Η εφαρμογή ξέρει εκ των προτέρων πόσες εγγραφές πρέπει να περάσει στην βάση. Ανάλογα προετοιμάζεται και η μπάρα εργασιών και κάθε φορά που μία γραμμή περνάει στην βάση ενημερώνει το πρόγραμμα την μπάρα για την εξέλιξη αυτή. Η μπάρα εργασιών λοιπόν γεμίζει όσο περνάνε δεδομένα μέσα στην βάση του σχεσιακού μοντέλου. Επίσης ο χρήστης της εφαρμογής ενημερώνεται για το ποια εργασία εκτελείται κάθε φορά. Ενημερώνεται π.χ. ότι δημιουργείται το table word. Έτσι μπορεί να αντιληφθεί ότι η μία μπάρα τον ενημερώνει για την εργασία που το πρόγραμμα λέει ότι εκτελείται. Υπάρχει μία ακόμα μπάρα προόδου εργασιών που ενημερώνει τον χρήστη για την γενικότερη πρόοδο. Η εφαρμογή μετά από την εκτέλεση οποιασδήποτε SQL εντολής φροντίζει να σβήσει από την μνήμη την εντολή που μόλις εκτέλεσε ώστε να μην υπάρχει περίπτωση λάθους. ` 23

6.2 Δημιουργία table word To table word δημιουργείται μετατρέποντας το αρχείο index.sense της βάσης του WordNet. To αρχείο αυτό περιέχει τις λέξεις αλλά και τις συσχετιζόμενες έννοιες για την κάθε λέξη. Με τον τρόπο που είναι δομημένο το αρχείο μπορεί μία λέξη να αναφέρεται μία αλλά και παραπάνω φορές. Όμως αυτό που χρειάζεται στο table word είναι να υπάρχει μία και μόνο αναφορά στην κάθε λέξη. Δεν αρκεί λοιπόν να διαβάζει το πρόγραμμα την λέξη από κάθε γραμμή και να την περνάει στην βάση δεδομένων του σχεσιακού μοντέλου αλλά και να συγκρίνει αν αυτή είναι ίδια ή διαφορετική με την προηγούμενη. Κάθε φορά που περνάει μία εγγραφή στην βάση αυξάνεται και η αρίθμηση. Η αρίθμηση αυτή αποτελεί και τον μοναδικό κωδικό για την λέξη που περνιέται στην βάση κάθε φορά. Θα παρατεθεί ένα μικρό δείγμα του αρχείου για να γίνουν πιο κατανοητά όσα προαναφέρθηκαν: 3-d%1:09:00:: 05939948 2 0 3-d%1:10:00:: 06618937 1 0 3-dimensional%5:00:00:multidimensional:00 00660809 1 0 3-hitter%1:04:00:: 00475403 1 1 3-membered%5:00:00:membered:00 01502796 1 0 30%1:23:00:: 13749407 1 4 30%5:00:00:cardinal:00 02189306 1 27 300%5:00:00:cardinal:00 02198409 1 0 300th%5:00:00:ordinal:00 02212108 1 0 30_minutes%1:28:00:: 15228162 1 15 Βάση αυτού το δείγματος από το αρχείο στην βάση θα έχουμε: Wordid Lemma 1 3-d 2 3-dimensional 3 3-hitter 4 3-membered 5 30 6 300 7 30 minutes Το table word όπως έχει ίσως γίνει κατανοητό αποτελείται από 2 πεδία. Το πρώτο πεδίο περιέχει την αρίθμηση, τον κωδικό δηλαδή της λέξης. Το όνομα του 24

πεδίου που περιέχει την αρίθμηση ονομάζεται wordid. Tο δεύτερο πεδίο περιέχει την ίδια την λέξη και ονομάζεται lemma. Αναλυτικότερα, η εφαρμογή διαβάζει χαρακτήρα-χαρακτήρα το αρχείο. Κάθε χαρακτήρα που διαβάζει τον προσθέτει σε ένα AnsiString μέχρι να βρει τον χαρακτήρα %. Άρα το πρόγραμμα αρχικά εξετάζει αν ο κάθε χαρακτήρας είναι ίσος με τον χαρακτήρα %. Όταν διαβάσει τον χαρακτήρα αυτόν η εφαρμογή αντιλαμβάνεται ότι μέσα στο AnsiString υπάρχει αποθηκευμένη η λέξη της γραμμής. Οπότε μπορεί να εισάγει την λέξη αυτή στην βάση. Πριν γίνει όμως αυτό πρέπει να εξεταστεί αν έχει ξαναπεραστεί η λέξη αυτή στην βάση. Για να διαπιστωθεί αυτό αρκεί να γίνει σύγκριση με την προηγούμενη λέξη που έχει περαστεί στην βάση. Έτσι, κάθε λέξη που διαβάζει το πρόγραμμα αποθηκεύεται σε μια μεταβλητή για να μπορέσει να συγκριθεί με την επόμενη. Όποτε τελικά βρεθεί λέξη που δεν έχει περάσει το πρόγραμμα στην βάση, αυξάνεται και η αρίθμηση. Ο εκάστοτε αριθμός που υπάρχει στην μεταβλητή της αρίθμησης αποτελεί και τον κωδικό της λέξης στην βάση. Η λέξη και ο αριθμός εισάγονται στην βάση. Η διαδικασία αυτή επαναλαμβάνεται όταν το πρόγραμμα εντοπίσει ότι διαβάζει την επόμενη γραμμή. Άρα, κάπου πρέπει να υπάρχει έλεγχος αν ο χαρακτήρας που το πρόγραμμα διάβασε είναι ο χαρακτήρας αλλαγής γραμμής. 6.3 Δημιουργία table sense Για την δημιουργία του table sense χρησιμοποιείται για μία ακόμα φορά το αρχείο index.sense. Σε αυτή όμως την περίπτωση το πρόγραμμα οφείλει να περάσει όλες τις γραμμές του αρχείου για να υπάρχει το σύνολο των νοημάτων για κάθε λέξη. Καλό σε αυτή την περίπτωση είναι να υπάρξει πρώτα μία αναφορά στα πεδία που έχει το table sense. Τα πεδία που το αποτελούν είναι το wordid, casedwordid, synsetid, rank, lexid και tagcount. Η παρούσα έκδοση δεν περνάει δεδομένα στο casedwordid. Παρατίθεται λοιπόν πάλι το ίδιο απόσπασμα του αρχείου για να εξεταστεί τι μεταφέρεται από την κάθε γραμμή: 25

3-d%1:09:00:: 05939948 2 0 3-d%1:10:00:: 06618937 1 0 3-dimensional%5:00:00:multidimensional:00 00660809 1 0 3-hitter%1:04:00:: 00475403 1 1 3-membered%5:00:00:membered:00 01502796 1 0 30%1:23:00:: 13749407 1 4 30%5:00:00:cardinal:00 02189306 1 27 300%5:00:00:cardinal:00 02198409 1 0 300th%5:00:00:ordinal:00 02212108 1 0 30_minutes%1:28:00:: 15228162 1 15 table sense: Βασιζόμενοι λοιπόν στο απόσπασμα αυτό θα έχουμε τις εξής γραμμές στο Wordid Casedwordid Lexid Synsetid Rank Tagcount 180-0 105939948 2 0 180-0 106618937 1 0 181-0 300660809 1 0 182-0 100475403 1 1 183-0 301502796 1 0 184-0 11374940 1 4 184-0 302189306 1 27 185-0 302198409 1 0 186-0 302212108 1 0 187-0 115228162 1 15 Θα εξεταστεί τώρα η πρώτη γραμμή και ανάλογα δημιουργούνται και οι επόμενες. Στο πεδίο wordid έχουμε των κωδικό που έχει η λέξη 3-d στο table word. To casedwordid δεν ενημερώνεται, στο lexid μπαίνει ό,τι νούμερο υπάρχει μετά το δεύτερο σύμβολο :. Στο synsetid έχουμε τον κωδικό που ακολουθεί μετά τον πρώτο κενό χαρακτήρα της γραμμής. Στο rank το νούμερο μετά το δεύτερο κενό χαρακτήρα και στο tagcount το νούμερο μετά τον τρίτο κενό χαρακτήρα. Ανάλογα ενημερώνονται και οι επόμενες γραμμές. Στο πεδίο synsetid μπροστά από τον κωδικό παρατηρείται ότι υπάρχει και ένα νούμερο. Τα νούμερα αυτά μπορεί να είναι 1 ή 2 ή 3 ή 4. Το τι νούμερο θα μπει μπροστά από τον κωδικό συμπεραίνεται από το νούμερο που ακολουθεί μετά το σύμβολο %. Εκεί μπορεί να συναντηθούν οι εξής περιπτώσεις: 1,2,3,4,5. Ό,τι νούμερο συναντάται μπαίνει μπροστά από το synsetid εκτός από την περίπτωση του 5 26

που μπαίνει πάλι 3. Τα νούμερα αυτά αντιστοιχούν στην κατηγορία-αρχείο που ανήκει η λέξη στην οποία αντιστοιχεί το νόημα που αναφέρεται η γραμμή. Δηλαδή το ένα σημαίνει ότι η αναφορά αφορά noun και η λέξη την βρίσκεται στο αρχείο data.noun. Αντίστοιχα το 2 σημαίνει ότι ανήκει στα verbs και στο αρχείο data.verb, το 3 και 5 στα adjectives και στο αρχείο data.adj και τέλος το 4 στα adverbs και στο αρχείο data.adv. Θα γίνουν περισσότερο κατανοητά τα όσα προαναφέρθηκαν στην συνέχεια αναλύοντας τον κώδικα που δημιουργεί το table sense. Η λογική παραμένει ίδια όπως και σε όλα τα tables. Διαβάζουμε χαρακτήραχαρακτήρα το αρχείο. Κάθε χαρακτήρα τον προσθέτουμε σε ένα AnsiString. Ανάλογα με το τι χαρακτήρες το πρόγραμμα διαβάζει παίρνει και τις αποφάσεις που πρέπει. Όλα αυτά βέβαια προϋποθέτουν πάντα ότι είναι γνωστή η δομή των αρχείων. Επειδή στην διαδικασία μεταφοράς των δεδομένων δημιουργεί μεγάλη καθυστέρηση η συχνή επικοινωνία με την βάση, προτιμήθηκε η ίδια η εφαρμογή να συμπεραίνει ποιο είναι το wordid και όχι να το αναζητά από το table word. Αυτό μπορεί να γίνει διότι μέσω του ίδιου αρχείου δημιουργείται και το table word. Έτσι, αναπαράγεται ο τρόπος που η εφαρμογή ενημερώνει το wordid του table word. Κατά συνέπεια, το πρόγραμμα διαβάζει και πάλι την λέξη κάθε γραμμής και κάνει σύγκριση αν είναι ίδια με την προηγούμενη και αυξάνει ή δεν αυξάνει την αρίθμηση με το ίδιο σκεπτικό που έγινε και στο table word. Μόνο που αυτό το wordid μπορεί να το περάσει η εφαρμογή στην βάση και πάνω από μία φορά. Η σύγκριση αυτήν τη φορά εξυπηρετεί στο να γνωρίζει ο χρήστης αν θα ξαναπεράσει το ίδιο wordid με την προηγούμενη εγγραφή ή αν θα πρέπει αυτό να αυξηθεί κατά ένα και μετά να περαστεί στην βάση. Το πρόγραμμα λοιπόν έχει διαβάσει την λέξη της γραμμής. Συνεχίζει και διαβάζει τον αμέσως επόμενο χαρακτήρα από το χαρακτήρα %. Αυτός ο χαρακτήρας μπορεί να είναι 1 ή 2 ή 3 ή 4 ή 5. Όπως αναφέρθηκε και παραπάνω αυτός ο χαρακτήρας μας βοηθά να καταλάβουμε με ποιο νούμερο πρέπει να ξεκινάει το synsetid. Μετά την δεύτερη φορά που το πρόγραμμα βρει τον χαρακτήρα : διαβάζει τους δύο επόμενους χαρακτήρες και αυτοί αποτελούν το lexid. Μετά τον πρώτο κενό χαρακτήρα της γραμμής έχουμε το synsetid. Το πρόγραμμα καταλαβαίνει ότι έφτασε στο τέλος του κωδικού όταν βρει και τον δεύτερο κενό χαρακτήρα. 27

Ακολουθεί ένας χαρακτήρας, κενό και ένας ακόμα και το πρόγραμμα έφτασε στο τέλος του αρχείου ή στο τέλος της γραμμής. Οι χαρακτήρες αυτοί με την σειρά που τους διαβάζει το πρόγραμμα είναι το rank και το tagcount. Μόλις το πρόγραμμα εντοπίσει αλλαγή γραμμής ή τέλος αρχείου περνάει τα δεδομένα που συνέλεξε στο table sense. Κάθε φορά που υπάρχει αλλαγή γραμμής σβήνονται τα δεδομένα που είναι κρατημένα στις μεταβλητές του προγράμματος. 6.4 Δημιουργία table synset Για την δημιουργία του table synset πρέπει να διαβαστούν τέσσερα διαφορετικά αρχεία. Στα τέσσερα αυτά αρχεία πρέπει να γίνει ακριβώς η ίδια επεξεργασία. Έτσι λοιπόν αρκεί να επαναληφθεί η διαδικασία αυτή μία φορά για κάθε αρχείο. Τα αρχεία που διαβάζονται είναι το data.noun, το data.verb, το data.adj και το data.adv. Καλό είναι να γίνει πρώτα μία αναφορά στα πεδία που αποτελούν το table synset και στην συνέχεια να αναλυθεί το πώς ενημερώνονται τα πεδία αυτά. Τα πεδία που αποτελούν το table synset είναι το synsetid, pos, categoryid και definition. Κρίνεται σκόπιμο να παρατεθεί μία γραμμή ενός αρχείου από αυτά που διαβάζει το πρόγραμμα: 00001740 03 n 01 entity 0 003 ~ 00001930 n 0000 ~ 00002137 n 0000 ~ 04424418 n 0000 that which is perceived or known or inferred to have its own distinct existence (living or nonliving) Παρόλο που φαίνεται να πιάνει στο κείμενο αυτό πάνω από μία γραμμή πρέπει να αντιμετωπίζεται ως μία. Στο πεδίο synsetid τοποθετείται ο κωδικός που συναντάται πρώτος. Μπροστά από τον κωδικό αυτό τοποθετείται το νούμερο 1 ή το 2 ή το 3 ή το 4 ανάλογα με το ποιο αρχείο διαβάζει το πρόγραμμα. Ο αριθμός 1 μπαίνει όταν διαβάζει το πρόγραμμα το αρχείο data.noun, ο αριθμός 2 όταν διαβάζει το data.verb, το νούμερο 3 μπαίνει όταν διαβάζει το data.adj και το νούμερο 4 όταν διαβάζει το data.adv. Στο πεδίο categoryid τοποθετείται το νούμερο που ακολουθεί τον πρώτο κωδικό και στο πεδίο pos στην συγκεκριμένη περίπτωση το n ή ό,τι υπάρχει στην 28

θέση αυτή. Στο definition τοποθετείται ό,τι ακολουθεί τον χαρακτήρα μέχρι το τέλος της γραμμής ή μέχρι τον χαρακτήρα ; Βάσει του αποσπάσματος του αρχείου που παρατίθεται πιο πάνω στο table θα έχουμε: Synsetid Pos Categoryid Definition 100001740 N - that which is perceived or known or inferred to have its own distinct existence (living or nonliving) Καταρχήν το πρόγραμμα πρέπει να προσπεράσει τις πρώτες είκοσι εννιά γραμμές του κάθε αρχείου που διαβάζει, διότι σε αυτές υπάρχουν πληροφορίες σχετικά με το copyright κτλ. Όταν το πρόγραμμα προσπεράσει τις γραμμές αυτές αρχίζει και διαβάζει την κάθε γραμμή μέχρι να συναντήσει το πρώτο κενό. Τότε μέσα στο AnsiString υπάρχει το synsetid. Σαν πρώτο νούμερο στο synsetid μπαίνει το νούμερο που αντιστοιχεί στο αρχείο που εκείνη την στιγμή διαβάζει το πρόγραμμα. Στο πεδίο pos τοποθετείται ο χαρακτήρας που βρίσκουμε μεταξύ του δεύτερου και τρίτου κενού χαρακτήρα της γραμμής. Το πρόγραμμα συνεχίζει και διαβάζει την γραμμή. Από την στιγμή που συναντήσει τον χαρακτήρα ξέρει ότι ακολουθεί το string που πρέπει να βάλει στο πεδίο definition. Καταλαβαίνει ότι έφτασε στο τέλος του string που πρέπει να βάλει στο πεδίο definition όταν φτάσει στο τέλος της γραμμής ή όταν συναντήσει τον χαρακτήρα ;. Το πρόγραμμα οφείλει στην περίπτωση που συναντήσει τον χαρακτήρα ; να προχωρήσει μέχρι την επόμενη γραμμή. Επαναλαμβάνεται η διαδικασία αυτή τέσσερις φορές όσες και τα αρχεία που πρέπει να διαβάσει η εφαρμογή. Πρέπει λοιπόν το πρόγραμμα να είναι σε θέση να αντιλαμβάνεται ότι έφτασε στο τέλος του αρχείου και να προχωράει στο επόμενο. Κάθε φορά που αλλάζει το αρχείο που διαβάζει το πρόγραμμα, πρέπει να μπαίνει ο σωστός αριθμός στην αρχή του synsetid. 29

6.5 Δημιουργία table linkdef To table αυτό δεν δημιουργείται μεταφέροντας δεδομένα από κάποιο αρχείο. Το table αυτό αποτελείται από τρία πεδία. Από αυτά μας ενδιαφέρουν τα δύο δηλαδή το linkid και το name. To recurses στην παρούσα έκδοση δεν χρησιμοποιείται. Το table linkdef στην ουσία βοηθά τον χρήστη της βάσης να ξέρει ποιο linkid πρέπει να χρησιμοποιεί για να βρει τη σχέση που επιθυμεί. Το linkid χρησιμεύει όταν αναζητούνται σχέσεις μεταξύ των λέξεων (βλ. παράρτημα Γ). Αναφέρονται όλες οι πιθανές σχέσεις. Οι σχέσεις συνολικά ανέρχονται στις τριάντα. στην παρούσα έκδοση της εφαρμογής υποστηρίζονται οι δεκαεπτά από αυτές και συγκεκριμένα οι σχέσεις Hypernyms, Antonyms, Hyponyms, Entailment, Similar, Member Meronym, Substance Meronym, Part Meronym, Member Holonym, Substance Holonym, Part Holonym, Attribute, Verb Group, Domain of Synset, Member of This Domain. Instance of, Show Instances. Έχουμε λοιπόν 1 Antonyms, 2 Hypernyms κ.ο.κ όπου το νούμερο είναι το linkid και name το όνομα της σχέσης. 6.6 Δημιουργία του table semlinkref Αυτό το table περιέχει όλες τις σχέσεις εκτός από τα αντίθετα. Έχει ήδη υπάρξει αναφορά στο ποιες σχέσεις περιέχονται στο table στην παρούσα έκδοση. Για την δημιουργία του table semlinkref το πρόγραμμα διαβάζει τα αρχεία data.noun, data.verb, data.adj, data.adv. To table αυτό αποτελείται από τα εξής πεδία. To synset1id, synset2id και linkid. Παρατίθεται λοιπόν μία χαρακτηριστική γραμμή που προέρχεται από ένα εκ των αρχείων που το πρόγραμμα διαβάζει: 01088857 04 n 01 health_care 0 004 @ 01087178 n 0000 ~ 01089009 n 0000 ~ 01089179 n 0000 ~ 01089297 n 0000 social insurance for the ill and injured Το μέρος αυτό του αρχείου πρέπει να αντιμετωπίζεται ως μία γραμμή. Στο synset1id τοποθετείται ο πρώτος κωδικός της γραμμής. Προαπαιτούμενο όμως για να γίνει αυτή η εισαγωγή είναι να υπάρχει κάποια συσχετιζόμενη λέξη. 30

Στην συγκεκριμένη λοιπόν περίπτωση θα περαστεί σε τέσσερις διαφορετικές γραμμές του table το 01088857, αφού μπροστά τοποθετηθεί το 1 ή 2 ή 3 ή 4 όπως έχει προαναφερθεί. Δηλαδή ανάλογα με το αρχείο από το οποίο διαβάζει το πρόγραμμα. Θα περαστεί τέσσερις φορές διότι υπάρχουν τέσσερις αναφορές για συσχετιζόμενες λέξεις. Αυτό φαίνεται από τα σύμβολο @ όπως και από το σύμβολο ~. Το σύμβολο @ σημαίνει ότι υπάρχει λέξη με σχέση hypernym με το synset1id. To σύμβολο ~ σημαίνει αντίστοιχα ότι υπάρχει λέξη με σχέση hyponym. Υπάρχουν 30 διαφορετικά τέτοια σύμβολα, ένα για κάθε σχέση (βλ. εικόνα 1, κεφ. 6). Εικόνα 1 31

Σε περίπτωση που συναντηθεί ένα από τα σύμβολα που αντιστοιχεί σε σχέση που μας ενδιαφέρει, τότε και μόνο τότε πρέπει να ακολουθήσουν οι ενέργειες που περιγράφονται παρακάτω. Εδώ είναι σημαντικό να τονιστεί ότι για να αφαιρεθούν σχέσεις που μεταφέρονται απλά αφαιρείται από τον κώδικα η έλεγχος που γίνεται για το σύμβολο που αντιστοιχεί στην σχέση αυτή. Αντίθετα εάν ο χρήστης επιθυμεί να συμπεριληφθούν επιπλέον σχέσεις αυτό επιτυγχάνεται με κώδικα όμοιο με αυτόν που δημιουργεί το table lexlinkref. Ας εξεταστεί λοιπόν η πρώτη σχέση από το απόσπασμα του αρχείου που παρατίθεται παραπάνω. Μετά το σύμβολο @ απαντάται ο κωδικός που τοποθετείται στο πεδίο synset2id και μπροστά από το νούμερο αυτό τοποθετείται το 1 ή 2 ή 3 ή 4 ανάλογα με τον χαρακτήρα που ακολουθεί τον κωδικό. 1 όταν υπάρχει ο χαρακτήρας n, 2 όταν υπάρχει το v, 3 όταν εμφανίζεται a ή s και 4 όταν υπάρχει r. Στο πεδίο linkid μπαίνει το νούμερο που αντιστοιχεί στην σχέση hypernym δηλαδή το 2. Ανάλογα με την σχέση που συναντιέται τοποθετείται και το ανάλογο νούμερο. Για την γραμμή που προαναφέρθηκε θα περάσει το πρόγραμμα στο table semlinkref τα εξής δεδομένα: Synset1id Synset2id Linkid 101088857 101087178 2 101088857 101089009 3 101088857 101089179 3 101088857 101089297 3 αναφερθεί. Τι σημαίνει το 2, το 3 κτλ το βρίσκουμε στο table linkdef που έχουμε ήδη Αναλυτικότερα, θα περιγραφεί ο τρόπος που επιτυγχάνονται τα παραπάνω. Το πρόγραμμα διαβάζει μέχρι να βρει τον πρώτο κενό χαρακτήρα της γραμμής. Τότε το πρόγραμμα έχει διαβάσει όλο το synset1id. Οφείλει όμως μπροστά να βάλει το 1 ή 2 ή 3 ή 4 ανάλογα με το αρχείο που διαβάζει. 32