andress Δημοσ. 16 Σεπτεμβρίου 2011 Δημοσ. 16 Σεπτεμβρίου 2011 Γεια σας Θα επανέλθω σε ένα θέμα που έχει συζητηθεί πάλι αλλά δεν καλύπτει την περίπτωση μου: Εύρεση διπλών εγγραφών Έχω της εξής περίπτωση: Έχω δυο διαφορετικές λίστες με πεδία: Επώνυμο, όνομα, πατρώνυμο. Μπορώ να τις έχω στο excel ή σε access και θέλω να βρω αν μια εγγραφή υπάρχει και στις δύο λίστες Το θέμα είναι το εξής: Στην μία λίστα μπορεί να έχω την εγγραφή: Παπαδόπουλος, Γεώργιος, Νικόλαος και στην άλλη λίστα να υπάρχει ως: Παπαδόπουλο, Γεώργιο, Νικολάου. Αλλάζει δηλαδή η κλίση τους. Υπάρχει κάποιος τρόπος να βρω διπλές εγγραφές σε αυτή την περίπτωση? ( Μήπως π.χ. υπάρχει κάποιος τρόπος να αγνοούνται 2-3 χαρακτήρες από το τέλος? ) Ευχαριστώ
_tasos Δημοσ. 16 Σεπτεμβρίου 2011 Δημοσ. 16 Σεπτεμβρίου 2011 Η διαδικασία που περιγράφεις λέγεται stemming. Υπάρχουν αλγόριθμοι για αυτή τη διαδικασία αλλά είναι για την αγγλική γλώσσα. Ελληνικός stemmer νομίζω πως υπάρχει αλλά δεν ξέρω σίγουρα. Αν ψάξεις στο google για "ελληνικός stemmer" θα βρεις κάποιες αναφορές. Αν βρεις κάτι, θα είναι κατά πάσα πιθανότητα σε C. Υλοποίηση έτοιμη π.χ. σε vba για να το χρησιμοποιήσεις σε access και excel δεν νομίζω να βρεις.
dewn735 Δημοσ. 16 Σεπτεμβρίου 2011 Δημοσ. 16 Σεπτεμβρίου 2011 Να συμπληρώσω κι εγώ ότι το πρόβλημα με την ελληνική γλώσσα δεν είναι μόνο οι αλλαγές στη τελευταία συλλαβή ανάλογα με τη κλίση και το γένος, αλλά και η αλλαγή του τονισμού (άλλος χαρακτήρας το "α" και άλλος το "ά"). Επομένως, για να κάνεις αυτό που λες, θα πρέπει πρώτα να γυρίσεις όλους τους χαρακτήρες σε κεφαλαία, μετά να αντικαταστήσεις όλους τους τονισμένους (ή με διαλυτικά) με απλούς, να αφαιρέσεις τα δύο τελευταία γράμματα από κάθε όνομα και μετά να κάνεις τη σύγκριση - όλα αυτά γίνονται με συναρτήσεις, αλλά θέλει δουλίτσα
defacer Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 Εντάξει ρε παιδιά μη το κάνουμε και μεσανατολικό. Ένα απλό function θέλει που να παίρνει ας πούμε τους Ν πρώτους χαρακτήρες από κάθε ένα από τα 3 πεδία, να τα ενώνει και να τα βάζει σε ένα άλλο κελί της γραμμής. Αυτό ακόμα και με formula γίνεται, ούτε καν VBA θε θέλει. Και μετά ένα ή περισσότερα find/replace για να γίνουν κεφαλαία άτονα, και μετά ένα έτοιμο sort από το excel και απο κει και πέρα στα βρίσκει τα διπλά και μόνο του, να μη πω ότι μπορεί η δουλειά να γίνει και με το μάτι. Ή ακόμαι και copy paste σε άλλο προγραμματάκι που βρίσκει διπλές γραμμές σε text input. Για το πρόβλημα που έχει ο φίλος δε χρειάζονται 2 διδακτορικά, ας είμαστε και λίγο πρακτικοί.
andress Δημοσ. 17 Σεπτεμβρίου 2011 Μέλος Δημοσ. 17 Σεπτεμβρίου 2011 Ευτυχώς τα ονόματα είναι όλα με κεφαλαία οπότε δεν θα έχω το πρόβλημα με τους τόνους. Θα ακολουθήσω την ιδέα του defacer. Στο excel με ένα Left(source_string,number_of_characters) θα πάρω τους 3 πρώτους χαρακτήρες από κάθε πεδίο, θα κάνω ένα concatenate αυτή την τριάδα και θα έχω ένα πεδίο όπου μπορώ να βρω τα διπλότυπα σε μια access. Αν και υπάρχουν ονόματα με 2 χαρακτήρες π.χ. Ιώ ελπίζω να μην έχω πρόβλημα. Ευχαριστώ για το χρόνο σας
dewn735 Δημοσ. 17 Σεπτεμβρίου 2011 Δημοσ. 17 Σεπτεμβρίου 2011 Εντάξει ρε παιδιά μη το κάνουμε και μεσανατολικό. [...] Για το πρόβλημα που έχει ο φίλος δε χρειάζονται 2 διδακτορικά, ας είμαστε και λίγο πρακτικοί. Νομίζω τον ίδιο τρόπο λύσης δώσαμε όλοι μας...
Timonkaipumpa Δημοσ. 19 Σεπτεμβρίου 2011 Δημοσ. 19 Σεπτεμβρίου 2011 3 πρώτους χαρακτήρες... Όνομα: α) ΓΕΩΡΓΙΟΣ β) ΓΕΩΡΓΙΑ Επώνυμο: Χατζη[...]όγλου Χατζη[...]όγλου 4 χαρακτήρες ΚΩΝΣΤΑΝΤΙΝΟΣ ΚΩΝΣΤΑΝΤΙΝΑ ή ΑΚΗΣ ΑΚΗ Δεν είναι τόσο απλό όσο φαίνεται (θαρρώ).
dewn735 Δημοσ. 19 Σεπτεμβρίου 2011 Δημοσ. 19 Σεπτεμβρίου 2011 3 πρώτους χαρακτήρες... Δεν είναι τόσο απλό όσο φαίνεται (θαρρώ). Ναι, αλλά είναι 3 χαρακτήρες από 3 διαφορετικές λέξεις (όνομα, επώνυμο, πατρώνυμο)
Timonkaipumpa Δημοσ. 19 Σεπτεμβρίου 2011 Δημοσ. 19 Σεπτεμβρίου 2011 Ναι, αλλά είναι 3 χαρακτήρες από 3 διαφορετικές λέξεις (όνομα, επώνυμο, πατρώνυμο) Για το όνομα και το επώνυμο σου έδωσα παραδείγματα. Τώρα για το πατρώνυμο, από το να είναι το ίδιο μπορεί να διαφέρει μετά τους 3ς πρώτους χαρακτήρες. Π.χ. ΓΕΩΡΓΙΑ ΧΑΤΖΗ[...]ΟΓΛΟΥ ΧΡΙΣΤΟΦΟΡΟΥ ΓΕΩΡΓΙΟΣ ΧΑΤΖΗ[..]ΟΓΛΟΥ ΧΡΙΣΤΟΥ Μπορεί η λύση που έχεις να είναι ΟΚ στο data corpus που έχεις. Δεν νομίζω όμως ότι είναι ασφαλής.
dewn735 Δημοσ. 19 Σεπτεμβρίου 2011 Δημοσ. 19 Σεπτεμβρίου 2011 Φυσικά και δεν είναι ασφαλής για οποιοδήποτε ομάδα δεδομένων - επιπλέον (και από αυτά που κατάλαβα) ο τελικός έλεγχος για τις διπλές εγγραφές θα γίνει με το χέρι και όχι αυτόματα
andress Δημοσ. 19 Σεπτεμβρίου 2011 Μέλος Δημοσ. 19 Σεπτεμβρίου 2011 Εννοείται πως άπαξ και βρω τις εγγραφές που ταιριάζουν τα 3 πρώτα στοιχεία θα τυπώσω από την Access και τα πεδία Όνομα, Επώνυμο, Πατρώνυμο (Σε ρωτάει στον wizard διπλότυπων ποια έξτρα πεδία θες να εμφανιστούν) και εκεί με το μάτι θα κρίνω τι πραγματικά είναι διπλή εγγραφή και τι όχι. Δεν νομίζω πως μπορεί το σύστημα να μου δώσει 100% επιτυχία οπότε καλύτερα να τα δω εγώ ο ίδιος...
MitsakosGR Δημοσ. 19 Σεπτεμβρίου 2011 Δημοσ. 19 Σεπτεμβρίου 2011 Αφού μπορείς να έχεις τα δεδομένα στην access γιατί δεν βάζεις την sql να κάνει όλες αυτές τις δουλειές για εσένα;;; Κάτι σαν: >select distinct left([eponimo_column], Len([eponimo_column])-2) as Eponymo, left([onoma_column], Len([onoma_column])-2) as Onoma, left([patronimo_column], Len([patronimo_column])-2) as Patronimo from data_table Παραμετροποίησέ το λίγο στις ανάγκες σου και θα σου βγάλει όλες τις εγγραφές που θέλεις.
andress Δημοσ. 19 Σεπτεμβρίου 2011 Μέλος Δημοσ. 19 Σεπτεμβρίου 2011 Αφού μπορείς να έχεις τα δεδομένα στην access γιατί δεν βάζεις την sql να κάνει όλες αυτές τις δουλειές για εσένα;;; Κάτι σαν: >select distinct left([eponimo_column], Len([eponimo_column])-2) as Eponymo, left([onoma_column], Len([onoma_column])-2) as Onoma, left([patronimo_column], Len([patronimo_column])-2) as Patronimo from data_table Παραμετροποίησέ το λίγο στις ανάγκες σου και θα σου βγάλει όλες τις εγγραφές που θέλεις. Σωστός. Ευχαριστώ !
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.