Εμφάνιση αναρτήσεων με ετικέτα συλλαβισμός. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα συλλαβισμός. Εμφάνιση όλων των αναρτήσεων

Κυριακή, 2 Ιουνίου 2013

Ο συλλαβισμός στην Πομακική

réčkovo delénye ή rečkodelénye

 

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

Με τη σημερινή ραγδαία ανάπτυξη και εξέλιξη της επιστήμης των υπολογιστών δεν είναι καθόλου απίθανο σε λίγα χρόνια να εκλείψει παντελώς η ανάγκη του συλλαβισμού των κειμένων και η ίδια η λέξη «συλλαβισμός» να καταργηθεί από το λεξιλόγιό μας.  Ρίξτε μια ματιά εδώ κι εδώ για του λόγου το αληθές.  Μέχρι τότε όμως, για να μπορούμε να χρησιμοποιούμε την πλήρη στοίχιση στα μονόστηλα, δίστηλα ή πολύστηλα κείμενά μας με το καλύτερο δυνατό αισθητικό, λειτουργικό και πρακτικό αποτέλεσμα, θα είμαστε αναγκασμένοι να χρησιμοποιούμε τον συλλαβισμό με το κατάλληλο «σπάσιμο» των λέξεων σύμφωνα με ορισμένους κανόνες.

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

1. Ένα σύμφωνο ανάμεσα σε δύο φωνήεντα συλλαβίζεται με το δεύτερο φωνήεν
π.χ.  va-dá, ža-ná, dé-te, ko-rá, pé-pel, na-gá, ra-ká κλπ.

2.  Δύο σύμφωνα ανάμεσα σε δύο φωνήεντα συλλαβίζονται με το δεύτερο φωνήεν, εάν απ’ αυτά τα σύμφωνα αρχίζει λέξη της Πομακικής (ανεξαρτήτου προέλευσης).  Διαφορετικά, χωρίζονται και το πρώτο σύμφωνο πάει με το προηγούμενο φωνήεν, το δεύτερο με το ακόλουθο.
π.χ.
α) ko-prı́va (prı́lıka), a-gledálo (glavá), má-slo (slónce), pa-trı́šom (trahá, trendráfel), patá-vra (vrána) κλπ.
β) per-perúda, úr-da, yúr-va, pór-ta, sól-za, fúr-ka, vór-ga, bór-no, bán-ga κλπ.

3.  Τρία σύμφωνα ανάμεσα σε δύο φωνήεντα συλλαβίζονται με το ακόλουθο φωνήεν, όταν απ’ αυτά τα σύμφωνα αρχίζει λέξη της Πομακικής.  Σε διαφορετική περίπτωση, χωρίζονται και το πρώτο σύμφωνο πάει με το προηγούμενο φωνήεν, το τρίτο (τελευταίο) σύμφωνο με το ακόλουθο φωνήεων και το δεύτερο (ενδιάμεσο) σύμφωνο υπάγεται στον δεύτερο κανόνα συλλαβισμού.  Εάν, δηλαδή, από το δεύτερο και τρίτο σύμφωνο αρχίζει λέξη της Πομακικής, τότε αυτό ακολουθεί το τρίτο σύμφωνο και πάει με το επόμενο φωνήεν, αλλιώς, μένει πίσω με το πρώτο σύμφωνο και το προηγούμενο φωνήεν.
π.χ.
α) pa-smračáva so (smračáva so), pa-strašávom (strašávom, strah, strášan), pa-splatnä́vom (splatnä́vom), pa-skrapä́vom (skrapä́vom, skram, skramcá), pad-skrafı́savom (skrafı́som) κλπ.
β) amar-tvä́vom, skı̈rč-yásavom, borč-yásavom κλπ.

Αυτή τη στιγμή δεν μπορώ να σκεφτώ κάποια λέξη που να περιέχει τέσσερα σύμφωνα στη σειρά.  Αυτό, αναμφίβολα, έχει να κάνει και με το αλφάβητο.  Εάν όμως προκύψει κάτι τέτοιο στην πορεία, νομίζω ότι αυτό θα μπορούσε χωρίς κανένα πρόβλημα να υπαχθεί στον τρίτο κανόνα συλλαβισμού.

