ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Σχετικά έγγραφα
Γλωσσική Τεχνολογία. Natural Language Toolkit

ΕΠΛ132 Άσκηση 3 - Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Εισαγωγικό Φροντιστήριο

7 Present PERFECT Simple. 8 Present PERFECT Continuous. 9 Past PERFECT Simple. 10 Past PERFECT Continuous. 11 Future PERFECT Simple

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Τεχνικές NLP Σχεδιαστικά Θέματα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

derivation of the Laplacian from rectangular to spherical coordinates

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Συντακτικές λειτουργίες

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

14 Lesson 2: The Omega Verb - Present Tense

ΟΡΓΑΝΙΣΜΟΣ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΔΙΟΚΤΗΣΙΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

Οι αδελφοί Montgolfier: Ψηφιακή αφήγηση The Montgolfier Βrothers Digital Story (προτείνεται να διδαχθεί στο Unit 4, Lesson 3, Αγγλικά Στ Δημοτικού)

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

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

@ BY AVENUES PRIVATE INSTITUTE JUNE 2014

«ΨΥΧΙΚΗ ΥΓΕΙΑ ΚΑΙ ΣΕΞΟΥΑΛΙΚΗ» ΠΑΝΕΥΡΩΠΑΪΚΗ ΕΡΕΥΝΑ ΤΗΣ GAMIAN- EUROPE

CS 150 Assignment 2. Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Επανάληψη για τις Τελικές εξετάσεις

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

The Simply Typed Lambda Calculus

Present Participles. Verbal Adjectives with Present Aspect. A lesson for the Paideia web-app Ian W. Scott, 2015

Προγραμματισμός Υπολογιστών με C++

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

THEODORE LALOS ENGLISH USAGE BOOSTER D CLASS PROFICIENCY

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Προεπεξεργασία Κειμένου

Διαδικασιακός Προγραμματισμός

EE512: Error Control Coding

ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. ΘΕΜΑ: «ιερεύνηση της σχέσης µεταξύ φωνηµικής επίγνωσης και ορθογραφικής δεξιότητας σε παιδιά προσχολικής ηλικίας»

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

Λέξεις, φράσεις και προτάσεις

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

LESSON 16 (ΜΑΘΗΜΑ ΔΕΚΑΕΞΙ) REF : 102/018/16-BEG. 4 March 2014

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Section 1: Listening and responding. Presenter: Niki Farfara MGTAV VCE Seminar 7 August 2016

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Προγραμματισμός ΙI (Θ)

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Η ΨΥΧΙΑΤΡΙΚΗ - ΨΥΧΟΛΟΓΙΚΗ ΠΡΑΓΜΑΤΟΓΝΩΜΟΣΥΝΗ ΣΤΗΝ ΠΟΙΝΙΚΗ ΔΙΚΗ

John Mavrikakis ENGLISH MULTIBOOK

LESSON 12 (ΜΑΘΗΜΑ ΔΩΔΕΚΑ) REF : 202/055/32-ADV. 4 February 2014

FINAL TEST B TERM-JUNIOR B STARTING STEPS IN GRAMMAR UNITS 8-17

Chapter 29. Adjectival Participle

Section 8.3 Trigonometric Equations

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

(C) 2010 Pearson Education, Inc. All rights reserved.

Finite Field Problems: Solutions

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV. 18 February 2014

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ Α. Διαβάστε τις ειδήσεις και εν συνεχεία σημειώστε. Οπτική γωνία είδησης 1:.

Subject - Students love Greek.

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Adjectives. Describing the Qualities of Things. A lesson for the Paideia web-app Ian W. Scott, 2015

Πρακτική Εφαρμογή του Προγράμματος Σπουδών Επιπέδου Α' στην Διδασκαλία της Ελληνικής Γλώσσας. Στέφανος Παπαζαχαρίας

Όλοι οι χρήστες του Turnitin πρέπει να δημιουργήσουν ένα προφίλ χρήστη.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

Final Test Grammar. Term C'

Summer Greek. Lesson 3. NOUNS GENDER (does not refer to fe/male) masculine feminine neuter NUMBER singular plural. NOUNS -Case.

POINTERS, AGGREGATION, COMPOSITION

Transcript:

