Pythonista Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Καλησπέρα σας, Προσπαθώ να φτιάξω μια function η οποία θα παίρνει σαν παράμετρο ένα κείμενο text και θα το κάνει "unify". Με τον όρο unify εννοώ πως είτε το text είναι το "Δώσε αριθμό" ή το "Δώσέ άρίθμό", το output θέλω να είναι το "dwse arithmo". Ιδανικά θα ήθελα να μετατρέπει στο ίδιο output "dwse arithmo" και κείμενα με ορθογραφικά λάθη που όμως λογικά είναι το ίδιο, π.χ. "Δόσε αριθμό" αλλά αυτό ίσως να είναι δύσκολο στην ανάπτυξη και την εφαρμογή του. Το όλο πράγμα θα χρησιμοποιηθεί για να προβλέπει λάθη χρηστών κατά την εισαγωγή δεδομένων στην βάση δεδομένων καθώς και για την επιστροφή ποικιλίας δεδομένων. Με άλλα λόγια όταν ο χρήστης δίνει σαν είσοδο "Αβέ", πρέπει να επιστρέφει και "Aβέ" και "Αβε" και "ΑβΕ" κτλπ κτλπ. Δεν ξέρω αν ο τρόπος που σκέφτηκα είναι ο αποδοτικότερος; Έχετε να προτείνετε κάτι? Ευχαριστώ πολύ!!!
GReaperEx Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Η μετατροπή είναι εύκολη, η πρόβλεψη και διόρθωση λαθών όμως δεν είναι απλό πράγμα... Σε τι γλώσσα το φτιάχνεις, μπορεί να υπάρχει ήδη κάποια βιβλιοθήκη για ορθογραφικό έλεγχο.
Predatorkill Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Η μεθοδος λεγεται transliteration, προς αυτη τη κατευθυνση ψαξου. https://en.m.wikipedia.org/wiki/Transliteration https://www.google.com/inputtools/services/features/transliteration.html 3
k33theod Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Παλιότερα είχα χρειαστεί την αφαίρεση τόνων η συνάρτηση σε python είναι def remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.combining(c)]) input_str='Καλημέρα τι κάνεις καλά είσαι;' >>> remove_accents(input_str) 'Καλημερα τι κανεις καλα εισαι;' Τη μετατροπή θα μπορούσες να την κάνεις με ένα dictionary όπου αντιστοιχεις τους ελληνικούς σε λατινικούς και βάλε τη μετατροπή στην ίδια συνάρτηση δηλαδή return u"".join([latiniko[c] for c in nfkd......._ Έχει λίγο δουλεία με τα δύο γράμματα ει οι ου ντ μπ κλπ που μεταφράζονται σε ένα εκεί νομίζω θα χρειαστείς regular expressions 1
defacer Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Το όλο πράγμα θα χρησιμοποιηθεί για να προβλέπει λάθη χρηστών κατά την εισαγωγή δεδομένων στην βάση δεδομένων καθώς και για την επιστροφή ποικιλίας δεδομένων. Με άλλα λόγια όταν ο χρήστης δίνει σαν είσοδο "Αβέ", πρέπει να επιστρέφει και "Aβέ" και "Αβε" και "ΑβΕ" κτλπ κτλπ. Δεν ξέρω αν ο τρόπος που σκέφτηκα είναι ο αποδοτικότερος; Έχετε να προτείνετε κάτι? Γιατί όμως έχεις μπλέξει τα greeklish στην κουβέντα; Δηλαδή στο σενάριο που έχεις στο μυαλό σου, τι θα άλλαζε αν το "Δώσε" και το "Δώσέ" και το "ΔΩςΕ" τα έκανες όλα "δοσε" αντί για "dwse"? Βασικά πρέπει να πεις τελείως ξεκάθαρα ποιός είναι ο σκοπός, αλλιώς μπερδεύεις χωρίς λόγο το πρόβλημα που θες να λύσεις με τη λύση που σου έρχεται (και μπορεί να είναι τελείως λάθος). Πώς θα προβλέπει λάθη χρηστών και θα επιστρέφει ποικιλία δεδομένων δηλαδή; Τι τεχνολογίες χρησιμοποιείς γι' αυτή τη διαδικασία;
becoming_I Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Αν κατάλαβα και από το username σου με python θες να το κάνεις. Πρέπει πρώτα να ψαχτείς με regular expressions για να παίρνεις και τους τονισμένους χαρακτήρες σε απλούς χωρίς τόνο και αφού το κάνεις, τα μετατρέπεις σε lowercase και τα αντιστοιχείς με ένα λεξικό.
k33theod Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 Αν κατάλαβα και από το username σου με python θες να το κάνεις. Πρέπει πρώτα να ψαχτείς με regular expressions για να παίρνεις και τους τονισμένους χαρακτήρες σε απλούς χωρίς τόνο και αφού το κάνεις, τα μετατρέπεις σε lowercase και τα αντιστοιχείς με ένα λεξικό. Hey hey τα μεγάλα πνεύματα συναντώνται. greek_to_latin={'α': 'a', 'β': 'v', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', 'θ': 'th', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': 'j', 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', 'χ': 'ch', 'ψ': 'ps', 'ω': 'w', 'Α': 'A', 'Β': 'V', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', 'Η': 'H', 'Θ': 'TH', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', 'Ξ': 'J', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W'} def translate(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([greek_to_latin.get(c) if c in greek_to_latin else c for c in nfkd_form if not unicodedata.combining(c)]) translate('Αν κατάλαβα και από το username σου με python θες να το κάνεις. Πρέπει πρώτα να ψαχτείς με regular expressions για να παίρνεις και τους τονισμένους χαρακτήρες σε απλούς χωρίς τόνο και αφού το κάνεις, τα μετατρέπεις σε lowercase και τα αντιστοιχείς με ένα λεξικό.') 'An katalava kai apo to username soy me python theς na to kaneiς. Prepei prwta na psachteiς me regular expressions gia na pairneiς kai toyς tonismenoyς charakthreς se aployς chwriς tono kai afoy to kaneiς, ta metatrepeiς se lowercase kai ta antistoicheiς me ena lejiko.' >>> Έχει και ένας φίλος εδώ μια version αλλά είναι λίγο πολύπλοκη https://github.com/gschizas/RomanizePython 2
Pythonista Δημοσ. 20 Νοεμβρίου 2017 Μέλος Δημοσ. 20 Νοεμβρίου 2017 Γιατί όμως έχεις μπλέξει τα greeklish στην κουβέντα; Δηλαδή στο σενάριο που έχεις στο μυαλό σου, τι θα άλλαζε αν το "Δώσε" και το "Δώσέ" και το "ΔΩςΕ" τα έκανες όλα "δοσε" αντί για "dwse"? Βασικά πρέπει να πεις τελείως ξεκάθαρα ποιός είναι ο σκοπός, αλλιώς μπερδεύεις χωρίς λόγο το πρόβλημα που θες να λύσεις με τη λύση που σου έρχεται (και μπορεί να είναι τελείως λάθος). Πώς θα προβλέπει λάθη χρηστών και θα επιστρέφει ποικιλία δεδομένων δηλαδή; Τι τεχνολογίες χρησιμοποιείς γι' αυτή τη διαδικασία; Καμία ιδιαίτερη διαφορά πέρα από το ότι αν ο άλλος εισάγει greeklish θα του επιστρέψει επίσης το σωστό αποτέλεσμα(μάλλον... ). Ο σκοπός είναι να αυξήσω την αποδοτικότητα της εφαρμογής όσον'αφορά την αναζήτηση. Να μην χρειάζεται ο χρήστης να εισάγει επακριβώς το περιεχόμενο ενός τίτλου για να το επιστρέψει το αντίστοιχο ή τα αντίστοιχα rows. Έχω έναν πίνακα με 3 columns(id, title, περιεχόμενο). Είμαι νέος στο backend development και ακόμα μαθαίνω τα εργαλεία. Ίσως να υπάρχει κάτι έτοιμο και δεν το ξέρω. Προς το παρόν δουλεύω με Python και Flask/Django. Ευχαριστώ πολύ για τα snippets!
solarpower Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 @k33theodξέχασες το "ς". @Pythonista αν το κλειδί είναι ο τίτλος τότε μπορείς να τον κάνεις χωρίς φωνήεντα με κεφαλαία, και μετά μετατροπή με λατινικούς χαρακτήρες. Στην αναζήτηση μπορείς να τσεκάρεις τα φωνήεντα, σε ελληνικά κεφαλαία αν είναι κατά ένα επιτρεπτό ποσοστό ίδια. Ίσως και το τελικό ς να το αφαιρέσεις τελείως από το κλειδί, και να βολεύει!
k33theod Δημοσ. 20 Νοεμβρίου 2017 Δημοσ. 20 Νοεμβρίου 2017 (επεξεργασμένο) @k33theod ξέχασες το "ς". Αυτή είναι η free edition στην κανονική με συνδρομή το έχω διορθώσει Έχω βάλει και το υ να αντιστοιχείζεται με u και όχι y Επεξ/σία 20 Νοεμβρίου 2017 από k33theod 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα