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

Ειδική περίπτωση εύρεσης διπλών εγγραφών


andress

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

Δημοσ.

Γεια σας

 

Θα επανέλθω σε ένα θέμα που έχει συζητηθεί πάλι αλλά δεν καλύπτει την περίπτωση μου: Εύρεση διπλών εγγραφών

 

Έχω της εξής περίπτωση:

Έχω δυο διαφορετικές λίστες με πεδία: Επώνυμο, όνομα, πατρώνυμο.

Μπορώ να τις έχω στο excel ή σε access και θέλω να βρω αν μια εγγραφή υπάρχει και στις δύο λίστες

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

Αλλάζει δηλαδή η κλίση τους.

 

Υπάρχει κάποιος τρόπος να βρω διπλές εγγραφές σε αυτή την περίπτωση?

( Μήπως π.χ. υπάρχει κάποιος τρόπος να αγνοούνται 2-3 χαρακτήρες από το τέλος? )

 

Ευχαριστώ

Δημοσ.

Η διαδικασία που περιγράφεις λέγεται stemming. Υπάρχουν αλγόριθμοι για αυτή τη διαδικασία αλλά είναι για την αγγλική γλώσσα. Ελληνικός stemmer νομίζω πως υπάρχει αλλά δεν ξέρω σίγουρα. Αν ψάξεις στο google για "ελληνικός stemmer" θα βρεις κάποιες αναφορές. Αν βρεις κάτι, θα είναι κατά πάσα πιθανότητα σε C. Υλοποίηση έτοιμη π.χ. σε vba για να το χρησιμοποιήσεις σε access και excel δεν νομίζω να βρεις.

 

 

Δημοσ.

Να συμπληρώσω κι εγώ ότι το πρόβλημα με την ελληνική γλώσσα δεν είναι μόνο οι αλλαγές στη τελευταία συλλαβή ανάλογα με τη κλίση και το γένος, αλλά και η αλλαγή του τονισμού (άλλος χαρακτήρας το "α" και άλλος το "ά"). Επομένως, για να κάνεις αυτό που λες, θα πρέπει πρώτα να γυρίσεις όλους τους χαρακτήρες σε κεφαλαία, μετά να αντικαταστήσεις όλους τους τονισμένους (ή με διαλυτικά) με απλούς, να αφαιρέσεις τα δύο τελευταία γράμματα από κάθε όνομα και μετά να κάνεις τη σύγκριση - όλα αυτά γίνονται με συναρτήσεις, αλλά θέλει δουλίτσα

Δημοσ.

Εντάξει ρε παιδιά μη το κάνουμε και μεσανατολικό.

 

Ένα απλό function θέλει που να παίρνει ας πούμε τους Ν πρώτους χαρακτήρες από κάθε ένα από τα 3 πεδία, να τα ενώνει και να τα βάζει σε ένα άλλο κελί της γραμμής. Αυτό ακόμα και με formula γίνεται, ούτε καν VBA θε θέλει. Και μετά ένα ή περισσότερα find/replace για να γίνουν κεφαλαία άτονα, και μετά ένα έτοιμο sort από το excel και απο κει και πέρα στα βρίσκει τα διπλά και μόνο του, να μη πω ότι μπορεί η δουλειά να γίνει και με το μάτι. Ή ακόμαι και copy paste σε άλλο προγραμματάκι που βρίσκει διπλές γραμμές σε text input.

 

Για το πρόβλημα που έχει ο φίλος δε χρειάζονται 2 διδακτορικά, ας είμαστε και λίγο πρακτικοί.

Δημοσ.

Ευτυχώς τα ονόματα είναι όλα με κεφαλαία οπότε δεν θα έχω το πρόβλημα με τους τόνους.

Θα ακολουθήσω την ιδέα του defacer.

Στο excel με ένα Left(source_string,number_of_characters) θα πάρω τους 3 πρώτους χαρακτήρες από κάθε πεδίο, θα κάνω ένα concatenate αυτή την τριάδα και θα έχω ένα πεδίο όπου μπορώ να βρω τα διπλότυπα σε μια access.