Ι. Στόχος ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΕΠΛ 232 Προγραμματιστικές Τεχνικές και Εργαλεία ΑΣΚΗΣΗ 1 Επεξεργασία Φυσικής Γλώσσας: Επισήμανση Μερών του Λόγου (Part-Of-Speech Tagging) Διδάσκων: Δημήτρης Ζεϊναλιπούρ Υπεύθυνος Εργαστηρίου: Παύλος Αντωνίου Ημερομηνία Ανάθεσης: Τρίτη, 12 Σεπτεμβρίου 2017 Ημερομηνία Παράδοσης: Τρίτη, 26 Σεπτεμβρίου 2017, Ώρα 12:00 μεσημέρι (14 ημέρες) (ο κώδικας να υποβληθεί σε zip μέσω του Moodle) http://www.cs.ucy.ac.cy/courses/epl232 Σε αυτήν την εργασία θα ασχοληθούμε με συμβολοσειρές, συναρτήσεις και επεξεργασία αρχείων. Στόχος αυτής της εργασίας είναι, εκτός από την εφαρμογή των διδασκόμενων εννοιών των διαλέξεων, να σας εισάγει σε ένα τομέα της πληροφορικής που μελετά την επεξεργασία φυσικής γλώσσας. II. Εισαγωγή Η επεξεργασία φυσικής γλώσσας (Natural Language Processing) είναι ένας διεπιστημονικός κλάδος της επιστήμης της πληροφορικής, της τεχνητής νοημοσύνης και της υπολογιστικής γλωσσολογίας και ασχολείται με τις αλληλεπιδράσεις μεταξύ των υπολογιστών και των ανθρώπινων (φυσικών) γλωσσών. Κατά συνέπεια, συνδέεται στενά με την αλληλεπίδραση ανθρώπου-υπολογιστή. Οι προκλήσεις σε αυτό τον τομέα της πληροφορικής, περιλαμβάνουν την κατανόηση φυσικής γλώσσας, δηλαδή την προσπάθεια να καταστούν ικανοί οι υπολογιστές να εξάγουν νοήματα από ανθρώπινα ή γλωσσικά δεδομένα, αλλά και την παραγωγή φυσικής γλώσσας. Ως "φυσική γλώσσα" εννοούμε μια γλώσσα που χρησιμοποιείται για την καθημερινή επικοινωνία από τους ανθρώπους, όπως Ελληνικά, Γαλλικά, Αγγλικά κλπ. Σε αντίθεση με τις «τεχνητές» γλώσσες, όπως οι γλώσσες προγραμματισμού και οι μαθηματικές ορολογίες, οι φυσικές γλώσσες έχουν εξελιχθεί καθώς περνούν από γενιά σε γενιά και είναι δύσκολο να επεξεργαστούν με ρητούς κανόνες. Η επεξεργασία Φυσικής Γλώσσας είναι μια ευρεία έννοια και καλύπτει πολλές διαδικασίες, από ένα απλό υπολογισμό συχνότητας λέξεων για να συγκριθούν διαφορετικά στυλ γραφής, μέχρι την πλήρη «κατανόηση» ανθρώπινων δηλώσεων/κειμένων/αλληλεπιδράσεων, τουλάχιστον στο βαθμό που είναι σε θέση να δώσει χρήσιμες απαντήσεις σε όλα αυτά. Οι τεχνολογίες που χρησιμοποιούνται για την επεξεργασία φυσικής γλώσσας γίνονται ολοένα και πιο διαδεδομένες. Για παράδειγμα, τα τηλέφωνα και οι φορητοί υπολογιστές υποστηρίζουν την αναγνώριση κειμένου και την αναγνώριση χειρόγραφου, προγράμματα επιτρέπουν να ανακτήσουμε κείμενα γραμμένα στα Αγγλικά και να τα διαβάσουμε στα Γαλλικά. Η ανάλυση κειμένου μας επιτρέπει να ανιχνεύσουμε το συναίσθημα στα tweets και στα blogs. Έτσι, η επεξεργασία της φυσικής γλώσσας έφτασε να διαδραματίζει κεντρικό ρόλο στην πολύγλωσση κοινωνία της πληροφορίας. Η επεξεργασία της φυσικής γλώσσας είναι και χρήσιμη για την εύρεση ονομάτων οντοτήτων, όπως ονόματα ατόμων ή οργανισμών μέσα σε κείμενο, αλλά και για άλλες διαδικασίες όπως η ανάκτηση πληροφοριών από το κείμενο, η περιληπτική παρουσίαση κλπ. Η εύρεση της ταυτότητας ονομάτων οντοτήτων μέσα σε κείμενα είναι μια πολύ ενδιαφέρουσα εφαρμογή της επεξεργασίας φυσικής γλώσσας που αναφέρεται στη βιβλιογραφία συχνά ως Named Entity Recognition and Disambiguation (NERD). Για παράδειγμα, μπορείτε να δείτε κάποια αποτελέσματα των τεχνικών τύπου NERD μέσω της εφαρμογής Ambiverse. Δοκιμάστε να δώσετε μια πρόταση π.χ. "Bush is a US president." και ζητήστε όπως αναλυθεί. Είναι εύκολο να έχουμε πρόσβαση σε κείμενα αποτελούμενα από εκατομμύρια λέξεις αφού υπάρχει αρκετό διαθέσιμο υλικό αναρτημένο στον Παγκόσμιο Ιστό (WWW). Σε αυτήν την εργασία σας ζητείται να γράψετε μερικές απλές ρουτίνες για την αναγνώριση μερών του λόγου (άρθρο, ουσιαστικό, επίθετο, ρήμα, σύνδεσμος, κτλ.) μέσα σε κείμενα και να έρθετε με αυτό τον τρόπο σε επαφή με ένα υποσχόμενο διαθεματικό τομέα της Πληροφορικής, αυτό της επεξεργασία φυσικής γλώσσας με Υπολογιστές.

ΙΙΙ. Περιγραφή Η επεξεργασία φυσικής γλώσσας, περιλαμβάνει διαδικασίες όπως επεξεργασία λέξεων ή συμβολοσειρών (strings) που σκοπό έχουν την αποσαφήνιση της, καθώς οι λέξεις είναι ασαφείς έχουν περισσότερο από μια έννοια. Ένα από τα συχνότερα πεδία έρευνας στην Επεξεργασία Φυσικής Γλώσσας είναι η Επισήμανση των μερών του λόγου (Part of Speech (POS) Tagging) που έχει να κάνει με τον αυτόματο καθορισμό των μερών του λόγου σε μία δεδομένη πρόταση και την επίλυση της συντακτικής αμφισημίας (syntactical ambiguity). Για να γίνει αυτό, χρειάζεται ένα λογισμικό που διαβάζει κείμενο σε κάποια γλώσσα και αναθέτει σε κάθε λέξη μια ετικέτα ανάλογα με το εάν είναι ουσιαστικό, ρήμα, επίθετο κλπ. Γνωρίζοντας το αν μια λέξη είναι ουσιαστικό ή ρήμα μπορεί να μας δώσει πληροφορίες για πιθανόν γειτονικές λέξεις όπως και σχετικά με την συντακτική δομή του κειμένου γύρω από αυτή τη λέξη. Αυτή η διαδικασία είναι μια σημαντική συνιστώσα της συντακτικής ανάλυσης (syntactic parsing). Όπως είπαμε και πιο πάνω, η διαδικασία POS tagging είναι η διαδικασία ανάθεσης ετικετών στις λέξεις ενός κειμένου. Η είσοδος στον αλγόριθμο που κάνει POS tagging είναι μια ακολουθία λέξεων και ένα σύνολο από ετικέτες και η έξοδος είναι μια ακολουθία ετικετών, η κάθε μία από τις οποίες ανήκει σε μια μόνο λέξη. Το POS tagging θεωρείται σαν μια διαδικασία αποσαφήνισης, έτσι ο στόχος ενός POS tagging αλγόριθμου είναι η εύρεση της σωστής ετικέτας για κάθε λέξη. Για παράδειγμα, η λέξη book μπορεί να είναι ένα ρήμα (book that flight) ή ουσιαστικό (hand me that book). Σε αυτήν την περίπτωση, ο αλγόριθμος που κάνει POS Tagging, πρέπει να επιλύσει την ασάφεια αναθέτοντας τη σωστή ετικέτα σε κάθε λέξη book (οι ετικέτες πρέπει να είναι διαφορετικές). Για να κάνουν POS tagging, οι αλγόριθμοι επεξεργασίας κειμένου, χρησιμοποιούν ένα σύνολο από ετικέτες. Υπάρχουν πολλά τέτοια σύνολα, αλλά σε αυτήν την εργασία θα χρησιμοποιήσουμε ετικέτες από το Penn Treebank II tag set όπως φαίνεται στον Πίνακα 1. Tag Description Tag Description CC conjunction, coordinating RBS adverb, superlative CD cardinal number RP adverb, particle DT determiner SYM symbol EX existential there TO infinitival to FW foreign word UH interjection IN conjunction, subordinating or VB verb, base form preposition JJ adjective VBZ verb, 3rd person singular present JJR adjective, comparative VBP verb, non-3rd person singular present JJS adjective, superlative VBD verb, past tense LS list item marker VBN verb, past participle MD verb, modal auxillary VBG verb, gerund or present participle noun, singular or mass WDT wh-determiner S noun, plural WP wh-pronoun, personal P noun, proper singular WP$ wh-pronoun, possessive PS noun, proper plural WRB wh-adverb PDT predeterminer. punctuation mark, sentence closer POS possessive ending, punctuation mark, comma PRP pronoun, personal : punctuation mark, colon PRP$ pronoun, possessive ( contextual separator, left paren RB adverb ) contextual separator, right paren RBR adverb, comparative Πίνακας 1: Penn Treebank Tag Set II. Για παράδειγμα, ένας αλγόριθμος που κάνει POS tagging μπορούσε, δοθέντος της πρότασης: John loves eating. να δώσει αντιστοίχως τις ετικέτες, VBZ, VBG και. από τον πίνακα 1 όπως φαίνεται πιο κάτω: John/ loves/vbz eating/vbg./. 2 από 16