Από τους παραπάνω κανόνες εξαιρούνται οι εξής περιπτώσεις:
α) Τα προθήματα (πρώτα συνθετικά) ab, ad, ız, nad, pad, raz, vaz δεν χωρίζονται.
β) Τα συμπλέγματα ck και čk στις καταλήξεις -ckı̈y, -cka, -cko, -ckı, -ckı̈ και -čkı̈y, -čka, -čko, -čkı, -čkı̈ ορισμένων επιθέτων με ή χωρίς το οριστικό άρθρο δεν χωρίζονται.

(Σημ.: Λέξη της Πομακικής που να αρχίζει από ck ή čk δεν υπάρχει και κανονικά θα έπρεπε να εφαρμοστεί ο αντίστοιχος κανόνας συλλαβισμού, ανάλογα με την περίπτωση, και να χωριστούν τα γράμματα c και από το k, κάτι το οποίο εγώ προσωπικά δεν επιθυμώ).
Αυτό είναι όλο κι όλο, για την ώρα τουλάχιστον.


Μπορείτε τώρα να κάνετε μια σύγκριση με τους κανόνες συλλαβισμού της Νεοελληνικής Γραμματικής του Μανόλη Τριανταφυλλίδη, σελ. 19, παρ. 24, και αυτούς της σύγχρονης Βουλγαρικής, όπως έχουν τροποποιηθεί από το 1983, ή άλλων γλωσσών και να βγάλετε τα όποια συμπεράσματά σας.

Όλα αυτά, βεβαίως, στη θεωρία.  Ας περάσουμε όμως τώρα στην πράξη και την υλοποίηση όλων αυτών των κανόνων στους υπολογιστές, προκειμένου να μπορεί να εφαρμόσει κανείς αυτόματο συλλαβισμό στα κείμενά του.


Την περιγραφή του γνωστού στους προγραμματιστές αλγορίθμου συλλαβισμού στους υπολογιστές του καθηγητή Franklin Mark Liang του Πανεπιστημίου Stanford μπορείτε να τη διαβάσετε εδώ.  Την υλοποίηση του παραπάνω αλγορίθμου, με κάποιες παραλλαγές, έχουν πραγματοποιήσει και ενσωματώσει στα έργα τους διάφοροι μεμονωμένοι προγραμματιστές, οργανισμοί και εταιρείες ανά τον κόσμο και μεταξύ αυτών και κάποια μεγάλης κλίμακας projects, όπως το OpenOffice και το LibreOffice κ.ά.


Μια τέτοια υλοποίηση γραμμένη σε C++ (για Linux) που μου κέντρισε το ενδιαφέρον είναι τούτη εδώ.  Αφού, λοιπόν, κατάφερα με κάποια δυσκολία, ομολογώ, να την μεταγλωττίσω σε περιβάλλον Windows και, όντας παιχνιδιάρης ο ίδιος, να «παίξω» μαζί της επί αρκετές ημέρες, διαπίστωσα με μεγάλη μου λύπη για άλλη μια φορά ότι το παιχνίδι δεν έβγαινε και ήταν σχεδόν αδύνατη η χρήση της στην περίπτωση της Πομακικής για δύο λόγους:  α) η χρήση διεθνών τυποποιήσεων σε ό,τι αφορά τις κωδικές ονομασίες των γλωσσών, στις οποίες δεν συμπεριλαμβάνεται η Πομακική, και β) οι πάρα πολλές και αμφιβόλου τελικού αποτελέσματος αλλαγές που θα έπρεπε να γίνουν στον κώδικα , λόγω του ιδιαίτερου συστήματος γραφής της Πομακικής (βλ. προηγούμενες αναρτήσεις).


