DedSec Project

Ευρετήρια αναζήτησης, συνάφεια και επαλήθευση — DedSec Project

Ευρετήρια αναζήτησης, συνάφεια και επαλήθευση Μηχανές αναζήτησης, ανεστραμμένα ευρετήρια και κατάταξη Μια απλή αναζήτηση συγκρίνει το ερώτημα με κάθε κείμενο. Το ανεστραμμένο ευρετήριο…

Μηχανές αναζήτησης, ανεστραμμένα ευρετήρια και κατάταξη

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

Παράδειγμα

from collections import defaultdict
texts = ['python syntax error', 'rust compile error']
index = defaultdict(set)
for position, text in enumerate(texts):
    for word in text.casefold().split():
        index[word].add(position)
assert index['error'] == {0, 1}

Ασκήσεις

  1. Υλοποίησε αναζήτηση ακριβούς φράσης.
  2. Βάλε υψηλότερα αποτελέσματα τίτλου.
  3. Απόφυγε εμφάνιση μυστικών σε προεπισκόπηση.
  4. Μέτρησε χρόνο σάρωσης 1000 εγγράφων.

Αναπαραγώγιμο παράδειγμα ανεστραμμένου ευρετηρίου

Για τα τεχνητά κείμενα d1="cat dog", d2="dog fox" και d3="cat", αν χωρίσουμε τις λέξεις στα κενά, το ευρετήριο είναι cat → {d1,d3}, dog → {d1,d2} και fox → {d2}. Η ερώτηση cat AND dog επιστρέφει μόνο το d1, ενώ η ένωση επιστρέφει και τα τρία. Ο έλεγχος συμμετοχής σε αποτέλεσμα δεν είναι ίδιος με τη βαθμολόγηση συνάφειας: για την κατάταξη πρέπει να ορίσουμε κανόνα και ισοβαθμίες.

Ο έλεγχος για CAT δεν επιστρέφει αναγκαστικά τα ίδια με το cat, εκτός αν εφαρμόζουμε κοινή κανονικοποίηση τόσο στην αποθήκευση όσο και στην αναζήτηση. Φύλαξε το αρχικό κείμενο για την εμφάνιση και τη μετασχηματισμένη μορφή μόνο για ευρετηρίαση. Στα Ελληνικά έλεγξε λέξεις με και χωρίς τόνους· η παράλειψη τόνων είναι σχεδιαστική απόφαση, όχι αυτονόητη ιδιότητα του Unicode.

Σε ενημερώσεις αρχείων πρέπει να απομακρύνονται οι παλιές αντιστοιχίσεις. Άλλαξε το d2 από dog fox σε fox και επαλήθευσε ότι η αναζήτηση dog δεν επιστρέφει πλέον το d2. Διαχώρισε τις δοκιμές του tokenizer, του ευρετηρίου και της κατάταξης. Χρησιμοποίησε μόνο συνθετικά έγγραφα, χωρίς πραγματικό ιδιωτικό περιεχόμενο ή διαδικτυακή υπηρεσία.