Σε αυτήν την εργασία θα διερευνήσουμε διάφορες υπό-λειτουργίες που αποτελούν δομικά στοιχεία της ευρύτερης λειτουργίας αυτόματης προσθήκης ετικετών μέρους του λόγου στο κείμενο. Θα δούμε ότι η ετικέτα που πρέπει να αναθέσουμε σε μια λέξη εξαρτάται από τη λέξη και το πλαίσιο της μέσα σε μια πρόταση. Πιο συγκεκριμένα, θα ασχοληθούμε με κάποιες απλές διαδικασίες επισήμανσης (tagging) κειμένου. Πιο κάτω, παρουσιάζουμε αναλυτικά αυτές της διαδικασίες. 1) Διαχωρισμός Κειμένου (Tokenize Document) Το tokenization είναι ένας τρόπος που χωρίζει ένα κείμενο σε tokens. Αυτά τα tokens μπορεί να είναι παράγραφοι, προτάσεις, μεμονωμένες λέξεις ή σημεία στίξης. Ο χωρισμός μπορεί να γίνει βάσει ενός ή πολλών χαρακτήρων. Για παράδειγμα, εάν θέλουμε τις λέξεις μιας πρότασης, ο διαχωρισμός θα γίνει βάσει των χαρακτήρων: ' ', '\t', '\r', '\n'. Στην επεξεργασία φυσικής γλώσσας όταν κάνουμε tokenization τα tokens που χρειαζόμαστε δεν είναι μόνο οι λέξεις αλλά και τα σημεία στίξεως όπως κόμμα (,), τελεία (.), θαυμαστικό (!), ερωτηματικό (?) όπως επίσης και άλλοι χαρακτήρες όπως μονή απόστροφος ('), διπλή απόστροφος ("), άνοιγμα παρένθεσης ( ( ), κλείσιμο παρένθεσης ( ) ), άνω-κάτω τελεία (:) κ.α. 2) Προεπιλεγμένος Επισημαντήρας (Default Τagger) Έχοντας διαχωρίσει το κείμενο σε tokens, ακολουθεί η διαδικασία της ανάθεσης ετικετών (tags) στο κάθε token. Ο πιο απλός tagger εκχωρεί την ίδια ετικέτα σε κάθε token. Για να έχουμε το καλύτερο αποτέλεσμα, θα ήταν λογικό να επισημαίνουμε κάθε λέξη με την πιο πιθανή ετικέτα που μπορεί να ανατεθεί σε ένα token. Κάνοντας στατιστική ανάλυση μεγάλου όγκου κειμένων, βρέθηκε ότι το μέρος του λόγου που συναντάται πιο συχνά μέσα στα κείμενα είναι το ουσιαστικό (περίπου 1/8 των λέξεων στατιστικά είναι ουσιαστικά). Άρα η ανάθεση της ετικέτας ΝΝ (σημαίνει ουσιαστικό, δες Πίνακα 1) σε κάθε token αποτελεί μια καλή επιλογή για τον default tagger. Παράδειγμα: Δοθέντος μιας πρότασης: I do not like green eggs and ham, I do not like them Sam I am!, το αποτέλεσμα εκτέλεσης του default tagger πρέπει να είναι το ακόλουθο (η παρουσίαση των αποτελεσμάτων πιο κάτω διαφέρει λίγο από τα αποτελέσματα που πρέπει να δώσετε στην εργασία δείτε αναλυτικά τα παραδείγματα στο τέλος της εκφώνησής): [('I', ''), ('do', ''), ('not', ''), ('like', ''), ('green', ''), ('eggs', ''), ('and', ''), ('ham', ''), (',', ''), ('I', ''), ('do', ''), ('not', ''), ('like', ''), ('them', ''), ('Sam', ''), ('I', ''), ('am', ''), ('!', '')] Είναι πέραν πάσης αμφιβολίας ότι η πιο πάνω μέθοδος δεν είναι η καλύτερη για να αναθέσει τις σωστές ετικέτες σε κάθε λέξη, αφού ανάθεσε σε όλες τις λέξεις την ίδια ετικέτα! Η τεχνική αυτή ωστόσο μας επιτρέπει να εισάγουμε τους επόμενους taggers οι οποίοι έχουν περισσότερη ακρίβεια. 3) Επισημαντήρας Κανονικών Εκφράσεων (Regular Εxpression Τagger) Ο Regular expression tagger εκχωρεί ετικέτες σε tokens βάσει μοτίβων αντιστοίχισης, οπότε δεν έχουμε την ίδια ετικέτα για όλα τα tokens. Για παράδειγμα, μπορεί να μαντέψουμε ότι οποιαδήποτε λέξη της Αγγλικής γλώσσας που τελειώνει σε ed είναι ο αόριστος ενός ρήματος, και κάθε λέξη που τελειώνει με 's είναι ένα κτητικό ουσιαστικό (possessive noun). Οι ετικέτες αυτές μπορούν να εκφραστούν ως λίστα κανονικών εκφράσεων όπως φαίνεται στον πιο κάτω πίνακα: Κανονική έκφραση (μοτίβο Ετικέτα Σημασιολογία αντιστοίχισης) ".*ing$" VBG Gerund ".*ed$" VBD Simple past ".*es$" VBZ 3 rd singular present ".*ould$" MD Modals ".*'s$" $ Possessive nouns ".*s$" S Plural nouns "^-?[0-9]+(.[0-9]+)?$" CD Cardinal numbers ".*" Nouns (default) Πίνακας 2: Λίστα κανονικών εκφράσεων POSIX και αντιστοίχισή τους σε ετικέτες. 3 από 16

Μέσα στις POSIX κανονικές εκφράσεις της πρώτης στήλης του πιο πάνω πίνακα έχουμε κάποιους χαρακτήρες που ειδική σημασία όπως φαίνεται στον πιο κάτω πίνακα: Σύμβολο Ταυτίζει. ακριβώς ένα οποιοσδήποτε χαρακτήρα (εκτός από το χαρακτήρα αλλαγής γραμμής) ^ αρχή του string $ τέλος του string * μηδέν ή περισσότερες εμφανίσεις του χαρακτήρα που προηγείται + μία ή περισσότερες εμφανίσεις του χαρακτήρα που προηγείται? μηδέν ή μία εμφανίσεις του χαρακτήρα που προηγείται Πίνακας 3: Ειδικοί χαρακτήρες των POSIX κανονικών εκφράσεων. Επιπλέον, η κλάση χαρακτήρων [] ταυτίζει οποιοδήποτε από τους χαρακτήρες που βρίσκονται μέσα στις αγκύλες. Η παύλα - δηλώνει μια περιοχή χαρακτήρων π.χ. [a-e]. O χαρακτήρας ^ μέσα στις [] ταιριάζει κάθε χαρακτήρα που δεν περικλείεται μέσα στις αγκύλες. Για παράδειγμα η κανονική έκφραση [ff]un ταυτίζει fun και Fun, η κανονική έκφραση b[aeiou]g ταυτίζει bag, beg, big, bog και bug, η κανονική έκφραση [^abc].* ταυτίζει ένα οποιοδήποτε string που να μην αρχίζει με τους χαρακτήρες a, b ή c. Με βάση τις πιο πάνω κανονικές εκφράσεις σημαίνει ότι: όλες οι λέξεις που έχουν την κατάληξη ing θα πάρουν την ετικέτα VBG, όσες έχουν την κατάληξη ed θα πάρουν την ετικέτα VBD, κλπ. Όσες λέξεις καταλήγουν σε κάτι που δεν καθορίζεται άμεσα στον Πίνακα 2 θα πάρουν την ετικέτα ΝΝ (αυτό σημαίνει η τελευταία γραμμή του Πίνακα 2). Για σκοπούς της άσκησης, τα περιεχόμενα του Πίνακα 2 δίνονται στο αρχείο regex.txt το οποίο παρουσιάζεται πιο κάτω:.*ing$ VBG.*ed$ VBD.*es$ VBZ.*ould$ MD.*'s$ $.*s$ S ^-?[0-9]+(.[0-9]+)?$ CD.* Παράδειγμα: Δίνεται μια πρόταση η οποία έχει γίνει tokenize: ['``', 'Only', 'a', 'relative', 'handful', 'of', 'such', 'reports', 'was', 'received', "''", ',', 'the', 'jury', 'said', ',', '``', 'considering', 'the', 'widespread', 'interest', 'in', 'the', 'election', ',', 'the', 'number', 'of', 'voters', 'and', 'the', 'size', 'of', 'this', 'city', "''", '.'] Βάσει του πιο πάνω πίνακα κανονικών εκφράσεων, η εκτέλεση ενός regular expression tagger θα δώσει το παρακάτω αποτέλεσμα: [('``', ''), ('Only', ''), ('a', ''), ('relative', ''), ('handful', ''), ('of', ''), ('such', ''), ('reports', 'S'), ('was', 'S'), ('received', 'VBD'), ("''", ''), (',', ''), ('the', ''), ('jury', ''), ('said', ''), (',', ''), ('``', ''), ('considering', 'VBG'), ('the', ''), ('widespread', ''), ('interest', ''), ('in', ''), ('the', ''), ('election', ''), (',', ''), ('the', ''), ('number', ''), ('of', ''), ('voters', 'S'), ('and', ''), ('the', ''), ('size', ''), ('of', ''), ('this', 'S'), ('city', ''), ("''", ''), ('.', '')] 4 από 16

Σε ένα τυπικό σύνολο λέξεων, αυτή η μέθοδος θα αναθέσει σωστά τις ετικέτες, μόνο σε περίπου ένα πέμπτο των λέξεων. Είναι καλύτερη μέθοδος από την προηγούμενη (που μπορούσε να αναθέσει στην καλύτερη περίπτωση μόνο ένα όγδοο των λέξεων) αλλά δεν είναι η βέλτιστη. Η γλώσσα προγραμματισμού C περιέχει μια βιβλιοθήκη (regex.h) που μπορεί να διαχειριστεί POSIX κανονικές εκφράσεις η οποία περιγράφεται ενδελεχώς στο http://man7.org/linux/manpages/man3/regexec.3.html. Παρόλα αυτά, κρίνουμε σκόπιμο όπως παραθέσουμε εδώ ένα μικρό κομμάτι πηγαίου κώδικα που αναδεικνύει τον τρόπο χρήσης της βιβλιοθήκης, και ειδικότερα της συνάρτησης regcomp(). Το πιο κάτω πρόγραμμα παρουσιάζει ότι η λέξη eating ταυτίζεται με την κανονική έκφραση.*ing$ (η συνάρτηση match επιστρέφει 1) ενώ η λέξη ate δεν ταυτίζεται (η συνάρτηση match επιστρέφει 0) και επίσης ότι η λέξη played ταυτίζεται με την κανονική έκφραση.*ed$ (η συνάρτηση match επιστρέφει 1). #include <stdio.h> #include <regex.h> /* * Match string against the extended regular expression in * pattern, treating errors as no match. * * Return 1 for match, 0 for no match. **/ int match(const char string[], char pattern[]) { int status; regex_t re; } if (regcomp(&re, pattern, REG_EXTENDED REG_NOSUB)!= 0) { return(0); /* Report error. */ } status = regexec(&re, string, (size_t) 0, NULL, 0); regfree(&re); if (status!= 0) { return(0); /* Report error. */ } return(1); int main() { printf("%d\n", match("eating", ".*ing$")); printf("%d\n", match("ate", ".*ing$")); printf("%d\n", match("played", ".*ed$")); return 0; } Σημείωση: Η χρήση της πιο πάνω βιβλιοθήκης (regex.h) δεν είναι υποχρεωτική (εάν έχετε χρόνο μπορείτε να το υλοποιήσετε την αιτουμένη λειτουργία με δικούς σας κανόνες) 4) Επισημαντήρας Αναζήτησης (Lookup Tagger) Πολλές λέξεις οι οποίες έχουν υψηλή συχνότητα σε ένα κείμενο (π.χ. and, of, in, κτλ.), δεν είναι ουσιαστικά (και καρά συνέπεια δεν πρέπει να λάβουν την ετικέτα ). Θυμηθείτε ότι οι 2 προηγούμενοι επισημαντήρες (Default tagger, Regular expression tagger) τις λέξεις αυτές τις κατατάσσουν εσφαλμένα ως ΝΝ. Έτσι, η ιδέα ενός lookup tagger είναι να προσπαθήσει να λύσει αυτό το πρόβλημα βρίσκοντας τις K συχνότερες λέξεις και να αποθηκεύοντας την πιο πιθανή ετικέτα τους. Γνωρίζοντας τώρα τις ετικέτες για τις K πιο συχνές λέξεις μας επιτρέπει να επισημάνουμε σωστά ένα μεγάλο μέρος των λέξεων (σχεδόν το ήμισυ στην πραγματικότητα για K=100 σύμφωνα με στατιστικές αναλύσεις). 5 από 16

Ο lookup tagger χρησιμοποίει ένα πίνακα αναζήτησης (lookup table), τα στοιχεία του οποίου είναι οι Κ συχνότερες λέξεις και η ετικέτα τους. Αν δεν είναι δυνατή η ανάθεση μιας ετικέτας σε μια λέξη βάσει του πίνακα, τότε χρησιμοποιείται ο regular expression tagger. Πιο κάτω παρουσιάζεται το σύνολο των K=100 συχνότερων χρησιμοποιούμενων λέξεων και η συχνότητα τους, όπως προκύπτει από κάποιες παραδειγματικές στατιστικές αναλύσεις. [('the', 5580), (',', 5188), ('.', 4030), ('of', 2849), ('and', 2146), ('to', 2116), ('a', 1993), ('in', 1893), ('for', 943), ('The', 806), ('that', 802), ('is', 732), ('``', 732), ('was', 717), ("''", 702), ('on', 657), ('at', 598), ('with', 545), ('be', 526), ('by', 497), ('as', 481), ('he', 451), ('said', 402), ('his', 399), ('will', 389), ('it', 363), ('from', 344), ('are', 328), (';', 314), ('has', 300), ('--', 300), ('an', 300), ('had', 279), ('who', 268), ('have', 265), ('not', 254), ('Mrs.', 253), ('were', 252), ('this', 250), ('would', 244), ('which', 244), ('their', 219), ('been', 212), ('they', 205), ('He', 191), ('one', 184), ('I', 179), ('but', 174), ('its', 174), ('or', 173), (')', 171), ('more', 171), ('Mr.', 170), ('up', 168), ('(', 168), ('all', 163), ('out', 161), ('last', 161), ('two', 157), (':', 149), ('other', 149), ('new', 148), ('first', 143), ('than', 138), ('year', 138), ('A', 137), ('about', 136), ('there', 131), ('when', 128), ('after', 127), ('home', 127), ('In', 127), ('also', 120), ('It', 115), ('over', 115), ('into', 114), ('But', 109), ('no', 109), ('made', 107), ('her', 103), ('only', 103), ('years', 102), ('three', 97), ('time', 97), ('them', 96), ('some', 95), ('him', 93), ('New', 93), ('can', 93), ('any', 90), ('?', 90), ('state', 90), ('President', 89), ('week', 86), ('could', 86), ('before', 86), ('under', 83), ('against', 78), ('we', 77), ('now', 76)] Πιο κάτω παρουσιάζεται το σύνολο των Κ=100 συχνότερων χρησιμοποιούμενων λέξεων και η ετικέτα τους (οι ετικέτες έχουν ληφθεί από το Brown corpus (δείτε περιγραφή στην επόμενη ενότητα) και όχι αυτό του Πίνακα 1). {'But': 'CC', 'is': 'BEZ', 'that': 'CS', 'a': 'AT', 'his': 'PP$', 'as': 'CS', ':': ':', 'by': 'IN', 'at': 'IN', 'out': 'RP', 'Mrs.': 'NP', 'also': 'RB', 'time': '', 'first': 'OD', 'them': 'PPO', 'said': 'VBD', ',': ',', 'In': 'IN', 'New': 'JJ-TL', 'this': 'DT', 'President': '-TL', 'to': 'TO', 'over': 'IN', 'an': 'AT', 'made': 'VBN', 'under': 'IN', 'three': 'CD', 'about': 'IN', 'its': 'PP$', ';': '.', "''": "''", 'of': 'IN', 'could': 'MD', 'can': 'MD', 'will': 'MD', 'one': 'CD', '--': '--', 'Mr.': 'NP', 'who': 'WPS', '``': '``', 'year': '', 'other': 'AP', 'no': 'AT', 'home': '', 'against': 'IN', 'has': 'HVZ', 'A': 'AT', ')': ')', 'state': '', 'they': 'PPSS', 'in': 'IN', 'her': 'PP$', 'but': 'CC', 'more': 'AP', 'new': 'JJ', 'week': '', 'two': 'CD', 'we': 'PPSS', 'when': 'WRB', 'or': 'CC', 'last': 'AP', 'than': 'IN', 'before': 'IN', 'years': 'S', 'him': 'PPO', 'it': 'PPS', '(': '(', 'all': 'ABN', 'It': 'PPS', 'not': '*', 'their': 'PP$', 'the': 'AT', 'The': 'AT', 'with': 'IN', 'only': 'AP', '.': '.', 'and': 'CC', 'from': 'IN', 'he': 'PPS', 'after': 'IN', 'on': 'IN', 'been': 'BEN', '?': '.', 'He': 'PPS', 'any': 'DTI', 'up': 'RP', 'was': 'BEDZ', 'have': 'HV', 'be': 'BE', 'which': 'WDT', 'now': 'RB', 'into': 'IN', 'had': 'HVD', 'are': 'BER', 'some': 'DTI', 'would': 'MD', 'there': 'EX', 'for': 'IN', 'I': 'PPSS', 'were': 'BED'} Για σκοπούς της άσκησης αυτής, δίνεται το αρχείο 100MostUsedWords.txt το οποίο περιέχει τις 100 πιο συχνά χρησιμοποιούμενες λέξεις μαζί με την ετικέτα τους, ένα ζεύγος σε κάθε γραμμή, χωρισμένο με τον χαρακτήρα \t. Πιο κάτω παρουσιάζονται οι 5 πρώτες γραμμές του αρχείου: in IN made VBN be BE.. two CD 6 από 16

Παράδειγμα: Δοθέντος μιας πρότασης η οποία έχει γίνει tokenize: ['``', 'Only', 'a', 'relative', 'handful', 'of', 'such', 'reports', 'was', 'received', "''", ',', 'the', 'jury', 'said', ',', '``', 'considering', 'the', 'widespread', 'interest', 'in', 'the', 'election', ',', 'the', 'number', 'of', 'voters', 'and', 'the', 'size', 'of', 'this', 'city', "''", '.'] Η εκτέλεση του lookup tagger πρέπει να δώσει το ακόλουθο αποτέλεσμα (με κόκκινο φαίνεται η ανάθεση ετικετών που έγινε από τον regular expression tagger): [('``', '``'), ('Only', 'ΝΝ'), ('a', 'AT'), ('relative', 'ΝΝ'), ('handful', 'ΝΝ'), ('of', 'IN'), ('such', 'ΝΝ'), ('reports', 'ΝΝS'), ('was', 'BEDZ'), ('received', 'VBD'), ("''", "''"), (',', ','), ('the', 'AT'), ('jury', 'ΝΝ'), ('said', 'VBD'), (',', ','), ('``', '``'), ('considering', 'VBG'), ('the', 'AT'), ('widespread', 'ΝΝ'), ('interest', 'ΝΝ'), ('in', 'IN'), ('the', 'AT'), ('election', 'ΝΝ'), (',', ','), ('the', 'AT'), ('number', 'ΝΝ'), ('of', 'IN'), ('voters', 'ΝΝS'), ('and', 'CC'), ('the', 'AT'), ('size', 'ΝΝ'), ('of', 'IN'), ('this', 'DT'), ('city', 'ΝΝ'), ("''", "''"), ('.', '.')] Υπόδειξη: Θα ήταν καλό να βελτιστοποιηθεί η ταχύτητα εκτέλεσης της εν λόγω λειτουργίας, στη βάση της ταξινόμησης συμβολοσειρών. 5) Unigram tagger Η ανάγκη για ένα καλύτερο αλγόριθμο επισήμανσης οδήγησε στην ανάπτυξη του unigram tagger. Ο unigram tagger βασίζεται σε έναν απλό στατιστικό αλγόριθμο: Για κάθε token, αναθέτει την ετικέτα που είναι πιο πιθανή για το συγκεκριμένο token. Για παράδειγμα, ο αλγόριθμος θα αναθέσει την ετικέτα JJ (adjective) σε οποιαδήποτε εμφάνιση της λέξης frequent, καθώς αυτή η λέξη χρησιμοποιείται ως επίθετο (π.χ. frequent word) συχνότερα από ότι χρησιμοποιείται ως ρήμα (π.χ. I frequent this cafe). Ένας unigram tagger συμπεριφέρεται ακριβώς όπως ένα lookup tagger, εκτός του ότι υπάρχει μια πιο σημαντική λειτουργία να επιτελεστεί προτού τρέξει ο tagger, που ονομάζεται εκπαίδευση (training). Η διαδικασία της εκπαίδευσης λαμβάνει σαν είσοδο κάποιο κείμενο που έχει ήδη επισημανθεί (έχουν ανατεθεί ετικέτες στα tokens) και βρίσκει ποια είναι η πιο διαδεδομένη ετικέτα για κάθε token (ή για τα πιο σημαντικά tokens). Έχοντας αυτή τη γνώση, ο unigram tagger μπορεί να αναθέσει ετικέτες σε tokens από οποιοδήποτε άλλο κείμενο. Στην παρούσα άσκηση, για την εκπαίδευση του unigram tagger, θα χρησιμοποιήσουμε δεδομένα από το Brown corpus το οποίο περιέχει μια συλλογή κειμένων στην Αγγλική γλώσσα η οποία δημιουργήθηκε το 1961 από το Brown University με σκοπό τη μελέτη της γλώσσας. Η συλλογή αυτή περιέχει κείμενα από 500 πηγές, οι οποίες έχουν κατηγοριοποιηθεί κατά είδος όπως για παράδειγμα news, religion, hobbies, romance, κτλ. Τα κείμενα της συλλογής αυτής έχουν τύχει επισήμανσης (tagging) έτσι ώστε το κάθε token (λέξη, σημείο στίξης) έχει τη δική του ετικέτα. Στην άσκηση αυτή θα χρησιμοποιήσουμε 500 προτάσεις από κείμενα της κατηγορίας news τα οποία έχουν τύχει επισήμανσης. Οι ετικέτες που βρίσκονται στο Brown corpus είναι ένα πιο εκτεταμένο υπερσύνολο των ετικετών Penn Treebank Tag Set (Πίνακας 1). Οι 500 προτάσεις δίνονται στο αρχείο training.txt. Κάθε γραμμή του αρχείου training.txt περιέχει τα tokens μιας πρότασης μαζί με την ετικέτα τους στη μορφή token/tag, χωρισμένα με κενό (whitespace). Δείτε τις πρώτες 3 γραμμές του αρχείου: 7 από 16