Κι έτσι, μη έχοντας και πολλές επιλογές, στράφηκα προς την αυτοσχέδια λύση, η οποία θα ήταν και μια πρώτης τάξεως ευκαιρία να δοκιμάσω τις γνώσεις μου στη C++.  Το παίδεψα και με παίδεψε, είναι αλήθεια, κι έκανα σχέδια επί σχεδίων, έως ότου καταλήξω σε κάποιο σχήμα.  Στο τέλος νομίζω ότι κάτι έκανα.  Μια απλή κλάση της C++ με ελάχιστες ρουτίνες και συναρτήσεις και πολύ λίγες γραμμές κώδικα.  Οι χρόνοι είναι ικανοποιητικοί, μπορεί και καλύτεροι από άλλες αντίστοιχες υλοποιήσεις, και το τελικό αποτελέσμα το επιθυμητό• δεν έχει να ζηλέψει τίποτα από εκείνες των υπολοίπων.  Βελτιώσεις και διορθώσεις ασφαλώς και μπορούν να γίνουν τόσο στην υλοποίηση αυτή καθεαυτή όσο και στους κώδικες συλλαβισμού, ο αριθμός των οποίων μόλις που πλησιάζει τους χίλιους σε σύνολο αρκετών δεκάδων χιλιάδων τύπων λέξεων της Πομακικής.  Νομίζω ότι είναι μια πολύ καλή βάση και αρχή.


Ιδού ένα μέρος του κώδικα που αποτελεί και την κεντρική διαδικασία (ρουτίνα) της υλοποίησης.


void Hyphenator::hyphenate( wstring& wrd, int32_t idx, vector<int>& pos_indexes )
{
    if ( wrd.empty() || wrd.size() < 3 )
        return;

    wstring word, key, pat;

    map<wstring, wstring>::const_iterator it;

    UnicodeString ustr( wrd.c_str() );
    ustr.toLower();

    word += _T(".");
    word += ustr.getTerminatedBuffer();
    word += _T(".");

    wchar_t c;
    size_t p, l, r = 0, s = word.size();

    vector<int> v;
    v.reserve( s * s );

    for ( size_t pos = 0; pos < s; pos++ ) {
        for ( size_t i = s; i > pos; i-- ) {
            key = word.substr( pos, i - pos );
            it = _patterns.find( key );
            if ( it != _patterns.end() ) {
                pat = it->second;
                v.resize( v.size() + s );
                p = pos; l = 0;
                if ( p == 0 ) l = 1; else p--;
                for ( size_t j = l; j < pat.size(); j++ ) {
                    c = pat[j];
                    v[ ( r * s ) + p++ ] = _wtoi( &c );
                }
                r++;
            }
        }
    }

    int32_t n, t;

    for ( size_t i = 1; i < s -1; i++ ) {
        n = 0;
        for ( size_t j = 0; j < r; j++ ) {
            t = v[ ( j * s ) + i ];
            if ( t > n ) n = t;
        }
        if ( i < ( s - 2 ) ) {
            if ( n > 0 && n % 2 > 0 ) {
                pos_indexes.push_back( (idx + i) );
            }
        }
    }
}





Να επισημάνω εδώ ότι η μόνη αναγκαία εμπλοκή της βιβλιοθήκης ICU στην περίπτωση του συλλαβισμού συνίσταται στην μετατροπή των κεφαλαίων χαρακτήρων σε πεζούς, καθότι δεν μπόρεσα να βρω κάτι άλλο πιο αξιόπιστο.

Αυτή είναι εν ολίγοις η ιστορία με τον συλλαβισμό και δε νομίζω ότι χρειάζεται να προσθέσω ή να συμπληρώσω κάτι άλλο επί του παρόντος.  Τώρα, το ότι πονάνε λίγο τα δάχτυλα των χεριών μου από το πληκτρολόγιο και ότι δεν πρόλαβα ακόμη να υποβάλω τη φορολογική μου δήλωση ή ότι δεν βρήκα λίγο χρόνο για το αγαπημένο μου «σπορ», αυτά πια, νομίζω, δεν ενδιαφέρουν κανέναν.


