0

HTMLドキュメント、よくあるスペルミスのリスト、および各ケースの正しいスペルがあります。HTMLドキュメントは最大50ページになり、最大30Kのスペル修正エントリがあります。

このHTMLドキュメントのすべてのスペルミスを修正する効率的な方法は何ですか?
(注:関連するライブラリを知っている場合は、私の実装はPythonで行われます。)


私は2つの可能なアプローチを考えました:

  • スペルデータのハッシュテーブルを作成する
  • HTMLからテキストを解析する
  • テキストを空白でトークンに分割する
  • スペルハッシュテーブルのトークンが修正に置き換えられた場合
  • 更新されたテキストで新しいHTMLドキュメントを作成する

このアプローチは、存在する複数の単語のスペル修正では失敗します。以下は、複数の単語に対して機能する、一見効率の悪いアプローチですが、より単純です。

  • スペルデータを繰り返す
  • HTMLドキュメントで単語を検索する
  • 単語が存在する場合は修正に置き換えます
4

2 に答える 2

3

最初のアプローチが 2 番目のアプローチよりもはるかに高速であることは正しいです (さらに、ストレート ハッシュの代わりにTriesを調べることをお勧めします。30k ワードの場合、スペースの節約は非常に劇的になります)。

複数単語のケースを引き続き処理できるようにするには、前のトークンを追跡して、「prev cur」などの結合文字列のハッシュをチェックします。

または、複数単語の修正をハッシュから除外し、2 つのアプローチを組み合わせて、最初に 1 つの単語にハッシュを使用し、次に複数単語の組み合わせをスキャンする (またはその逆) こともできます。マルチワード修正の数が比較的少ない場合、これはまだ比較的高速である可能性があります。

単語トークンを引き出すのは、空白で分割するよりも注意が必要です。ハッシュにコンマが含まれる「インスタンス」が見つからなかったという理由だけで、エラーの修正に失敗したくはありません。

于 2009-12-24T08:39:35.723 に答える
2

有効な単語の辞書をトライとして保存することに基づいてスペル修正アルゴリズムをプログラムしたので、文字に基づいてトライを使用するというロブの提案に同意します。分枝限定法を使用することで、スペルミスのある単語の正しいスペルを提案することができました(レーベンシュタイン距離による)。さらに、トライは単なる大きな有限状態マシンであるため、一般的な接頭辞と接尾辞を追加するのはかなり簡単であり、「postnationalizationalism」のような「単語」を処理できます。

于 2009-12-25T18:37:56.847 に答える