The/AT Fulton/NP-TL County/-TL Grand/JJ-TL Jury/-TL said/vbd Friday/NR an/at investigation/ of/in Atlanta's/NP$ recent/jj primary/ election/ produced/vbd ``/`` no/at evidence/ ''/'' that/cs any/dti irregularities/s took/vbd place/./. The/AT jury/ further/rbr said/vbd in/in term-end/ presentments/s that/cs the/at City/-TL Executive/JJ-TL Committee/-TL,/, which/wdt had/hvd over-all/jj charge/ of/in the/at election/,/, ``/`` deserves/vbz the/at praise/ and/cc thanks/s of/in the/at City/-TL of/in-tl Atlanta/NP-TL ''/'' for/in the/at manner/ in/in which/wdt the/at election/ was/bedz conducted/vbn./. The/AT September-October/NP term/ jury/ had/hvd been/ben charged/vbn by/in Fulton/NP-TL Superior/JJ-TL Court/-TL Judge/-TL Durwood/NP Pye/NP to/to investigate/vb reports/s of/in possible/jj ``/`` irreg Φάση εκπαίδευσης: Το πρώτο βήμα του Unigram tagger είναι να διατρέξει όλες τις προτάσεις από το αρχείο εκπαίδευσης (π.χ. training.txt) και να καταγράψει για το κάθε token με ποιες ετικέτες έχει επισημανθεί. Για παράδειγμα, λαμβάνοντας υπόψη όλο το αρχείο training.txt μπορείτε να διαπιστώσετε ότι το token Fulton έχει επισημανθεί 10 φορές με την ετικέτα NP-TL και 4 φορές με την ετικέτα NP. Στη συνέχεια, θα πρέπει να βρει για το κάθε token την πιο διαδεδομένη ετικέτα. Σε συνέχεια του πιο πάνω παραδείγματος, η πιο διαδεδομένη ετικέτα για το token Fulton είναι η NP-TL. Έχοντας δημιουργήσει ένα πίνακα όλων των tokens από το αρχείο training.txt μαζί με τις ετικέτες τους, ο Unigram tagger είναι σε θέση πλέον να αναθέσει ετικέτες σε κείμενο που δεν έχει επισημανθεί, ψάχνοντας την καλύτερη ετικέτα για το κάθε token από τον πίνακα. Αν δεν είναι δυνατή η ανάθεση μιας ετικέτας σε μια λέξη βάσει του πίνακα, τότε χρησιμοποιείται ο lookup tagger. ΙV. Ζητούμενα άσκησης Για αυτήν την άσκηση χρειάζεται να γράψετε ένα πρόγραμμα, postagging.c, στη γλώσσα προγραμματισμού C, το οποίο θα υλοποιεί όλες της διαδικασίες επισήμανσης που περιεγράφηκαν στο προηγούμενο παράρτημα ΙΙΙ της εκφώνησης. Για κάθε λειτουργία από αυτές που περιγράφονται πιο κάτω, σε περίπτωση λάθους, να εμφανιστούν τα κατάλληλα μηνύματα. Πιο συγκεκριμένα, το πρόγραμμα σας πρέπει να υλοποιήσει τις ακόλουθες λειτουργίες: Λειτουργία 1 (Ανάγνωση Αρχείου): Η είσοδος του προγράμματος θα γίνει από ένα αρχείο, το οποίο θα δίνεται στη γραμμή εντολής. Τα περιεχόμενα του αρχείου εξαρτώνται από το είδος της διαδικασίας. Λειτουργία 2 (Υλοποίηση Tokenizer): Αυτή θα είναι μια βοηθητική λειτουργία η οποία θα είναι χρήσιμη για την υλοποίηση των επόμενων λειτουργιών. Προσθέστε στο πρόγραμμα σας μια συνάρτηση tokenize( ) και όποια άλλη συνάρτηση βοηθητική προς αυτή χρειαστεί. Ο διαχωρισμός (tokenization) να γίνει βάσει των χαρακτήρων: ' ', '\t', '\r', και '\n'. Η έξοδος της συνάρτησης αυτής θα είναι ένας πίνακας με τα tokens. Τα tokens είναι οι λέξεις και οι ειδικοί χαρακτήρες,.!? ' " ( ) : Σημείωση: Να γίνεται έλεγχος αν η μονή απόστροφος ' ακολουθείται από το γράμμα s τότε ο συνδυασμός 's θα αποτελεί ένα ξεχωριστό token. Αλλιώς η μονή απόστροφος θα θεωρείται από μόνη της ένα ξεχωριστό token. Λειτουργία 3 (Υλοποίηση default tagger): Αυτή η λειτουργία υλοποιεί το default tagger. Η σύνταξη κλήσης του προγράμματος θα είναι:./postagging -d inputfilename outputfilename όπου: o -d - είναι το όρισμα που λέει στο πρόγραμμα ότι πρέπει να εκτελέσει τη Λειτουργία 3. o inputfilename - είναι το όνομα του αρχείου εισόδου που περιέχει απλό κείμενο το οποίο θα γίνει tokenized και ανάθεση ετικετών. o outputfilename - είναι το όνομα του αρχείου εξόδου που περιέχει ένα token (του αρχείου inputfilename) ανά γραμμή και δίπλα του (χωρισμένα με tab) την ετικέτα που του αναθέτει ο αλγόριθμος του default tagger. 8 από 16

