[I18NGR] φίλτρο για greeklish?

Konstantinos Margaritis markos at debian.gr
Fri Nov 25 19:57:00 EET 2005


(Καταρχάς, ξαναβάζω το CC στην open-source, δε μπορώ να καταλάβω τί 
μανία είναι αυτή να μου χαλάν τα CC...)

On Παρασκευή 25 Νοέμβριος 2005 17:50, Thanos Kyritsis wrote:
> Ον Φριδαυ 25 Νοωεμβερ 2005 17:37, Κονσταντιοσ Μαργαριτισ ςροτε:
> [σνιπ ....]
>
> Εγώ θα σε ρωτήσω ένα απλό πράγμα .....
>
> Πώς θα καταλαβαίνεις σε ένα μήνυμα ποιούς αγγλικούς χαρακτήρες να
> μετατρέπεις και ποιούς όχι ?? ε ???

Η διαδικασία είναι απλή, αν και φοβάμαι πως είναι λίγο χρονοβόρα, 
κάθησα και το σκέφτηκα λιγάκι και βρήκα μια αρκετά καλή μέθοδολογία:
Διάλεξα και ένα μικρό τμήμα από email του zvr -κλασσικός γράφων σε 
greeklish γαρ ;-) - από το συνέδριο του O'Reilly, ήταν εντελώς τυχαία 
επιλογή.

"Prwth entypwsh: polla lefta, re paidaki moy!
Se kyrile ksenodoxeio sto Amsterdam, megalh conference (milane
gia 500+ atoma), organwmenh kata O'Reilly me ta Amerikanika protypa.
Symperasma: tha mpoyne mesa agria, apokleietai na bgaloyn ta lefa 
toys.
Oxi oti den to kserane, bebaia."

Για να δείξω ότι η μέθοδος μπορεί να δουλέψει και με διαφορετικό στυλ 
γραφής, γράφω το ίδιο κείμενο σύμφωνα με τον τρόπο που γράφω συνήθως 
greeklish (την αναφέρω απλώς ως παράδειγμα):

"Prwtn evtupwsn: polla lefta, re paidaki mou!
Se kurile 3evodoxeio sto Amsterdam, megaln conference (milave gia 500+ 
atoma), orgavwmevn kata O'Reilly me ta Amerikavika protupa.
Sumperasma: 8a mpouve mesa agria, apokleietai va bgalouv ta lefta 
tous. Oxi oti de to 3erave, bebaia."

Με μια απλή ματιά, οι κανόνες μετατροπείς για τις δύο μεθόδους είναι 
οι εξής:

zvr: η-> h, θ->th, ν->n, ξ->ks, υ->y, ω->w 
mine: η->n, θ->8, ν->v, ξ->3, υ->u, ω->w

και είμαι σίγουρος ότι με λίγο ψάξιμο μπορούμε να βρούμε αρκετούς 
κανόνες ακόμη.

Βήμα 1ο: Διαχωρισμός παραγράφων. οκ έστω ότι έχει γίνει αυτό, δεν 
είναι το θέμα.

Βήμα 2ο: Έλεγχος αγγλικής ορθογραφίας στην παράγραφο, μάλιστα 
δημιουργία ενός associative array (map στην STL, HashMap στη Java, 
whatever) με τα αποτελέσματα για κάθε λέξη μας ενδιαφέρει ένα boolean 
αποτέλεσμα, FOUND/NOTFOUND. Αυτό για να αποκλείσουμε τις πραγματικά 
αγγλικές λέξεις από τις greeklish. Αν τα FOUND είναι συντριπτικά 
περισσότερα από τα NOTFOUND τότε μάλλον το κείμενο είναι αγγλικό ίσως 
με ορθογραφικά λάθη και δεν χρειάζεται να προβούμε στη μετατροπή από 
greeklish. Αν τα FOUND είναι αρκετά -κάποιο κατώφλι/ποσοστό ίσως;-  
τότε μπορούμε να προχωρήσουμε στο βήμα 3.

Βήμα 3ο: Για τις λέξεις που ΔΕΝ βρεθήκαν από τον αγγλικό ορθογράφο 
-δηλαδή αυτές με NOTFOUND στο map- κάνουμε μετατροπή από greeklish σε 
ελληνικά με κάθε μέθοδο, και κάνουμε έλεγχο με ελληνικό ορθογράφο 
στις λέξεις αυτές. Για κάθε λέξη που ανιχνεύεται από τον ορθογράφο, η 
κάθε μέθοδος παίρνει έναν πόντο.

