2

これは、スタックオーバーフローに関する私の最初の質問です。簡単な背景ですが、これは学校のプロジェクトではなく、楽しみと練習と学習のためだけのものです。私はCでスペルチェッカーを作成しようとしています。私が抱えている問題は、スペルミスのある単語を置き換える可能性のある単語を考え出すことです。

また、私のコースでは、時間計算量やアルゴリズム開発などのより高いレベルのプログラミング概念に到達していないことも指摘しておく必要があります。自分が本当に求めているコンセプトには名前があるような気がするので、まだ聞いたことがないということです。

ここにある他の同様の投稿では、ほとんどの人がレーベンシュタイン距離を使用するか、基数木を横断することを提案しています。部分文字列を比較するだけで問題になるでしょうか?私が思いついた(非常に非効率的な)アルゴリズムは次のとおりです。

N最初の文字(ここで、)を辞書の単語と比較しN = length of the misspelled word - 1ます(システムファイルから動的に割り当てられた配列に読み込まれます)

Nスペルミスのある単語の文字と辞書の単語が一致する場合は、それを候補のリストに追加します。一致するものがこれ以上見つからない場合は、デクリメントしますN

10件の提案が見つかるまで続行するかN = 0

不格好でぎこちなく感じますが、それは私たちの教科書がこれに近づくことを示唆しているようなものです。木を横断し、効率と正確さのためにあらゆる種類の興味深いものを計算することに関するwikiの記事を読んだことがありますが、現時点ではそれらは頭に浮かびます。どんな助けでもありがたいです、そしてこれを読むために時間を割いてくれてありがとう。

4

1 に答える 1

3

最近のコンピューターは高速で、本当に高速です。説明したアルゴリズムを使用してこれをコーディングし、辞書を使用してマシン上でどの程度うまく機能するかを確認することは価値があります。それが許容できるほどうまく機能するなら、それなら素晴らしいです!それ以外の場合は、より適切なアルゴリズムを選択して最適化を試みることができます。

あなたが読んだすべての派手なアルゴリズムには、次の目標の1つまたは両方があります。

  • スペルチェックをスピードアップ
  • 修正のためのより良い提案を提供する

ただし、これは、パフォーマンスについて真剣に懸念している場合にのみ重要です。これを行うために独自のコードを作成することに何の問題もありません。それは素晴らしいことではないかもしれませんが、あなたはまだ理解していないアルゴリズムに飛び込んで実装する以上のことを学ぶでしょう。

于 2012-06-17T07:45:59.353 に答える