Λειτουργία 4 (Υλοποίηση Regular expression tagger): Αυτή η λειτουργία υλοποιεί το Regular expression tagger. Η σύνταξη κλήσης του προγράμματος θα είναι:./postagging -r inputfilename patternsfilename outputfilename όπου: o -r - είναι το όρισμα που λέει στο πρόγραμμα ότι πρέπει να εκτελέσει τη Λειτουργία 4. o inputfilename - είναι το όνομα του αρχείου εισόδου που περιέχει απλό κείμενο το οποίο θα γίνει tokenized και ανάθεση ετικετών. o patternsfilename - είναι το όνομα του αρχείου που περιέχει τις κανονικές εκφράσεις και o τις ετικέτες. Σε κάθε γραμμή του αρχείου θα υπάρχουν δύο στήλες χωρισμένες με tab (\t), στη πρώτη στήλη θα βρίσκεται μια κανονική έκφραση και στη δεύτερη στήλη η ετικέτα που θα ανατίθεται στη λέξη που ταυτίζεται με την κανονική έκφραση (δείτε παράδειγμα αρχείου στο τέλος της εκφώνησης). Θα χρησιμοποιήσουμε μόνο τις κανονικές εκφράσεις του Πίνακα 2. outputfilename - είναι το όνομα του αρχείου εξόδου που περιέχει ένα token (του αρχείου inputfilename) ανά γραμμή και δίπλα του την κατάλληλη ετικέτα που του αναθέτει ο αλγόριθμος του Regular expression tagger χωρισμένα με tab (\t). Λειτουργία 5 (Υλοποίηση Lookup tagger): Αυτή η λειτουργία υλοποιεί το Lookup tagger. Η σύνταξη κλήσης του προγράμματος θα είναι:./postagging -l inputfilename patternsfilename mostusedwordsfilename outputfilename όπου: o -l - είναι το όρισμα που λέει στο πρόγραμμα ότι πρέπει να εκτελέσει τη Λειτουργία 5. o inputfilename - είναι το όνομα του αρχείου εισόδου που περιέχει ένα κανονικό κείμενο το οποίο θα γίνει tokenized και ανάθεση ετικετών. o patternsfilename - είναι το όνομα του αρχείου που περιέχει τις κανονικές εκφράσεις για o o χρήση σε περίπτωση που κάποια λέξη από το αρχείο εισόδου δεν υπάρχει μέσα στο αρχείο με τις 100 συχνότερα χρησιμοποιούμενες λέξεις. mostusedwordsfilename - είναι το όνομα του αρχείου με τις 100 συχνότερες χρησιμοποιούμενες λέξεις και η ετικέτα τους. Σε κάθε γραμμή του αρχείου θα υπάρχουν 2 στήλες χωρισμένες με tab (\t), στη πρώτη στήλη θα βρίσκεται μια λέξη και στη δεύτερη στήλη η ανατιθέμενη ετικέτα (δείτε παράδειγμα αρχείου στο τέλος της εκφώνησης). outputfilename - είναι το όνομα του αρχείου εξόδου που περιέχει ένα token (του αρχείου inputfilename) ανά γραμμή και δίπλα του την κατάλληλη ετικέτα που του αναθέτει ο αλγόριθμος του Lookup tagger χωρισμένα με tab (\t). Λειτουργία 6 (Υλοποίηση Unigram tagger): Αυτή η λειτουργία υλοποιεί αρχικά την διαδικασία της εκπαίδευσης και στη συνέχει τον Unigram tagger. Η σύνταξη κλήσης του προγράμματος θα είναι:./postagging -u inputfilename patternsfilename mostusedwordsfilename trainingfilename outputfilename όπου: o -u - είναι το όρισμα που λέει στο πρόγραμμα ότι πρέπει να εκτελέσει τη Λειτουργία 6. o inputfilename - είναι το όνομα του αρχείου εισόδου που περιέχει ένα κανονικό κείμενο o το οποίο θα γίνει tokenized και ανάθεση ετικετών. patternsfilename - είναι το όνομα του αρχείου που περιέχει τις κανονικές εκφράσεις για χρήση σε περίπτωση που κάποια λέξη από το αρχείο εισόδου δεν υπάρχει ούτε μέσα στο αρχείο εκπαίδευσης (training file) αλλά ούτε και μέσα στο αρχείο με τις 100 συχνότερα χρησιμοποιούμενες λέξεις. 9 από 16

