Μετασχηματισμοί δεδομένων (Transformations)
Μέσω των όψεων (facets), των φίλτρων (filters) και των συστάδων (clusters), το OpenRefine προσφέρει σχετικά απλούς τρόπους για να αποκτήσετε μια επισκόπηση των δεδομένων σας και να κάνετε αλλαγές όπου θέλετε να τυποποιήσετε τους όρους που χρησιμοποιούνται, ώστε να καταλήξουν σε ένα κοινό σύνολο τιμών.
Ωστόσο, μερικές φορές υπάρχουν αλλαγές που θέλετε να κάνετε στα δεδομένα και δεν μπορούν να επιτευχθούν με αυτούς τους τρόπους. Τέτοιες αλλαγές περιλαμβάνουν:
Διάσπαση δεδομένων που βρίσκονται σε μία στήλη σε πολλές στήλες (π.χ. διάσπαση μιας διεύθυνσης σε επιμέρους τμήματα)
Τυποποίηση της μορφής των δεδομένων σε μια στήλη χωρίς να αλλάξουν οι τιμές (π.χ. αφαίρεση σημείων στίξης ή τυποποίηση μιας μορφής ημερομηνίας)
Εξαγωγή ενός συγκεκριμένου τύπου δεδομένων από μια μεγαλύτερη συμβολοσειρά κειμένου (π.χ. εντοπισμός ISBN σε μια βιβλιογραφική αναφορά)
Για να υποστηρίξει αυτού του είδους τις εργασίες, το OpenRefine διαθέτει τους Μετασχηματισμούς (Transformations), οι οποίοι αποτελούν τρόπους χειρισμού δεδομένων σε στήλες. Οι μετασχηματισμοί συνήθως γράφονται σε μια ειδική γλώσσα που ονομάζεται GREL (General Refine Expression Language). Σε κάποιο βαθμό, οι εκφράσεις GREL μοιάζουν με τους τύπους του Excel, αν και εστιάζουν κυρίως στη διαχείριση κειμένου και όχι σε αριθμητικές συναρτήσεις.
Πλήρη τεκμηρίωση για τη GREL θα βρείτε στη διεύθυνση: https://openrefine.org/docs/manual/grelfunctions .
Συνηθισμένοι μετασχηματισμοί – Common Transformations
Παρακάτω παρατίθενται παραδείγματα ορισμένων από αυτούς τους συνηθισμένους μετασχηματισμούς, μαζί με το αντίστοιχο παράδειγμά τους σε GREL.
Common Transformations
Ενέργεια
Έκφραση GREL
Αφαίρεση κενών στην αρχή και το τέλος
Αφαιρεί οποιουσδήποτε χαρακτήρες «κενού» (π.χ. διαστήματα, tab) από την αρχή και το τέλος της τρέχουσας τιμής
value.trim()
Σε μορφή τίτλου (Titlecase)
Μετατρέπει την τρέχουσα τιμή σε μορφή τίτλου (δηλαδή κάθε λέξη ξεκινά με κεφαλαίο γράμμα και όλα τα υπόλοιπα γράμματα μετατρέπονται σε πεζά)
value.toTitlecase()
Σε κεφαλαία
Μετατρέπει την τρέχουσα τιμή σε κεφαλαία
value.toUppercase()
Σε πεζά
Μετατρέπει την τρέχουσα τιμή σε πεζά
value.toLowercase()
Μετασχηματισμοί κεφαλαίων/πεζών
Πολλά από τα προβλήματα με τα δεδομένα στη στήλη jurisdiction προέκυψαν από διαφορές στη χρήση κεφαλαίων και πεζών γραμμάτων. Ένας τρόπος να εξαλείψουμε αυτά τα προβλήματα είναι να κάνουμε όλους τους όρους κεφαλαία Κάντε κλικ στο βελάκι δίπλα στο jurisdiction και από το αναπτυσσόμενο μενού, επιλέξτε Edit cells (Επεξεργασία κελιών) > Common transforms (Συνηθισμένοι μετασχηματισμοί). Τέλος, επιλέξτε To uppercase(Σε κεφαλαία). Όλοι οι τύποι περιφερειών είναι πλέον με κεφαλαία γράμματα.
Αφαίρεση κενών στην αρχή και το τέλος - Trim leading and trailing whitespace
Πολύ συχνά περιεχόμενα κελιών που θα έπρεπε να είναι πανομοιότυπα — και φαίνονται πανομοιότυπα — διαφέρουν επειδή περιέχουν κενά ή χαρακτήρες αλλαγής γραμμής που είναι αόρατοι στον χρήστη. Αυτή η λειτουργία αφαιρεί οποιονδήποτε τέτοιο χαρακτήρα πριν ή μετά το εμφανές κείμενο.
Σύμπτυξη συνεχόμενων κενών χαρακτήρων - Collapse consecutive whitespace
Μπορεί να συναντήσετε κελιά που περιέχουν αυτό που φαίνεται να είναι κενό αλλά στην πραγματικότητα είναι tab, ή πολλαπλά κενά στη σειρά. Αυτή η λειτουργία θα αφαιρέσει όλα τα συνεχόμενα κενά και θα τα αντικαταστήσει με ένα μοναδικό κενό.
Αναγωγή HTML οντοτήτων - Unescape HTML
Τα δεδομένα σας μπορεί να προέρχονται από HTML πηγή όπου ορισμένοι χαρακτήρες εμφανίζονται ως κωδικοί, π.χ. για κενό ή %u0107 για το γράμμα ć, αντί για πραγματικούς Unicode χαρακτήρες. Με τον μετασχηματισμό “unescape HTML entities” μπορείτε να αντικαταστήσετε αυτούς τους κωδικούς με τους κανονικούς χαρακτήρες. Για άλλους τύπους formatting που χρειάζονται “escaping”, μπορείτε να χρησιμοποιήσετε custom μετασχηματισμό με escape().
Αντικατάσταση «έξυπνων» εισαγωγικών με ASCII - Replace smart quotes with ASCII
Τα «έξυπνα» ή «κυρτά» εισαγωγικά διαφέρουν ανάλογα με το αν βρίσκονται στην αρχή ή το τέλος μίας λέξης — π.χ. “ … ”. Αυτοί οι χαρακτήρες δεν είναι ASCII (αν και είναι UTF-8), επομένως μπορείτε να τους αντικαταστήσετε με ευθύ, απλό εισαγωγικό (").
Μετατροπές τύπων δεδομένων - Data-type transforms
Το OpenRefine αναγνωρίζει διάφορους τύπους: string, number, boolean, date. Αν εφαρμόσετε τέτοιους μετασχηματισμούς, το OpenRefine θα προσπαθήσει να μετατρέψει την τιμή (π.χ. από το κείμενο "3" στο αριθμητικό 3) και θα αλλάξει τον τύπο στη στήλη όπου γίνεται επιτυχής μετατροπή.
Το OpenRefine δεν εμφανίζει σφάλμα όταν μία τιμή δεν μπορεί να μετατραπεί — απλώς κρατά την αρχική τιμή, οπότε είναι σημαντικό να ελέγχετε πόσες γραμμές μετατράπηκαν (θα δείτε προειδοποίηση στο πάνω μέρος της οθόνης). Επίσης, μπορείτε να κάνετε όψη (facet) βάσει τύπου με τη συνάρτηση type().
Μπορείτε ακόμη να μετατρέψετε κελιά σε null ή σε κενή συμβολοσειρά — χρήσιμο όταν, π.χ., θέλετε να «σβήσετε» διπλότυπα αφού τα επισημάνετε.
Blank down / Fill down
Χρήσιμα όταν τα δεδομένα είναι οργανωμένα σε records (δηλαδή πολλές γραμμές ανήκουν σε μία εγγραφή).
Blank down: διαγράψτε τις επαναλαμβανόμενες τιμές μίας στήλης (κρατώντας μόνο την πρώτη), αφού πρώτα ταξινομήσετε σωστά τα δεδομένα, και έπειτα επιλέξτε Show as records.
Fill down: κάνει το αντίθετο — συμπληρώνει κενά κελιά προς τα κάτω αντιγράφοντας την πιο πρόσφατη μη-κενή τιμή, ώστε όλες οι γραμμές ενός record να έχουν την ίδια τιμή.
Split multi-valued cells
Διασπά ένα κελί που περιέχει περισσότερες από μία τιμές σε πολλαπλές γραμμές (ή στήλες αν το επιλέξετε ξεχωριστά). Μπορείτε να ορίσετε ως διαχωριστικό οποιονδήποτε χαρακτήρα ή ακόμη και regular expression (π.χ. ; , /, \n, [A-Z], κ.λπ.). Προσοχή: οι χαρακτήρες που χρησιμοποιούνται ως διαχωριστικά διαγράφονται.

Join multi-valued cells
Κάνει το αντίστροφο της διάσπασης: ενώνει πολλές γραμμές σε μία, συμπιέζοντας όλες τις τιμές του record στο πάνω κελί, με διαχωριστικό (προεπιλογή: , — προτείνεται το | ως πιο σπάνιος χαρακτήρας).
Προχωρημένοι Μετασχηματισμοί με χρήση GREL
Πρόσθεση προθέματος σε μια στήλη
Ας υποθέσουμε ότι θέλετε να προσθέσετε το πρόθεμα ΕΕΕΕΚ στο όνομα κάθε school_class που έχει το λεκτικό Ειδικής Επαγγελματικής Εκπαίδευσης και Κατάρτισης. Χρησιμοποιώντας πρώτα facet για τη στήλη school_class ώστε να επιλέξετε όλες τις γραμμές που περιέχουν τον όρο, από το αναδυόμενο παράθυρο στο βελάκι αριστερά της επιλέξτε Επεξεργασία κελιών (Edit cells) και μετά Μετασχηματισμός… (Transform…). Στο πλαίσιο που εμφανίζεται, θα σας ζητηθεί να χρησιμοποιήσετε μια γλώσσα που ονομάζεται Google Refine Expression Language (GREL) για να μετασχηματίσετε τα δεδομένα σας. Θα βρείτε ένα πεδίο για να γράψετε τον μετασχηματισμό (το πλαίσιο Expression) και τη δυνατότητα να κάνετε Προεπισκόπηση (Preview) του αποτελέσματος του μετασχηματισμού σε 10 γραμμές των δεδομένων σας.
Ο μετασχηματισμός που πληκτρολογείτε στο πλαίσιο Expression πρέπει να είναι έγκυρη έκφραση GREL. Η προεπιλεγμένη έκφραση είναι η λέξη value μόνη της – που σημαίνει «η τρέχουσα τιμή της στήλης»· δηλαδή: μην κάνεις καμία αλλαγή.
Όταν θέλετε να προσθέσετε ένα πρόθεμα σε δεδομένα στο OpenRefine, το πρότυπο είναι το εξής:
"prefix" + value
Έτσι, στο κενό πλαίσιο κειμένου, πληκτρολογήστε:
"ΕΕΕΕΚ " + value
Θα δείτε μια προεπισκόπηση του πώς θα φαίνονται τα δεδομένα σας στη στήλη κάτω δεξιά. Όταν είστε ικανοποιημένοι, πατήστε OK.
Δημιουργία νέας στήλης βάσει της τιμής μιας υπάρχουσας
Ας υποθέσουμε ότι θέλετε να δημιουργήσετε μια νέα στήλη που να υπολογίζει το συνολικό άθροισμα των μαθητών (αγόρια και κορίτσια, στήλες registered_students_boys και registered_students_girls αντίστοιχα). Από το αναδυόμενο μενού της στήλης registered_students_girls επιλέγετε Edit column > Add column based on this column
Δώστε στη νέα στήλη το όνομα Πλήθος Μαθητών. Για να πούμε στο OpenRefine να συνενώσει (concatenate) τιμές από δύο στήλες, πρέπει να χρησιμοποιήσουμε τη Γλώσσα Εκφράσεων του Refine (GREL). Στην αρχική έκφραση, η λέξη value αναφέρεται στην τιμή της τρέχουσας στήλης. Αν θέλουμε να αναφερθούμε σε μια άλλη στήλη, χρησιμοποιούμε τη μορφή cells.<όνομα_στήλης>.value. Έτσι, στο πεδίο της έκφρασης πληκτρολογήστε:
cells.registered_students_boys.value + value
Καθώς πληκτρολογείτε, το παράθυρο προεπισκόπησης στο κάτω μέρος αλλάζει ώστε να δείχνει το τελικό αποτέλεσμα. Εφόσον όλα φαίνονται σωστά, κάντε κλικ στο OK. Τώρα θα πρέπει να έχει δημιουργηθεί μια νέα στήλη με όνομα User2, η οποία συνδυάζει πληροφορίες από τις στήλες user_id και user_login

Last updated