Αν και υπάρχουν ονόματα με 2 χαρακτήρες π.χ. Ιώ ελπίζω να μην έχω πρόβλημα.

 

Ευχαριστώ για το χρόνο σας

Δημοσ.

Εντάξει ρε παιδιά μη το κάνουμε και μεσανατολικό.

[...]

Για το πρόβλημα που έχει ο φίλος δε χρειάζονται 2 διδακτορικά, ας είμαστε και λίγο πρακτικοί.

Νομίζω τον ίδιο τρόπο λύσης δώσαμε όλοι μας...

Δημοσ.

3 πρώτους χαρακτήρες...

 

 

Όνομα:

α) ΓΕΩΡΓΙΟΣ

 

β) ΓΕΩΡΓΙΑ

 

Επώνυμο:

Χατζη[...]όγλου

 

Χατζη[...]όγλου

 

 

4 χαρακτήρες

ΚΩΝΣΤΑΝΤΙΝΟΣ

 

ΚΩΝΣΤΑΝΤΙΝΑ

 

ή

 

ΑΚΗΣ

 

ΑΚΗ

 

 

Δεν είναι τόσο απλό όσο φαίνεται (θαρρώ).

Δημοσ.

3 πρώτους χαρακτήρες...

Δεν είναι τόσο απλό όσο φαίνεται (θαρρώ).

 

Ναι, αλλά είναι 3 χαρακτήρες από 3 διαφορετικές λέξεις (όνομα, επώνυμο, πατρώνυμο)

Δημοσ.

Ναι, αλλά είναι 3 χαρακτήρες από 3 διαφορετικές λέξεις (όνομα, επώνυμο, πατρώνυμο)

 

 

Για το όνομα και το επώνυμο σου έδωσα παραδείγματα. Τώρα για το πατρώνυμο, από το να είναι το ίδιο μπορεί να διαφέρει μετά τους 3ς πρώτους χαρακτήρες.

 

Π.χ.

 

ΓΕΩΡΓΙΑ ΧΑΤΖΗ[...]ΟΓΛΟΥ ΧΡΙΣΤΟΦΟΡΟΥ

ΓΕΩΡΓΙΟΣ ΧΑΤΖΗ[..]ΟΓΛΟΥ ΧΡΙΣΤΟΥ

 

Μπορεί η λύση που έχεις να είναι ΟΚ στο data corpus που έχεις. Δεν νομίζω όμως ότι είναι ασφαλής.

Δημοσ.

Φυσικά και δεν είναι ασφαλής για οποιοδήποτε ομάδα δεδομένων - επιπλέον (και από αυτά που κατάλαβα) ο τελικός έλεγχος για τις διπλές εγγραφές θα γίνει με το χέρι και όχι αυτόματα

Δημοσ.

Εννοείται πως άπαξ και βρω τις εγγραφές που ταιριάζουν τα 3 πρώτα στοιχεία

θα τυπώσω από την Access και τα πεδία Όνομα, Επώνυμο, Πατρώνυμο (Σε ρωτάει στον wizard διπλότυπων ποια έξτρα πεδία θες να εμφανιστούν)

και εκεί με το μάτι θα κρίνω τι πραγματικά είναι διπλή εγγραφή και τι όχι.

 

Δεν νομίζω πως μπορεί το σύστημα να μου δώσει 100% επιτυχία

οπότε καλύτερα να τα δω εγώ ο ίδιος...

Δημοσ.

Αφού μπορείς να έχεις τα δεδομένα στην 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

 

Παραμετροποίησέ το λίγο στις ανάγκες σου και θα σου βγάλει όλες τις εγγραφές που θέλεις.

Δημοσ.

Αφού μπορείς να έχεις τα δεδομένα στην 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

 

Παραμετροποίησέ το λίγο στις ανάγκες σου και θα σου βγάλει όλες τις εγγραφές που θέλεις.

 

Σωστός.

Ευχαριστώ !

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...