Есть ли словарь, который я могу скачать для Java? - PullRequest
4 голосов
/ 18 марта 2010

есть ли словарь, который я могу скачать для Java? я хочу иметь программу, которая принимает несколько случайных букв и проверяет, можно ли переставить их в реальное слово, сверяя их со словарем

Ответы [ 6 ]

8 голосов
/ 18 марта 2010

Есть ли словарь, который я могу скачать? для Java?

Другие уже ответили на это ... Может быть, вы не просто говорили о файле словаря, но о проверке орфографии?

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

Это другое. Как быстро вы хотите, чтобы это было? Сколько слов в словаре и сколько слов, до какой длины, вы хотите проверить?

Если вы хотите проверить орфографию (что не совсем понятно из вашего вопроса), Jazzy - это проверка орфографии для Java, которая имеет ссылки на много словарей. Это неплохо, но различные реализации ужасно неэффективны (это нормально для небольших словарей, но это удивительная трата, когда у вас есть несколько сотен тысяч слов).

Теперь, если вы просто хотите решить конкретную проблему, которую вы описываете, вы можете:

  • парсинг файла словаря и создание карты: (буквы в отсортированном порядке, набор подходящих слов)

  • затем для любого числа случайных букв: отсортируйте их, посмотрите, есть ли у вас запись на карте (если вы делаете запись, значение содержит все слова, которые вы можете сделать с этими буквами).

    абракадабра: (aaaaabbcdrr, (абракадабра))

    телега: (acehorrst, (телега))

    оркестр: (acehorrst, (телега, оркестр))

и т.д ...

Теперь вы берете, скажем, три случайные буквы и получаете «hsotrerca», вы сортируете их, чтобы получить «acehorrst», и, используя это в качестве ключа, вы получаете все (действительные) анаграммы ...

Это работает, потому что то, что вы описали, является особым (простым) случаем: все, что вам нужно, это отсортировать письма и затем использовать поиск по карте O (1).

Чтобы выполнить более сложные проверки правописания, где могут быть ошибки, вам нужно что-то, чтобы найти «кандидатов» (слова, которые могут быть правильными, но неверными) [как, скажем, использование soundex, метафона или двойного метафона algos], а затем используйте такие вещи, как алгоритм редактирования расстояния Левенштейна, чтобы проверить кандидатов по сравнению с известными хорошими словами (или гораздо более сложное дерево, созданное из расстояния редактирования Левенштейна, которое Google использует для «поиска по мере ввода»):

http://en.wikipedia.org/wiki/Levenshtein_distance

Как забавная заметка, оптимизированное словарное представление может хранить сотни и даже миллионы слов менее чем в 10 битах на слово (да, вы правильно прочитали: менее 10 бит на слово) и, тем не менее, обеспечивает очень быстрый поиск.

2 голосов
/ 18 марта 2010

Словари OpenOffice легко разбирать построчно.

Вы можете прочитать это в памяти (помните, что это много памяти):

List words = IOUtils.readLines(new FileInputStream("dicfile.txt")) (из commons-io )

Таким образом, вы получаете List всех слов.В качестве альтернативы вы можете использовать Line Iterator, если вы столкнулись с проблемами памяти.

2 голосов
/ 18 марта 2010

Словари обычно не зависят от языка программирования. Если вы попытаетесь гуглить без ключевого слова "java", вы можете получить лучшие результаты. Например. бесплатная загрузка словаря дает под каждым dicts.info .

1 голос
/ 18 марта 2010

Вот один из них:

http://java.sun.com/docs/books/tutorial/collections/interfaces/examples/dictionary.txt

Вы можете использовать стандартную обработку файлов Java, чтобы прочитать слово в каждой строке:

http://www.java -tips.org / Java-се-советы / java.io / как читаемый-файл-в-java.html

1 голос
/ 18 марта 2010
0 голосов
/ 18 марта 2010

Проверьте - http://sourceforge.net/projects/test-dictionary/, это может дать вам некоторую подсказку

Я не уверен, есть ли такие библиотеки, доступные для скачивания!Но я думаю, что вы определенно можете покопаться в sourceforge.net, чтобы узнать, есть ли какие-либо или как люди использовали словари - http://sourceforge.net/search/?type_of_search=soft&words=java+dictionary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...