2012-06-17 3 views
2

это мой первый вопрос о переполнении стека. Какой-то быстрый фон, это не школьный проект, просто для удовольствия, практики и обучения. Я пытаюсь сделать проверку орфографии на C. Проблема, с которой я сталкиваюсь, - это придумать возможные слова, чтобы заменить слово с ошибкой.C проверка орфографии, строковые понятия, алгоритмы

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

В других подобных сообщениях здесь большинство людей предлагают использовать расстояние levenshtein или пересекать деревья патриции; было бы проблемой просто сравнить подстроки? (Очень неэффективно) алгоритм я придумал это:

сравнить первые N персонажей, где N = length of the misspelled word - 1, чтобы словарных слов (они будут считываться из системного файла в динамически распределяемой массив)

если N символов из слова с орфографической ошибкой и слова из словаря, добавьте его в список предложений; если не больше совпадений не найдено, уменьшаем N

продолжают до 10 предложений пока не будут найдены или N = 0

Он чувствует себя неуклюжим и неловким, но это своего рода, как наш учебник предполагает приближения к этому. Я читал статьи в вики на обходе деревьев и вычислял всевозможные интересные вещи для эффективности и точности, но сейчас они над моей головой. Любая помощь приветствуется, и спасибо, что нашли время, чтобы прочитать это.

+1

Вместо того, чтобы проверять слова один за другим из загруженного словаря в память, используйте хеш-таблицу, чтобы можно было эффективно уменьшить возможных кандидатов для проверки. –

ответ

3

Современные компьютеры бывают быстрыми, очень быстрыми. Было бы полезно, чтобы вы скомпилировали это с помощью алгоритма, который вы описываете, и посмотрите, насколько он работает на вашем компьютере с вашим словарем. Если это работает приемлемо хорошо, тогда здорово! В противном случае вы можете попытаться оптимизировать его, выбрав лучший алгоритм.

Всех фантазии алгоритмов вы читаете о имеете один или оба из следующих целей:

  • Ускорить проверки орфографии
  • предлагает лучшие предложения для исправления

Но это только важно, если вы серьезно обеспокоены работой. Нет ничего плохого в написании собственного кода для этого. Это может быть не очень хорошо, но вы узнаете намного больше, чем прыгаете и реализуете алгоритм, который вы еще не поняли.

Смежные вопросы