Есть ли словарь, который я могу скачать?
для Java?
Другие уже ответили на это ... Может быть, вы не просто говорили о файле словаря, но о проверке орфографии?
Я хочу иметь программу, которая принимает
несколько случайных букв и видит, если они
может быть преобразован в реальное слово
сверяя их со словарем
Это другое. Как быстро вы хотите, чтобы это было? Сколько слов в словаре и сколько слов, до какой длины, вы хотите проверить?
Если вы хотите проверить орфографию (что не совсем понятно из вашего вопроса), Jazzy - это проверка орфографии для Java, которая имеет ссылки на много словарей. Это неплохо, но различные реализации ужасно неэффективны (это нормально для небольших словарей, но это удивительная трата, когда у вас есть несколько сотен тысяч слов).
Теперь, если вы просто хотите решить конкретную проблему, которую вы описываете, вы можете:
парсинг файла словаря и создание карты: (буквы в отсортированном порядке, набор подходящих слов)
затем для любого числа случайных букв: отсортируйте их, посмотрите, есть ли у вас запись на карте (если вы делаете запись, значение содержит все слова, которые вы можете сделать с этими буквами).
абракадабра: (aaaaabbcdrr, (абракадабра))
телега: (acehorrst, (телега))
оркестр: (acehorrst, (телега, оркестр))
и т.д ...
Теперь вы берете, скажем, три случайные буквы и получаете «hsotrerca», вы сортируете их, чтобы получить «acehorrst», и, используя это в качестве ключа, вы получаете все (действительные) анаграммы ...
Это работает, потому что то, что вы описали, является особым (простым) случаем: все, что вам нужно, это отсортировать письма и затем использовать поиск по карте O (1).
Чтобы выполнить более сложные проверки правописания, где могут быть ошибки, вам нужно что-то, чтобы найти «кандидатов» (слова, которые могут быть правильными, но неверными) [как, скажем, использование soundex, метафона или двойного метафона algos], а затем используйте такие вещи, как алгоритм редактирования расстояния Левенштейна, чтобы проверить кандидатов по сравнению с известными хорошими словами (или гораздо более сложное дерево, созданное из расстояния редактирования Левенштейна, которое Google использует для «поиска по мере ввода»):
http://en.wikipedia.org/wiki/Levenshtein_distance
Как забавная заметка, оптимизированное словарное представление может хранить сотни и даже миллионы слов менее чем в 10 битах на слово (да, вы правильно прочитали: менее 10 бит на слово) и, тем не менее, обеспечивает очень быстрый поиск.