Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
Παιδιά θα ήθελα τις συμβουλές σας και τα φώτα σας. Θέλω να φτιάξω ένα scriptaki σε php που να μετατρέπει τα greeklish σε ελληνικά.

 

Η αντίστροφη μετατροπή (ελληνικά σε greeklish) είναι εύκολο να υλοποιηθεί αλλά στο αντίστροφο βρίσκω μερικές δυσκολίες.

 

Η μετατροπή θέλω να είναι γη παρακάτω:

Greeklish: Paidia tha ithela ta fota sas.

Greek: Παιδιά θα ήθελα τα φώτα σας.

 

Να σημειώσω ότι περισσότερο με ενδιαφέρει το σκεπτικό της υλοποίησης.

 

Ευχαριστώ εκ των προτέρων....
Δημοσ.

(Μετατρεπεις τους αγγλικους χαρακτhρες σε ελληνικους)

Αυτό το έχω δημιουργήσει.

 

(spellcheck)

Πώς μπορώ να ενσωματώσω ένα spellcheck σε php ?

Υπάρχουν έτοιμα ;

Δημοσ.

Έχω κάνει αυτό ακριβώς το πρόγραμμα σε C++ στα πλαίσια εργασίας.

 

Μετατρεπεις τους αγγλικους χαρακτhρες σε ελληνικους και μετα τα περνας απο ενα spellcheck

 

Πρακτικό αλλά θέλει βελτίωση. Κυρίως είναι πολύ αργό. Τόσο αργό που σχεδόν βλέπεις τις λέξεις να εμφανίζονται μία μία (τουλάχιστον έτσι μου συνέβαινε εμένα). Το να πάρεις suggestions από το λεξικό είναι τόσο χαοτικά πιο αργό από οτιδήποτε άλλο μπορεί να κάνεις που αξίζει χωρίς συζήτηση να δοκιμάσεις τα πάντα πριν καταφύγεις εκεί, ακόμα κι αν δεν υπάρχει εγγύηση ότι μ' αυτά που δοκιμάζεις θα βγάλεις αποτέλεσμα. Worst case scenario αντί για 100 μονάδες χρόνου θα ξοδέψεις 105, best case αντί για 100 θα ξοδέψεις 0,1.

 

Αυτό που έκανα εγώ ήταν να κάνω expand τη λέξη σε διάφορα πιθανά spellings βάσει κανόνων (π.χ. piga κάνει expand σε "πιγα", "πηγα", "πειγα", "ποιγα", "πυγα", "πιγκα", "πηγκα" κλπ) βάζοντας ταυτόχρονα τα spellings σε μια "προτιμώμενη σειρά" βάσει heuristics και μετά κάνοντας check if correct στο λεξικό. Η πρώτη λέξη στη σειρά που ταιριάζει είναι η μετάφραση, αν δεν ταιριάζει καμία δοκιμάζεις κάτι άλλο (π.χ. suggestions).

 

Τα πιθανά spellings και τα heuristics που λέω προέκυψαν από στατιστική ανάλυση του λεξικού που χρησιμοποιούσα και από παρατηρήσεις πάνω στη χρήση των greeklish (π.χ. το "g" μπορεί να είναι "γ" ή "γκ", αλλά το "gg" δε μπορεί να είναι "γκγκ").

 

Για να το κάνω ακόμα πιο γρήγορο η επόμενη σκέψη ήταν να χρησιμοποιώ λεξικό με άτονες λέξεις στη διαδικασία του ελέγχου (αρκετούτσικα πιο γρήγορο) και αφότου βρεθεί η σωστή λέξη ορθογραφικά μετά βρίσκεις ξεχωριστά που πρέπει να μπει ο τόνος η/και τα διαλυτικά δοκιμάζοντας check if correct στο τονισμένο λεξικό (remember, suggestions == πιο αργό από την καθυστέρηση).

 

Τέλος μια άλλη προσέγγιση που μπορείς να χρησιμοποιήσεις σε συνδυασμό με ή και τελείως αντί για την παραπάνω είναι να το πας με hidden markov model, αλλά αυτό έχει πολύ ψωμί γιατί είναι πανεπιστημιακού επιπέδου και όχι μπακαλιά. Προσωπικά πάντως με heuristics στη μπακαλιά το έκανα αρκετά καλό και γρήγορο ούτως ώστε να μη χρειαστεί να βάλω science ftw.

 

 

(Μετατρεπεις τους αγγλικους χαρακτhρες σε ελληνικους)

Αυτό το έχω δημιουργήσει.

 

(spellcheck)

Πώς μπορώ να ενσωματώσω ένα spellcheck σε php ?

Υπάρχουν έτοιμα ;

 

http://php.net/pspell αλλά μη περιμένεις click here to install. Επίσης το ίδιο το λεξικό (τη wordlist δηλαδή) θα πρέπει να τη βρεις από αλλού.
 

 

