Η δημιουργία λεξικού με δυαδικό δέντρο αναζήτησης και κατακερματισμού

ψήφοι
1

Είμαι έτοιμος να δημιουργήσει ένα «έξυπνο» λεξικό που θα μπορούσε να δημιουργήσει παρόμοιες λέξεις αν η λέξη από το χρήστη δεν υπάρχει στο λεξικό.

Το λεξικό ξεκινά με την ανάγνωση ενός αρχείου με τις λέξεις, η λέξη θα πρέπει να προστεθεί στο δυαδικό δέντρο και ένα πίνακα κατακερματισμού. Ο πίνακας κατακερματισμού χρησιμοποιείται για να καθοριστεί αν η λέξη ή παρόμοια λέξη στο λεξικό, ο πίνακας hash θα έχει μια Boolean αποτέλεσμα έτσι ώστε να μπορούμε γρήγορα δούμε αν το δυαδικό δένδρο αναζήτησης περιέχει τη λέξη. Ο πίνακας κατακερματισμού πρέπει να είναι περίπου δέκα φορές το μήκος του λεξικού μας, γιατί περιλαμβάνει επίσης παρόμοιες λέξεις στο πίνακα κατακερματισμού. Ως σχετικά νέος σε Java, θα ήθελα συμβουλές και προτάσεις για το πώς να κάνει μια συνάρτηση κατακερματισμού που θα ήταν ιδανικό για την περίπτωσή μου.

public String [] similarOne(String word) {

    char [] word_array = word.toCharArray();
    char [] tmp;

    String [] words = new String[word_array.length-1];

    for(int i = 0; i < word_array.length - 1; i++) {
        tmp = word_array.clone();
        words[i] = swap(i, i+1, tmp);
    }
    return words;
}

public String swap(int a, int b, char [] word) {
    char tmp = word[a];
    word[a] = word[b];
    word[b] = tmp;

    return new String(word);
}
Δημοσιεύθηκε 28/09/2010 στις 16:44
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
0

Google για 'metaphone java' και 'Soundex java'.

Θα μπορούσατε να δοκιμάσετε χρησιμοποιώντας τα αποτελέσματα μιας Metaphone κωδικοποίηση ως το κλειδί κατακερματισμού, για παράδειγμα.

Απαντήθηκε 28/09/2010 στις 17:24
πηγή χρήστη

ψήφοι
0

Προτείνω ότι θα πρέπει να χρησιμοποιήσετε ένα Trie ή Patricia-trie .Δεν ξέρω τι εννοείτε με παρόμοια words.But υποθέτω ότι είναι κάτι σαν το Google suggest.I έχουν γράψει ένα μικρό πρόγραμμα παρελθόν που κάνει auto-complete. έχει μια εξάρτηση με την Patricia-trie έτσι θα πρέπει να περιλαμβάνει it.You μπορεί να το χρησιμοποιήσει ως σημείο αναφοράς.

Απαντήθηκε 29/09/2010 στις 06:18
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more