Создание словаря с бинарным деревом поиска и хэшированием - PullRequest
1 голос
/ 28 сентября 2010

Я собираюсь создать «умный» словарь, который мог бы генерировать похожие слова, если слова пользователя нет в словаре.

Словарь начинается с чтения файла со словами, слово должно быть добавлено в двоичное дерево и хеш-таблицу. Хеш-таблица используется для определения, находится ли слово или подобное слово в словаре, хеш-таблица будет иметь логический эффект, поэтому мы можем быстро посмотреть, содержит ли слово двоичное дерево поиска. Хеш-таблица должна быть примерно в десять раз длиннее нашего словаря, потому что мы также включаем слова, аналогичные хеш-таблице. Будучи относительно новым для 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);
}

Ответы [ 2 ]

0 голосов
/ 29 сентября 2010

Я предлагаю вам использовать Trie или patricia-trie . Я не знаю, что вы подразумеваете под подобными словами. Но я предполагаю, что это что-то вроде GoogleПредлагаю. Ранее я написал небольшую программу , которая выполняет автозаполнение. Она зависит от patricia-trie, поэтому ее нужно будет включить. Вы можете использовать ее как справочную.

0 голосов
/ 28 сентября 2010

Google для 'java metaphone' и 'java soundex'.

Вы можете попробовать использовать результаты кодирования Metaphone в качестве хеш-ключа, например.

...