Update: ξέχασα να αναφέρω διάφορες άλλες βελτιώσεις που θα χρειαστούν στην πράξη για καλό αποτέλεσμα:

  • whitelist λέξεων που μεταφράζονται αυτόματα (κλασικό παράδειγμα "k" => "και")
  • blacklist λέξεων που δε μεταφράζονται ποτέ (ας πούμε "facebook", "fb", κλπ)
  • αγγλικό λεξικό γιατί στάνταρ θα είναι μπερδεμένα greeklish και αγγλικά ("kane login re c")
  • με επιπλέον πρόβλεψη για το τι θα κάνεις με τις λέξεις που υπάρχουν στα αγγλικά αλλά και σε greeklish (π.χ. "pate" είναι "pate" ή "πάτε"?)

 

Όρεξη να έχεις... :D

  • Like 7
Δημοσ.

Xrhsto ginete na mou dwseis to ps3 ligo?

Χρήστο, γίνετε να μου δώσεις το PS3 λίγο?

 

Tha to eixa agorasei idi alla den exw lefta

Θα το είχα αγοράσει είδη αλλά δεν έχω λεφτά

 

 

Καλή τύχη και καλό κουράγιο στην υλοποίηση του.

Δημοσ.

Δεν νομίζω πάντως οτι γίνεται να το φτιάξεις 100% σωστό.

 

Και σιγουρα θα υπάρχουν περιπτώσεις που μπορει να εχουν παρεξηγίσιμα αποτελέσματα:

xyse m ligo tin plati

  • Like 7
Δημοσ.

Αν ξέρει κάποιος πως έχει υλοποιηθεί θα χαρούμε να τον ακούσουμε...

Κάνει αρκετά καλή μετάφραση...

 

Δεν είναι δυνατό να ξέρει κανείς αλλά βλέποντάς το λίγο στα γρήγορα πάνω κάτω κάνει αυτά που περιγράφω παραπάνω.

 

Έψαξα λίγο και βρήκα binaries από την εργασία μου, get them here. Το πρόγραμμα είναι δεκαετίας και η GUI version δεν είναι unicode, οπότε παρόλο που το δοκίμασα και τρέχει μια χαρά φερθείτε του με το μαλακό. Δυστυχώς δεν είναι η πιο προηγμένη version (αυτή μάλλον χάθηκε για πάντα) αλλά είναι σε καλό επίπεδο.

 

Δυστυχώς το test του darklord με ντροπιάζει και μένα.  :D  :D

  • Like 1
Δημοσ.

Χαχ, καλό. Αλλα εχω μια απορία. Γιατι το "Tii?" γίνετια "Τίμι;";

 

Γιατί δεν καταλαβαίνει τι πρέπει να κάνει μ' αυτό και πάει στο λεξικό, πράγμα που όταν γίνεται απλά παίρνει την πρώτη πρόταση διόρθωσης και πάμε παρακάτω¹. Υπάρχει ένα heuristic που όταν έχεις "περίεργες" ακολουθίες χαρακτήρων αποφασίζει να αφήσει τη λέξη ως έχει (π.χ. αν βάλεις "tiiiii" δεν το πειράζει), θυμάμαι αμυδρά πως γινόταν trigger από πολλές επαναλήψεις του ίδιου χαρακτήρα ("tiii") αλλά και από ασυνήθιστη κατανομή των χρησιμοποιούμενων γραμμάτων σε μια λέξη ("lalalalalalalalalala") αλλά οι λεπτομέρειες μου διαφεύγουν. Στην προκειμένη δε μπορείς να κάνεις και πολλά, τόσο 2 ίδια συνεχόμενα γράμματα όσο και λέξεις 3 γραμμάτων όπου τα 2 είναι ίδια υπάρχουν πολλές σε χρήση.

 

¹Για την ακρίβεια κι εκεί πάλι έχει κάποια heuristics τα οποία δίνουν βάρος σε ιδιαίτερα χαρακτηριστικά της ελληνικής. Ας πούμε το error correction αποφασίζει βάσει του edit distance της λέξης από τα περιεχόμενα του λεξικού, αλλά στην πράξη ξέρω πως αν π.χ. μια greeklish λέξη τελειώνει σε "s" τότε και το σωστό transliteration επίσης είναι πολύ πολύ πολύ πιθανό να τελειώνει σε "ς", οπότε δε θα επιλέξω μια πρόταση που τελειώνει σε κάτι άλλο ακόμα κι αν έχει το μικρότερο edit distance απ' όλες.

  • Like 1
Δημοσ.

Δεκτό, αλλα τι ειναι το Τίμι και υπάρχει στο λεξικό; Και πως γινεται για το Tii μεταξύ Τι και Τίμι(που εχουν ιδιο edit distance αν δεν κανω λαθος), να διαλέγει το 2ο.

Δημοσ.

Δεκτό, αλλα τι ειναι το Τίμι και υπάρχει στο λεξικό; Και πως γινεται για το Tii μεταξύ Τι και Τίμι(που εχουν ιδιο edit distance αν δεν κανω λαθος), να διαλέγει το 2ο.

 

Φαντάζομαι είναι ο φίλος μου ο Timmy... τώρα μη με ρωτήσεις αν υπάρχει και Λέμι, δεν ξέρω.  :P

 

Ούτε και ξέρω γιατί διαλέγει Τίμι αντί για Τι, ίσως επειδή ο Τίμι έχει κεφαλαίο το Τ από μόνος του;

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...