Используйте Eclipse MAT (когда вы получаете исключения OutOfMemory в куче Java, а не в собственной куче).
Я думаю, что это можно сделать, используя spellchecker
вместе с N-grams
.
Для Trytoreconnectyou
мы сначала проверяем все 1 грамм (все слова из словаря) и находим наиболее близкое совпадение, которое довольно ужасно. Таким образом, мы пробуем 2 грамма (которые можно построить, удаляя пробелы из фраз длины 2), а затем 3 грамма и так далее. Когда мы пробуем 4 грамма, мы обнаруживаем, что есть фраза, которая находится на расстоянии 0 от нашего поискового запроса. Поскольку мы не можем добиться большего успеха, мы возвращаем этот ответ в качестве предложения.
Я знаю, что это очень неэффективно, но пост Питера Норвига здесь ясно показывает, что Google использует корректоры заклинаний для генерации своих предложений. Поскольку Google обладает огромными возможностями паралеллизации, они могут выполнить эту задачу очень быстро.
@Legend - рассмотрите возможность использования одного из вариантов алгоритма Soundex . У него есть некоторые известные недостатки, но он работает прилично хорошо в большинстве приложений, которые должны приближаться к словам с ошибками.
Редактировать (2011-03-16):
Я вдруг вспомнил еще один алгоритм, похожий на Soundex, с которым я столкнулся пару лет назад. В этой статье доктора Добба Лоуренс Филипс обсуждает усовершенствования своего алгоритма Metaphone, названного Double Metaphone.
Вы можете найти реализацию этого алгоритма на языке Python здесь , и больше реализаций на том же сайте здесь .
Опять же, эти алгоритмы не будут такими же, как те, что использует Google, но для слов на английском языке они должны быть вам очень близки. Вы также можете проверить страницу Википедии для Фонетические алгоритмы для списка других подобных алгоритмов.