o o o mostusedwordsfilename - είναι το όνομα του αρχείου με τις 100 συχνότερες χρησιμοποιούμενες λέξεις και η ετικέτα τους για χρήση σε περίπτωση που κάποια λέξη από το αρχείο εισόδου δεν υπάρχει μέσα στο αρχείο εκπαίδευσης (training file). trainingfilename - είναι το όνομα του αρχείου που περιέχει ένα σύνολο από tokens μαζί με τις ετικέτες τους. Σε κάθε γραμμή του αρχείου υπάρχουν τα tokens μιας πρότασης μαζί με την ετικέτα που ανατέθηκε στο κάθε token στη μορφή token/tag (δείτε παράδειγμα αρχείου στο τέλος της εκφώνησης). outputfilename - είναι το όνομα του αρχείου εξόδου που περιέχει ένα token (του αρχείου inputfilename) ανά γραμμή και δίπλα του την κατάλληλη ετικέτα που του αναθέτει ο αλγόριθμος του Unigram tagger. V. Γενικές Οδηγίες Το πρόγραμμα σας θα πρέπει να συμβαδίζει με το πρότυπο ISO C, να περιλαμβάνει εύστοχα και περιεκτικά σχόλια, να έχει καλή στοίχιση και το όνομα κάθε μεταβλητής, σταθεράς, ή συνάρτησης να είναι ενδεικτικό του ρόλου της. Να χρησιμοποιήσετε το λογισμικό τεκμηρίωσης doxygen έτσι ώστε να μπορούμε να μετατρέψουμε τα σχόλια του προγράμματός σας σε HTML αρχεία και να τα δούμε με ένα browser. Η συστηματική αντιμετώπιση της λύσης ενός προβλήματος περιλαμβάνει στο παρόν στάδιο τη διάσπαση του προβλήματος σε μικρότερα ανεξάρτητα προβλήματα που κατά κανόνα κωδικοποιούμε σε ξεχωριστές συναρτήσεις. Για αυτό τον λόγο σας καλούμε να κάνετε χρήση συναρτήσεων και άλλων τεχνικών δομημένου προγραμματισμού που διδαχτήκατε στο ΕΠΛ131. Επίσης, σας θυμίσουμε ότι κατά την διάρκεια της εκτέλεσης του προγράμματος σας αυτό θα πρέπει να δίνει τα κατάλληλα μηνύματα σε περίπτωση λάθους. Τέλος το πρόγραμμα σας θα πρέπει να μεταγλωττίζεται στις μηχανές του εργαστηρίου. Παρακαλώ όπως μελετηθούν ξανά οι κανόνες υποβολής εργασιών όπως αυτοί ορίζονται στο συμβόλαιο του μαθήματος. Επίσης να ακολουθήσετε τα πιο κάτω βήματα όταν υποβάλετε την άσκηση σας στο Moodle: 1. Δημιουργείστε ένα κατάλογο με το όνομά σας π.χ., PavlosAntoniou/ χωρίς να αφήνετε κενά στο όνομα του καταλόγου. 2. Βάλτε μέσα στον κατάλογο αυτό όλα τα αρχεία της εργασίας (κώδικας, doxygen configuration file, README.md) που πρέπει να υποβάλετε. 3. Συμπιέστε (zip) τον κατάλογο (και όχι τα αρχεία ξεχωριστά) χρησιμοποιώντας την εντολή zip c PavlosAntoniou.zip PavlosAntoniou/* 4. Βεβαιωθείτε ότι κάνατε σωστά τα τρία προηγούμενα βήματα 5. Ανεβάστε στο Moodle το συμπιεσμένο αρχείο π.χ., PavlosAntoniou.zip VI. Κριτήρια αξιολόγησης Λειτουργία 1 (Ανάγνωση αρχείων) 10 Λειτουργία 2 (Tokenization) 10 Λειτουργία 3 (Default tagger) 10 Λειτουργία 4 (Regular expression tagger) 15 Λειτουργία 5 (Lookup tagger) 10 Λειτουργία 6 (Unigram tagger) 15 Εμφάνιση αποτελεσμάτων 10 Εμφάνιση μηνυμάτων λάθους και καθοδήγησης 10 Γενική εικόνα (ευανάγνωστος κώδικας, σχολιασμός, κλπ.) 10 ΣΥΝΟΛΟ 100 Καλή Επιτυχία! 10 από 16

Παραδείγματα Εκτέλεσης Έστω το αρχείο εισόδου input.txt: Natural language processing is a field of computer science, artificial intelligence and computational linguistics. It is concerned with the interactions between computers and human (natural) languages, and, in particular, concerned with programming computers to fruitfully process large natural language corpora! Λειτουργία 3:./posTagging -d input.txt output3.txt Το αρχείο output3.txt είναι: Natural language processing is a field of computer science, artificial intelligence and computational linguistics. It is concerned with the interactions between computers and human ( natural ) languages, and, in particular, concerned with programming computers to fruitfully 11 από 16

process large natural language corpora! Λειτουργία 4:./posTagging -r input.txt regex.txt output4.txt Η μορφή του αρχείου regex.txt είναι:.*ing$ VBG.*ed$ VBD.*es$ VBZ.*ould$ MD.*'s$ $.*s$ S ^-?[0-9]+(.[0-9]+)?$ CD.* όπου μεταξύ των κανονικών εκφράσεων και της ετικέτας βρίσκεται ο χαρακτήρας tab. Το αρχείο output4.txt: Natural language processing is S a field of computer science, artificial intelligence and computational linguistics. It is S concerned with the interactions between computers and human ( natural ) languages, and, in particular VBG S VBD S S VBZ 12 από 16

, concerned with programming computers to fruitfully process S large natural language corpora! VBD VBG S Λειτουργία 5:./posTagging -l input.txt regex.txt 100MostUsedWords.txt output5.txt Η μορφή του αρχείου 100MostUsedWords.txt είναι (μεταξύ tokens και tags υπάρχει ο χαρακτήρας \t): in IN made VBN be BE.. two CD of IN ( ( could MD its PP$ A AT `` `` over IN ) ) who WPS But CC her PP$ are BER he PPS?. Mrs. NP as CS had HVD against was BEDZ an AT been BEN and CC before New JJ-TL into IN '' '' three CD state it PPS from IN they PPSS can MD any DTI out RP IN IN 13 από 16

year some DTI also RB his PP$ President week them PPO : : but CC for IN In IN under IN that CS first OD I PPSS about IN him PPO by IN more AP were BED It PPS time this DT up RP new JJ to TO The AT Mr. NP will MD now RB is BEZ last AP at IN or CC years S ;. a AT have HV one CD which WDT after IN He PPS than IN home no AT on IN other AP only AP said VBD their PP$ when WRB -- -- the AT all ABN not * with IN has HVZ would MD there EX we PPSS -TL 14 από 16

Το αρχείο output5.txt είναι: Natural language processing is BEZ a AT field of IN computer science artificial intelligence and CC computational linguistics.. It PPS is BEZ concerned with IN the AT interactions between computers and CC human ( ( natural ) ) languages and CC in IN particular concerned with IN programming computers to TO fruitfully process S large natural language corpora! VBG S VBD S S VBZ VBD VBG S Λειτουργία 6:./posTagging -u input.txt regex.txt 100MostUsedWords.txt training.txt output6.txt Δείτε τις πρώτες 3 γραμμές του αρχείου training.txt πιο κάτω: The/AT Fulton/NP-TL County/-TL Grand/JJ-TL Jury/-TL said/vbd Friday/NR an/at investigation/ of/in Atlanta's/NP$ recent/jj primary/ election/ 15 από 16

produced/vbd ``/`` no/at evidence/ ''/'' that/cs any/dti irregularities/s took/vbd place/./. The/AT jury/ further/rbr said/vbd in/in term-end/ presentments/s that/cs the/at City/-TL Executive/JJ-TL Committee/-TL,/, which/wdt had/hvd overall/jj charge/ of/in the/at election/,/, ``/`` deserves/vbz the/at praise/ and/cc thanks/s of/in the/at City/-TL of/in-tl Atlanta/NP-TL ''/'' for/in the/at manner/ in/in which/wdt the/at election/ was/bedz conducted/vbn./. The/AT September-October/NP term/ jury/ had/hvd been/ben charged/vbn by/in Fulton/NP-TL Superior/JJ-TL Court/-TL Judge/-TL Durwood/NP Pye/NP to/to investigate/vb reports/s of/in possible/jj ``/`` irreg Το αρχείο output6.txt είναι: Natural JJ language processing is BEZ a AT field of IN computer science artificial intelligence and CC computational linguistics.. It PPS is BEZ concerned with IN the AT interactions between IN computers and CC human ( ( natural ) ) languages and CC in IN particular concerned with IN programming computers to TO fruitfully process large JJ natural language corpora! VBG S VBN S S VBZ VBN VBG S 16 από 16