Βήμα 4ο: Αν κάποια μέθοδος φτάσει ένα συγκεκριμένο κατώφλι -π.χ. 30% 
των λέξεων ή ένα προκαθορισμένο αριθμό- τότε μπορούμε να είμαστε 
αρκετά βέβαιοι ότι ο χρήστης θα έχει ακολουθήσει τη συγκεκριμένη 
μέθοδο για να γράψει σε greeklish και μπορούμε να προχωρήσουμε στη 
μετατροπή των υπολοίπων λέξεων με τη συγκεκριμένη μέθοδο μόνο χωρίς 
να χρησιμοποιήσουμε επιπλέον το σύστημα με τους πόντους.

Για το συγκεκριμένο παράδειγμα, το αρχικό κείμενο του zvr, όπως το 
έχει γράψει:

"Prwth entypwsh: polla lefta, re paidaki moy!
Se kyrile ksenodoxeio sto Amsterdam, megalh conference (milane
gia 500+ atoma), organwmenh kata O'Reilly me ta Amerikanika protypa.
Symperasma: tha mpoyne mesa agria, apokleietai na bgaloyn ta lefa 
toys.
Oxi oti den to kserane, bebaia."

Βήμα 2ο: ο αγγλικός ορθογράφος προφανώς θα χτυπήσει κόκκινο, αφού θα 
βρεί ελάχιστες λέξεις: Amsterdam, conference, O'Reilly, me, to. Για 
τις υπόλοιπες θα προχωρήσει στο βήμα 3.

Βήμα 3: μετατρέπουμε κάθε λέξη με κάθε μέθοδο για μετατροπή από 
greeklish και δίνουμε +1 πόντο στη μέθοδο αν η τελική λέξη 
αναγνωρίζεται από τον ορθογράφο, ΜΕΧΡΙ κάποια μέθοδος να φτάσει π.χ. 
σε πόντους που να αντιστοιχούν στο 30% των λέξεων της παραγράφου, 
δηλ. ~13).
Λέξη		zvr		mine		zvr pts		mine pts
Prwth		Πρωτη		Πρωτh		1		0
entypwsh	εντυπωση	εντyπωσh	2		0
polla		πολλα		πολλα		3		1
lefta		λεφτα		λεφτα		4		2
re		ρε		ρε		5		3
paidaki		παιδακι		παιδακι		6		4
moy		μου		μοy		7		5
Se		Σε		Σε		8		6
kyrile		κυριλε		κyριλε		9		7
ksenodoxeio	ξενοδοχειο	ksεηοδοχειο	10		7
sto		στο		στο		11		8
megalh		μεγαλη		μεγαλh		12		8
milane		μιλανε		μιλαηε		13		8
gia		για		για		14		9

Περάσαμε το κατώφλι 13 (βρήκα κι εγώ νούμερο...), προχωράμε στο βήμα 
4:

atoma		ατομα
organwmenh	οργανωμενη
kata		κατα
ta		τα
Amerikanika	Αμερικανικα
protypa		προτυπα
Symperasma	Συμπερασμα
tha		θα
mpoyne		μπουνε
mesa		μεσα
agria		αγρια
apokleietai	αποκλειεται
na		να
bgaloyn		βγαλουν
ta		τα
lefa		λεφα
toys		τους
Oxi		Οχι
oti		οτι
den		δεν
kserane		ξερανε
bebaia		βεβαια

Το τελικό κείμενο θα έχει την εξής μορφή:

"Πρωτη εντυπωση: πολλα λεφτα, ρε παιδακι μου! 
Σε κυριλε ξενοδοχειο στο Amsterdam, μεγαλη conference (μιλανε
για 500+ ατομα), οργανωμενη κατα O'Reilly me τα Αμερικανικα προτυπα.
Συμπερασμα: θα μπουνε μεσα αγρια, αποκλειεται να βγαλουν τα λεφα τους.
Οχι οτι δεν to ξερανε, βεβαια."

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

Πάντως για μια μέθοδο που μου κατέβηκε μέσα σε 1 ώρα, καλά τα πήγε 
πρέπει να το παραδεχτείς :-)

Κώστας




More information about the I18ngr mailing list