Κατεβάστε το πακέτο με την εφαρμογή επίδειξης από εδώ (md5 checksum: c5149f132d15c101de1fb2baed0eb3de) για να δείτε ζωντανά το αποτέλεσμα όλων των παραπάνω στην οθόνη του υπολογιστή σας.  Μέσα στο φάκελο θα βρείτε τη γραμματοσειρά Andika, την οποία πρέπει να εγκαταστήσετε για τη σωστή προβολή του κειμένου, και το αρχείο SampleText.txt, ένα πομακικό παραμύθι από το βιβλίο της Δήμητρας Κατάκη «Ο παππούς και η γιαγιά είπαν...», γραμμένο στο αναθεωρημένο λατινικό αλφάβητο, για τις δοκιμές σας.  Το πακέτο είναι πλήρες, με όλα τα παρελκόμενα, και εκτός από λίγο χρόνο κάτι άλλο δε νομίζω ότι θα χρειαστείτε.  Δοκιμάστε το και σχολιάστε το (προαιρετικά είναι και τα δύο).


Εάν κάποιος ενδιαφέρεται να αποκτήσει το σύνολο του πηγαίου κώδικα, μπορεί να τον λάβει δωρεάν, αρκεί, απλά, να τον ζητήσει.

Σάββατο, 18 Μαΐου 2013

Αναθεώρηση του αλφαβήτου και διατάξεις πληκτρολογίου

Καλωσορίσατε στο ιστολόγιο μου

Το PomLex μετά από μια μακρά περίοδο «ξεκούρασης» είναι και πάλι στον αέρα.  Αυτή τη φορά χωρίς επέκταση .com, .gr ή οτιδήποτε άλλο, νέτο - σκέτο.  Ο σκοπός του, φυσικά, δεν είναι άλλος από τον αρχικό, η καταγραφή, δηλαδή, η ανάδειξη και η προώθηση της Πομακικής.

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

Με τη βοήθεια του Microsoft Keyboard Layout Creator έφτιαξα τρεις προσαρμοσμένες και διαφορετικές ως προς τη γραφή διατάξεις πληκτρολογίου, μια για τη λατινική, μια για την κυριλλική και μια για την ελληνική.  Οι διατάξεις αυτές κάνουν χρήση των νέων δυνατοτήτων που παρέχουν οι γραμματοσειρές OpenType και προϋποθέτουν την ύπαρξη αυτών.  Η τεχνολογία αυτή, βέβαια, είναι σχετικά καινούργια και τυγχάνει περιορισμένης ακόμα υποστήριξης από τα διάφορα προγράμματα και συστήματα.   Αν δεν κάνω λάθος, η ίδια η Microsoft μόλις από το Office 2010 αρχίζει να παρέχει κάποια υποστήριξη για την τεχνολογία αυτή.

Να σημειώσω εδώ ότι οι μόνες γραμματοσειρές που εντόπισα με πλήρη υποστήριξη της λατινικής και της κυριλλικής ( Andika, Charis SIL, Doulos SIL ), όχι όμως και της ελληνικής, είναι μερικές απ’ αυτές που έχει σχεδιάσει και αναπτύξει μαζί με μια πληθώρα άλλων εργαλείων ο SIL International.

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

Παραθέτω εδώ κάποια στιγμιότυπα οθόνης (screenshots), καθώς και τα αντίστοιχα πακέτα εγκατάστασης των διατάξεων πληκτρολογίου, για όποιον θέλει να τα δοκιμάσει και να μας πει την εμπειρία του.  Είναι απαραίτητη η εγκατάσταση των προαναφερόμενων γραμματοσειρών.  Κάποιες γραμματοσειρές της Microsoft που προεγκαθίστανται μαζί με τα Windows 7, όπως η Calibri και η Cambria, παρέχουν περιορισμένη υποστήριξη μόνο.













Κατεβάστε τα πακέτα εγκατάστασης

Λατινικό (md5: a2036ba355651de95510e61060f4fcf8)
Κυριλλικό (md5: ed24c7dceaab627b983a2690ad6b1bc8)
Ελληνικό (md5: 5184ba104b5e52dc7fe10e021afc029a)


Για την ταξινόμηση και τον συλλαβισμό θα γράψω σε επόμενο άρθρο μου.




Να περνάτε καλά

Ριτβάν